devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Linux-ALSA <alsa-devel@alsa-project.org>,
	devicetree-discuss@lists.ozlabs.org,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Liam Girdwood <lgirdwood@gmail.com>, Simon <horms@verge.net.au>,
	Kuninori Morimoto <kuninori.morimoto.gx@gmail.com>
Subject: Re: [PATCH 1/4 v6] ASoC: add .of_xlate_dai_name callback on struct snd_soc_dai_driver
Date: Wed, 20 Feb 2013 11:13:27 -0700	[thread overview]
Message-ID: <51251247.7060704@wwwdotorg.org> (raw)
In-Reply-To: <87mwuz94vo.wl%kuninori.morimoto.gx@renesas.com>

On 02/19/2013 05:59 PM, Kuninori Morimoto wrote:
> 
> 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

I don't think a platform device would want an of_xlate_dai_name
function; a platform device is not what provides the DAI and hence it
shouldn't be involved in translating a DT DAI specifier into a DAI name.

> struct snd_soc_codec_driver
> will have new ".of_xlate_dai_name".

Yes, putting the function into the CODEC driver makes sense.

I guess that snd_soc_register_dai() and snd_soc_register_dais() already
are the equivalent of snd_soc_register_cpu(); they are already passed
the struct device that implements the DAIs, and hence if you pass that
struct back to the DAI driver's of_xlate_dai_name function, it should
have enough information to do the mapping: the dev contains the platform
data the DAI driver can use to perform the mapping.

I guess the algorithm should be:

* Find a CODEC device that was instantiated from the DT node referenced
by the phandle.

* If found, ask the CODEC to translate, and use the result. This
function would be passed the CODEC pointer and phandle args.

* Find any DAI, that is not part of a CODEC, that was instantiated from
the DT node referenced by the phandle.

* If found, ask the driver of the DAI to translate. This function would
probably have to be passed the DT node as well as the first DAI you
found, plus the phandle args.

