[PATCH 1/4 v6] ASoC: add .of_xlate_dai_name callback on struct snd_soc_dai_driver
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Wed Feb 20 11:59:59 EST 2013
Hi Stephen
> >> +const char *snd_soc_of_get_port_dai_name(struct device_node *of_node,
> >> + const char *prop)
> >> +{
> >> + struct snd_soc_dai *dai;
> >> + struct of_phandle_args args;
> >> + const char *name;
> >> + int ret;
> >> +
> >> + ret = of_parse_phandle_with_args(of_node, prop,
> >> + "#sound-dai-cells", 0, &args);
> >> + if (ret)
> >> + return NULL;
> >> + of_node_put(args.np);
> >> +
> >> + list_for_each_entry(dai, &dai_list, list) {
> >
> > I think this should iterate over the list of CODEC drivers that are
> > registered, and then ask the driver to translate from the args to the
> > DAI name. Here, you're iterating over the list of registered DAIs, which
> > is something entirely different.
>
> Ah. I guess here is the issue:
>
> For CODECs, ASoC actually knows about a CODEC object, so you can imagine
> asking the CODEC object to translate from some a DT DAI specifier to a
> DAI name, and then look up the DAI using the combination of CODEC plus
> DAI name.
>
> However, the CPU DAIs, there is no object that contains the DAIs; only
> the DAIs exist. Thus, there's nothing to ask "which of your DAIs does
> this DT DAI specifier correspond to?".
>
> Now presumably there is a platform device for the FSI device, just like
> there's a platform device for the AK4642 CODEC. Can we create an ASoC
> "CPU" device for the FSI device too, to act as the DAI container? Or can
> we alter this patch series to query the platform device rather than some
> ASoC device in order to do the DT DAI specifier to DAI name translation?
>
> As an aside, I now recall this lack of symmetry from when I was working
> on enhancing the Tegra30 ASoC driver to support DPCM and similar; I
> ended up pretending that the CPU I2S interface was actually a CODEC with
> 1 DAI in order to model the CPU DAIs and real CODEC DAIs in a more
> similar fashion.
Thank you for understanding my last resort :)
I don't want to create new feature (= snd_soc_register_cpu)
on ASoC only for simple-card.
But now, simple-card is assuming CPU device and Platform device is same one.
If my understanding was correct,
struct snd_soc_platform_driver
struct snd_soc_codec_driver
will have new ".of_xlate_dai_name".
Best regards
---
Kuninori Morimoto
More information about the devicetree-discuss
mailing list