2018-07-02 06:30:44 +00:00
/* SPDX-License-Identifier: GPL-2.0
*
2016-12-02 05:27:30 +00:00
* simple_card_utils . h
2016-05-31 09:00:14 +00:00
*
* Copyright ( c ) 2016 Kuninori Morimoto < kuninori . morimoto . gx @ renesas . com >
*/
2018-07-02 06:30:44 +00:00
2016-12-02 05:27:30 +00:00
# ifndef __SIMPLE_CARD_UTILS_H
# define __SIMPLE_CARD_UTILS_H
2016-05-31 09:00:14 +00:00
# include <sound/soc.h>
2018-06-11 17:32:12 +09:00
# define asoc_simple_card_init_hp(card, sjack, prefix) \
asoc_simple_card_init_jack ( card , sjack , 1 , prefix )
# define asoc_simple_card_init_mic(card, sjack, prefix) \
asoc_simple_card_init_jack ( card , sjack , 0 , prefix )
2016-06-30 06:02:46 +00:00
struct asoc_simple_dai {
const char * name ;
unsigned int sysclk ;
2017-08-17 13:42:36 +02:00
int clk_direction ;
2016-06-30 06:02:46 +00:00
int slots ;
int slot_width ;
unsigned int tx_slot_mask ;
unsigned int rx_slot_mask ;
struct clk * clk ;
} ;
2017-06-15 00:24:09 +00:00
struct asoc_simple_card_data {
u32 convert_rate ;
u32 convert_channels ;
} ;
2018-06-11 17:32:12 +09:00
struct asoc_simple_jack {
struct snd_soc_jack jack ;
struct snd_soc_jack_pin pin ;
struct snd_soc_jack_gpio gpio ;
} ;
2016-05-31 09:00:14 +00:00
int asoc_simple_card_parse_daifmt ( struct device * dev ,
struct device_node * node ,
struct device_node * codec ,
char * prefix ,
unsigned int * retfmt ) ;
2016-08-23 10:51:22 +02:00
__printf ( 3 , 4 )
2016-07-11 23:57:14 +00:00
int asoc_simple_card_set_dailink_name ( struct device * dev ,
struct snd_soc_dai_link * dai_link ,
const char * fmt , . . . ) ;
2016-07-11 23:59:16 +00:00
int asoc_simple_card_parse_card_name ( struct snd_soc_card * card ,
char * prefix ) ;
2016-05-31 09:00:14 +00:00
2017-01-23 07:29:42 +00:00
# define asoc_simple_card_parse_clk_cpu(dev, node, dai_link, simple_dai) \
2017-06-05 04:28:45 +00:00
asoc_simple_card_parse_clk ( dev , node , dai_link - > cpu_of_node , simple_dai , \
2018-08-31 03:08:09 +00:00
dai_link - > cpu_dai_name , NULL )
2017-01-23 07:29:42 +00:00
# define asoc_simple_card_parse_clk_codec(dev, node, dai_link, simple_dai) \
2017-06-05 04:28:45 +00:00
asoc_simple_card_parse_clk ( dev , node , dai_link - > codec_of_node , simple_dai , \
2018-08-31 03:08:09 +00:00
dai_link - > codec_dai_name , dai_link - > codecs )
2017-01-23 07:29:42 +00:00
int asoc_simple_card_parse_clk ( struct device * dev ,
struct device_node * node ,
2016-08-08 05:59:56 +00:00
struct device_node * dai_of_node ,
2017-06-05 04:28:45 +00:00
struct asoc_simple_dai * simple_dai ,
2018-08-31 03:08:09 +00:00
const char * dai_name ,
struct snd_soc_dai_link_component * dlc ) ;
2017-06-09 00:43:18 +00:00
int asoc_simple_card_clk_enable ( struct asoc_simple_dai * dai ) ;
void asoc_simple_card_clk_disable ( struct asoc_simple_dai * dai ) ;
2016-08-08 05:59:56 +00:00
2016-08-08 06:01:43 +00:00
# define asoc_simple_card_parse_cpu(node, dai_link, \
list_name , cells_name , is_single_link ) \
2018-08-31 03:08:09 +00:00
asoc_simple_card_parse_dai ( node , NULL , \
& dai_link - > cpu_of_node , \
2016-08-08 06:01:43 +00:00
& dai_link - > cpu_dai_name , list_name , cells_name , is_single_link )
# define asoc_simple_card_parse_codec(node, dai_link, list_name, cells_name) \
2018-08-31 03:08:09 +00:00
asoc_simple_card_parse_dai ( node , dai_link - > codecs , \
& dai_link - > codec_of_node , \
& dai_link - > codec_dai_name , \
list_name , cells_name , NULL )
2016-08-08 06:01:43 +00:00
# define asoc_simple_card_parse_platform(node, dai_link, list_name, cells_name) \
2018-08-31 03:10:20 +00:00
asoc_simple_card_parse_dai ( node , dai_link - > platform , \
2018-08-31 03:08:09 +00:00
& dai_link - > platform_of_node , \
2016-08-08 06:01:43 +00:00
NULL , list_name , cells_name , NULL )
int asoc_simple_card_parse_dai ( struct device_node * node ,
2018-08-31 03:08:09 +00:00
struct snd_soc_dai_link_component * dlc ,
2016-08-08 06:01:43 +00:00
struct device_node * * endpoint_np ,
const char * * dai_name ,
const char * list_name ,
const char * cells_name ,
int * is_single_links ) ;
2017-04-20 01:35:18 +00:00
# define asoc_simple_card_parse_graph_cpu(ep, dai_link) \
2018-08-31 03:08:09 +00:00
asoc_simple_card_parse_graph_dai ( ep , NULL , \
& dai_link - > cpu_of_node , \
2017-04-20 01:35:18 +00:00
& dai_link - > cpu_dai_name )
# define asoc_simple_card_parse_graph_codec(ep, dai_link) \
2018-08-31 03:08:09 +00:00
asoc_simple_card_parse_graph_dai ( ep , dai_link - > codecs , \
& dai_link - > codec_of_node , \
2017-04-20 01:35:18 +00:00
& dai_link - > codec_dai_name )
int asoc_simple_card_parse_graph_dai ( struct device_node * ep ,
2018-08-31 03:08:09 +00:00
struct snd_soc_dai_link_component * dlc ,
2017-04-20 01:35:18 +00:00
struct device_node * * endpoint_np ,
const char * * dai_name ) ;
2017-06-14 00:34:35 +00:00
# define asoc_simple_card_of_parse_tdm(np, dai) \
snd_soc_of_parse_tdm_slot ( np , & ( dai ) - > tx_slot_mask , \
& ( dai ) - > rx_slot_mask , \
& ( dai ) - > slots , \
& ( dai ) - > slot_width ) ;
2016-08-09 05:48:30 +00:00
int asoc_simple_card_init_dai ( struct snd_soc_dai * dai ,
struct asoc_simple_dai * simple_dai ) ;
2016-08-09 05:49:41 +00:00
int asoc_simple_card_canonicalize_dailink ( struct snd_soc_dai_link * dai_link ) ;
2016-08-10 02:20:19 +00:00
void asoc_simple_card_canonicalize_cpu ( struct snd_soc_dai_link * dai_link ,
int is_single_links ) ;
2016-08-09 05:49:41 +00:00
2016-08-10 02:21:25 +00:00
int asoc_simple_card_clean_reference ( struct snd_soc_card * card ) ;
2017-06-15 00:24:09 +00:00
void asoc_simple_card_convert_fixup ( struct asoc_simple_card_data * data ,
struct snd_pcm_hw_params * params ) ;
2018-11-21 02:10:51 +00:00
void asoc_simple_card_parse_convert ( struct device * dev ,
struct device_node * np , char * prefix ,
2017-06-15 00:24:09 +00:00
struct asoc_simple_card_data * data ) ;
2017-06-15 00:25:02 +00:00
int asoc_simple_card_of_parse_routing ( struct snd_soc_card * card ,
2018-11-21 02:11:13 +00:00
char * prefix ) ;
2017-06-16 01:38:50 +00:00
int asoc_simple_card_of_parse_widgets ( struct snd_soc_card * card ,
char * prefix ) ;
2017-06-15 00:25:02 +00:00
2018-06-11 17:32:12 +09:00
int asoc_simple_card_init_jack ( struct snd_soc_card * card ,
struct asoc_simple_jack * sjack ,
int is_hp , char * prefix ) ;
2016-12-02 05:27:30 +00:00
# endif /* __SIMPLE_CARD_UTILS_H */