* If nothing found above, fail.

  reply	other threads:[~2013-02-20 18:13 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87zk11487a.wl%kuninori.morimoto.gx@renesas.com>
     [not found] ` <87sj6t484z.wl%kuninori.morimoto.gx@renesas.com>
     [not found]   ` <50E71618.8090302@wwwdotorg.org>
     [not found]     ` <20130104193712.GN4627@opensource.wolfsonmicro.com>
2013-01-15  2:34       ` [RFC][PATCH 0/2 v2] ASoC: simple-card: add Device Tree support Kuninori Morimoto
2013-01-15  2:36         ` [RFC][PATCH 1/2] ASoC: add snd_soc_of_parse_daifmt() for DeviceTree Kuninori Morimoto
     [not found]           ` <87wqvfyxym.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-01-27  3:42             ` Mark Brown
2013-01-29  3:25               ` Kuninori Morimoto
2013-01-28 12:57             ` [alsa-devel] " Bard Shen
2013-01-15  2:40         ` [RFC][PATCH 2/2 v2] ASoC: simple-card: add Device Tree support Kuninori Morimoto
     [not found]           ` <87vcazyxr1.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-01-27  3:59             ` Mark Brown
2013-01-29  1:31               ` Kuninori Morimoto
     [not found]                 ` <87vcag3hcj.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-01-29  1:48                   ` Mark Brown
2013-01-29  2:17                     ` Kuninori Morimoto
2013-01-29 10:00                       ` Kuninori Morimoto
     [not found]                         ` <87obg8z4u4.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-01-29 16:57                           ` Stephen Warren
2013-01-30  9:09                             ` [RFC][PATCH 2/2 v3] " Kuninori Morimoto
2013-01-30 20:14                               ` Stephen Warren
2013-01-31  0:49                                 ` Kuninori Morimoto
     [not found]                                   ` <877gmuqir2.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-01-31 17:15                                     ` Stephen Warren
     [not found]                                       ` <510AA6CB.3050809-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-31 17:20                                         ` Mark Brown
2013-01-31  1:35                                 ` Mark Brown
     [not found]                                   ` <20130131013500.GA4759-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2013-01-31 17:09                                     ` Stephen Warren
     [not found]                                       ` <510AA551.30400-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-31 17:11                                         ` Mark Brown
     [not found]                                           ` <20130131171158.GA15376-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E@public.gmane.org>
2013-01-31 17:17                                             ` Stephen Warren
     [not found]                                               ` <510AA720.9000904-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-31 17:21                                                 ` Mark Brown
2013-02-01  1:54                                                   ` Kuninori Morimoto
2013-02-04 22:23                                                     ` Stephen Warren
2013-02-05 15:23                                                       ` Mark Brown
2013-02-01  1:05                                 ` Kuninori Morimoto
2013-02-01  5:19                                   ` [RFC][PATCH 1/2] ASoC: codec_dai_name become option Kuninori Morimoto, Kuninori Morimoto
     [not found]                                     ` <87lib8d31v.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-04 22:26                                       ` Stephen Warren
     [not found]                                         ` <511035A1.6060402-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-05  0:30                                           ` Kuninori Morimoto
2013-02-01  5:20                                   ` [RFC][PATCH 2/2 v4] ASoC: simple-card: add Device Tree support Kuninori Morimoto, Kuninori Morimoto
     [not found]                                   ` <87halw7sij.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-04 22:22                                     ` [RFC][PATCH 2/2 v3] " Stephen Warren
2013-02-05  0:31                                       ` Kuninori Morimoto
     [not found]                                       ` <5110349D.3050308-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-05 10:09                                         ` [RFC][PATCH 0/3 v4] " Kuninori Morimoto
     [not found]                                           ` <87ehgvrs1h.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-05 10:11                                             ` [PATCH 1/3] ASoC: use list_add_tail() instead of list_add() for platform/codec/dai list Kuninori Morimoto
     [not found]                                               ` <87d2wfrryg.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-11 21:26                                                 ` Stephen Warren
2013-02-05 10:11                                             ` [PATCH 2/3] ASoC: add snd_soc_of_get_port_dai_name() Kuninori Morimoto
     [not found]                                               ` <87bobzrry6.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-11 21:34                                                 ` Stephen Warren
2013-02-12  5:37                                                   ` Kuninori Morimoto
     [not found]                                                     ` <87bobqf5yq.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-13 23:33                                                       ` Stephen Warren
     [not found]                                                         ` <511C22E2.60701-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-14  1:16                                                           ` Kuninori Morimoto
2013-02-14  4:37                                                             ` Stephen Warren
2013-02-14  5:14                                                               ` Kuninori Morimoto
     [not found]                                                                 ` <874nhfv5mb.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-14  9:20                                                                   ` [PATCH 0/4 v6] " Kuninori Morimoto
2013-02-14  9:21                                                                     ` [PATCH 1/4 v6] ASoC: add .of_xlate_dai_name callback on struct snd_soc_dai_driver Kuninori Morimoto
2013-02-18  1:45                                                                       ` Kuninori Morimoto
2013-02-19 15:50                                                                       ` Lars-Peter Clausen
2013-02-20  0:50                                                                         ` Kuninori Morimoto
     [not found]                                                                     ` <8738wzuu9g.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-14  9:22                                                                       ` [PATCH 2/4 v6] ASoC: ak4642: enable .of_xlate_dai_name " Kuninori Morimoto
2013-02-14  9:22                                                                       ` [PATCH 3/4 v6] ASoC: fsi: " Kuninori Morimoto
2013-02-14  9:24                                                                       ` [PATCH 4/4 v6] ASoC: simple-card: add Device Tree support Kuninori Morimoto
2013-02-19 15:57                                                                         ` Lars-Peter Clausen
2013-02-20  0:48                                                                           ` Kuninori Morimoto
     [not found]                                                                             ` <87r4kb95f3.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-20 12:17                                                                               ` [alsa-devel] " Lars-Peter Clausen
     [not found]                                                                                 ` <5124BEF5.4040703-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2013-02-20 18:02                                                                                   ` Stephen Warren
2013-02-22  2:41                                                                                     ` Kuninori Morimoto
     [not found]                                                                     ` <871ucjuu7g.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                       ` <871ucjuu7g.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-19 20:53                                                                         ` [PATCH 1/4 v6] ASoC: add .of_xlate_dai_name callback on struct snd_soc_dai_driver Stephen Warren
     [not found]                                                                           ` <5123E664.7090107-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-19 21:06                                                                             ` Stephen Warren
     [not found]                                                                               ` <5123E972.40307-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-20  0:59                                                                                 ` Kuninori Morimoto
2013-02-20 18:13                                                                                   ` Stephen Warren [this message]
2013-02-20  0:52                                                                             ` Kuninori Morimoto
     [not found]                                                                     ` <87y5ertfl7.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                       ` <87y5ertfl7.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-19 21:00                                                                         ` [PATCH 3/4 v6] ASoC: fsi: enable .of_xlate_dai_name " Stephen Warren
2013-02-20  1:04                                                                           ` Kuninori Morimoto
2013-02-20 12:03                                                                             ` Lars-Peter Clausen
2013-02-25  8:49                                                                     ` [PATCH 0/5 v7][RFC] ASoC: simple-card DT support Kuninori Morimoto
     [not found]                                                                       ` <87a9qsg4lp.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-25  8:51                                                                         ` [PATCH 1/5 v7][RFC] ASoC: add snd_soc_register_cpu() Kuninori Morimoto
2013-02-27 22:45                                                                           ` Stephen Warren
2013-02-25  8:53                                                                         ` [PATCH 2/5 v7][RFC] ASoC: add .of_xlate_dai_name on snd_soc_cpu_cpu/codec_driver Kuninori Morimoto
2013-02-25  8:56                                                                         ` [PATCH 3/5 v7][RFC] ASoC: simple-card: add Device Tree support Kuninori Morimoto
2013-02-27 23:17                                                                           ` Stephen Warren
2013-02-28  0:53                                                                             ` Kuninori Morimoto
2013-02-25  8:57                                                                         ` [PATCH 4/5 v7][RFC] ASoC: ak4642: add .of_xlate_dai_name support Kuninori Morimoto
2013-02-25  8:57                                                                         ` [PATCH 5/5 v7][RFC] ASoC: fsi: " Kuninori Morimoto
2013-02-27 23:28                                                                           ` Stephen Warren
     [not found]                                                                       ` <877glwg4fb.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                         ` <877glwg4fb.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-27 22:56                                                                           ` [PATCH 2/5 v7][RFC] ASoC: add .of_xlate_dai_name on snd_soc_cpu_cpu/codec_driver Stephen Warren
     [not found]                                                                       ` <874nh0g49j.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                         ` <874nh0g49j.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-27 23:27                                                                           ` [PATCH 4/5 v7][RFC] ASoC: ak4642: add .of_xlate_dai_name support Stephen Warren
     [not found]                                                                       ` <512E8C99.2040708-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-28  0:42                                                                         ` [PATCH 1/5 v7][RFC] ASoC: add snd_soc_register_cpu() Kuninori Morimoto
2013-03-01  9:44                                                                         ` Mark Brown
     [not found]                                                                       ` <87mwuptgju.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                         ` <87mwuptgju.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-28 19:14                                                                           ` Stephen Warren
2013-03-01 20:50                                                                             ` Lars-Peter Clausen
     [not found]                                                                               ` <1362174130.4439.61.camel@loki>
2013-03-02  3:25                                                                                 ` Mark Brown
     [not found]                                                                                   ` <1362426516.4448.68.camel@loki>
2013-03-05  3:05                                                                                     ` Mark Brown
     [not found]                                                                       ` <87lia9tg1r.wl%kuninori.morimoto.gx@renes as.com>
     [not found]                                                                         ` <87lia9tg1r.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-28 19:16                                                                           ` [PATCH 3/5 v7][RFC] ASoC: simple-card: add Device Tree support Stephen Warren
2013-07-11 14:57                                                                       ` [PATCH 0/5 v7][RFC] ASoC: simple-card DT support Daniel Mack
2013-07-12  0:04                                                                         ` Kuninori Morimoto
2013-02-05 10:12                                             ` [PATCH 3/3 v4] ASoC: simple-card: add Device Tree support Kuninori Morimoto
     [not found]                                               ` <87a9rjrrwt.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-07  0:55                                                 ` [PATCH 3/3 v5] " Kuninori Morimoto
     [not found]                                                   ` <87zjzhymbs.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-11 21:40                                                     ` Stephen Warren
2013-02-12  4:48                                                       ` Kuninori Morimoto
     [not found]                                                         ` <87d2w6f88p.wl%kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
2013-02-13 23:30                                                           ` Stephen Warren
     [not found]                                                       ` <51196541.8010207-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-02-13  1:13                                                         ` Kuninori Morimoto
2013-02-13 23:36                                                           ` Stephen Warren
2013-02-06  8:44                                             ` [RFC][PATCH 0/3 v4] " Kuninori Morimoto
2013-01-28 21:11             ` [RFC][PATCH 2/2 v2] " Stephen Warren
     [not found]               ` <5106E98A.6070103-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-29  1:45                 ` Mark Brown
2013-01-29  2:14               ` Kuninori Morimoto
2013-01-29 16:53                 ` Stephen Warren
2013-01-30  1:09                   ` Kuninori Morimoto
2013-01-25  1:03         ` [RFC][PATCH 0/2 " Kuninori Morimoto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51251247.7060704@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=horms@verge.net.au \
    --cc=kuninori.morimoto.gx@gmail.com \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=lgirdwood@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).