Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1/*
 2 * simple_card_utils.h
 3 *
 4 * Copyright (c) 2016 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
 5 *
 6 * This program is free software; you can redistribute it and/or modify
 7 * it under the terms of the GNU General Public License version 2 as
 8 * published by the Free Software Foundation.
 9 */
10#ifndef __SIMPLE_CARD_UTILS_H
11#define __SIMPLE_CARD_UTILS_H
12
13#include <sound/soc.h>
14
15struct asoc_simple_dai {
16	const char *name;
17	unsigned int sysclk;
18	int slots;
19	int slot_width;
20	unsigned int tx_slot_mask;
21	unsigned int rx_slot_mask;
22	struct clk *clk;
23};
24
25int asoc_simple_card_parse_daifmt(struct device *dev,
26				  struct device_node *node,
27				  struct device_node *codec,
28				  char *prefix,
29				  unsigned int *retfmt);
30__printf(3, 4)
31int asoc_simple_card_set_dailink_name(struct device *dev,
32				      struct snd_soc_dai_link *dai_link,
33				      const char *fmt, ...);
34int asoc_simple_card_parse_card_name(struct snd_soc_card *card,
35				     char *prefix);
36
37#define asoc_simple_card_parse_clk_cpu(node, dai_link, simple_dai)		\
38	asoc_simple_card_parse_clk(node, dai_link->cpu_of_node, simple_dai)
39#define asoc_simple_card_parse_clk_codec(node, dai_link, simple_dai)		\
40	asoc_simple_card_parse_clk(node, dai_link->codec_of_node, simple_dai)
41int asoc_simple_card_parse_clk(struct device_node *node,
42			       struct device_node *dai_of_node,
43			       struct asoc_simple_dai *simple_dai);
44
45#define asoc_simple_card_parse_cpu(node, dai_link,				\
46				   list_name, cells_name, is_single_link)	\
47	asoc_simple_card_parse_dai(node, &dai_link->cpu_of_node,		\
48		&dai_link->cpu_dai_name, list_name, cells_name, is_single_link)
49#define asoc_simple_card_parse_codec(node, dai_link, list_name, cells_name)	\
50	asoc_simple_card_parse_dai(node, &dai_link->codec_of_node,		\
51		&dai_link->codec_dai_name, list_name, cells_name, NULL)
52#define asoc_simple_card_parse_platform(node, dai_link, list_name, cells_name)	\
53	asoc_simple_card_parse_dai(node, &dai_link->platform_of_node,		\
54		NULL, list_name, cells_name, NULL)
55int asoc_simple_card_parse_dai(struct device_node *node,
56				  struct device_node **endpoint_np,
57				  const char **dai_name,
58				  const char *list_name,
59				  const char *cells_name,
60				  int *is_single_links);
61
62int asoc_simple_card_init_dai(struct snd_soc_dai *dai,
63			      struct asoc_simple_dai *simple_dai);
64
65int asoc_simple_card_canonicalize_dailink(struct snd_soc_dai_link *dai_link);
66void asoc_simple_card_canonicalize_cpu(struct snd_soc_dai_link *dai_link,
67				      int is_single_links);
68
69int asoc_simple_card_clean_reference(struct snd_soc_card *card);
70
71#endif /* __SIMPLE_CARD_UTILS_H */