[alsa-devel] [PATCH 01/15] ASoC: soc-core: support snd_soc_dai_link_component for aux_dev

Jarkko Nikula jarkko.nikula at bitmer.com
Sat Aug 10 11:16:48 CEST 2019


Hi

On 8/8/19 8:52 AM, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> 
> To find aux_dev, ASoC is using .name, codec_name, codec_of_node.
> Here, .name is used to fallback in case of no codec.
> 
> But, we already have this kind of component finding method by
> snd_soc_dai_link_component and soc_find_component().
> We shouldn't have duplicated implementation to do same things.
> This patch adds snd_soc_dai_link_component support to finding aux_dev.
> 
> Now, no driver is using only .name.
> All drivers are using codec_name and/or codec_of_node.
> This means no driver is finding component from .name so far.
> (Actually almost all drivers are using .name as just "device name",
>  not for finding component...)
> 
> This patch
> 1) add snd_soc_dai_link_component support for aux_dev. legacy style will
>    be removed if all drivers are switched to new style.
> 2) try to find component via snd_soc_dai_link_component.
>    Then, it doesn't try to find via .name, because no driver is using
>    it so far.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> ---
>  include/sound/soc.h  |  7 +++++++
>  sound/soc/soc-core.c | 36 ++++++++++--------------------------
>  2 files changed, 17 insertions(+), 26 deletions(-)
> 
> diff --git a/include/sound/soc.h b/include/sound/soc.h
> index c92697e..9dad2bf 100644
> --- a/include/sound/soc.h
> +++ b/include/sound/soc.h
> @@ -941,6 +941,7 @@ struct snd_soc_dai_link {
>  #define COMP_CPU(_dai)			{ .dai_name = _dai, }
>  #define COMP_CODEC(_name, _dai)		{ .name = _name, .dai_name = _dai, }
>  #define COMP_PLATFORM(_name)		{ .name = _name }
> +#define COMP_AUX(_name)			{ .name = _name }
>  #define COMP_DUMMY()			{ .name = "snd-soc-dummy", .dai_name = "snd-soc-dummy-dai", }
>  
>  extern struct snd_soc_dai_link_component null_dailink_component[0];
> @@ -971,6 +972,12 @@ struct snd_soc_aux_dev {
>  	const char *codec_name;
>  	struct device_node *codec_of_node;
>  
> +	/*
> +	 * name, codec_name, codec_of_node will be replaced
> +	 * into dlc. don't use both in the same time
> +	 */
> +	struct snd_soc_dai_link_component dlc;
> +
>  	/* codec/machine specific init - e.g. add machine controls */
>  	int (*init)(struct snd_soc_component *component);
>  };
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index e0d427a..ecaea88 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1531,38 +1531,22 @@ static int soc_bind_aux_dev(struct snd_soc_card *card, int num)
>  {
>  	struct snd_soc_aux_dev *aux_dev = &card->aux_dev[num];
>  	struct snd_soc_component *component;
> -	struct snd_soc_dai_link_component dlc;
>  
> -	if (aux_dev->codec_of_node || aux_dev->codec_name) {
> -		/* codecs, usually analog devices */
> -		dlc.name = aux_dev->codec_name;
> -		dlc.of_node = aux_dev->codec_of_node;
> -		component = soc_find_component(&dlc);
> -		if (!component) {
> -			if (dlc.of_node)
> -				dlc.name = of_node_full_name(dlc.of_node);
> -			goto err_defer;
> -		}
> -	} else if (aux_dev->name) {
> -		/* generic components */
> -		dlc.name = aux_dev->name;
> -		dlc.of_node = NULL;
> -		component = soc_find_component(&dlc);
> -		if (!component)
> -			goto err_defer;
> -	} else {
> -		dev_err(card->dev, "ASoC: Invalid auxiliary device\n");
> -		return -EINVAL;
> -	}
> +	/* remove me */
> +	if (aux_dev->codec_name)
> +		aux_dev->dlc.name = aux_dev->codec_name;
> +	if (aux_dev->codec_of_node)
> +		aux_dev->dlc.of_node = aux_dev->codec_of_node;

Bike-shedding: maybe comment here should say legacy style binding etc? I
know these lines are removed by patch 13/15 but here yet comment is not
valid :-)

-- 
Jarkko


More information about the Alsa-devel mailing list