[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