Hi On 8/8/19 8:52 AM, Kuninori Morimoto wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > > 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@xxxxxxxxxxx> > --- > 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 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel