All of lore.kernel.org
 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 2/3] ASoC: add snd_soc_of_get_port_dai_name()
Date: Wed, 13 Feb 2013 21:37:47 -0700	[thread overview]
Message-ID: <511C6A1B.9000507@wwwdotorg.org> (raw)
In-Reply-To: <87obfnofsx.wl%kuninori.morimoto.gx@renesas.com>

On 02/13/2013 06:16 PM, Kuninori Morimoto wrote:
> 
> Hi Stephen
> 
> Thank you for your explain.
> I think I could understand, but not 100%.
> 
>> Well, any driver that could be used with it will need to implement the
>> .of_xlate() callback. The simple-audio code would still be 100%
>> independent from any CPU or CODEC, since of_xlate would be a standard
>> interface/API that any CPU or CODEC driver could implement, and any ASoC
>> machine driver could call.
> (snip)
>> Yes, .of_xlate() wouldn't have to be implemented by the WM8903 CODEC
>> driver for the tegra-wm8903 machine driver to use the WM8903 CODEC.
>> However, if it /was/ implemented, it wouldn't stop tegra-wm8903 from
>> working. And later, it may help unify all the simple Tegra machine
>> drivers into one, since they could also become CODEC-independent, and
>> hence become unified (or at least mostly unified) code.
> 
> I guess, this .of_xlate should has "public" interface for all drivers,
> not simple-card special.

Yes exactly. And this means that it always returns a particular type of
object, not something different depending on who calls it; this is
relevant to the discussion below.

> Now, simple-card needs "dai name" from struct of_phandle_args.

Yes.

> This .of_xlate can be used from other driver if there is such kind of driver.
> Now, as example, I assumed this "other driver" needs something other data pointer from .of_xlate here.

Well, .of_xlate is /defined/ as taking the of_phandle_args and returning
the DAI name that the of_phandle_args represents. If there's ever a need
to translate some of_phandle_args to something else, that should be a
different function.

To that end, perhaps calling the function .of_xlate_dai_name might be
more future-proof; if we ever needed to translate say a CODEC widget
name, we could add a separate .of_xlate_widget_name function to do that
later, with zero effect on the .of_xlate_dai_name function.

> Then can .of_xlate has *void pointer for return ?

I think it would always return a string; the function parameter would be
"char **dai_name".

> In my check, the parameter of .of_xlate in gpio_chip and pmw has "driver specific" parameter.

It shouldn't. A GPIO driver's .of_xlate should /always/ take an
of_phandle_args, and translate it to a Linux (or perhaps chip-relative)
GPIO number, plus Linux GPIO flags. There should be nothing
driver-specific about the data it returns. The format of the device tree
cells that represent that data can be driver- (really, DT binding-)
specific; the whole point of the .of_xlate function is to translate that
binding-specific format into some standard internal Linux format.

> My pseudo code now is below.
> But is this correct ??
> 
> simple-card  OF has <&device port>  : of_phandle_args will be used as "port" spec
> other driver OF has <xxxx yyy zzz>  : of_phandle_args will be used as "something" spec
> 
> -- asoc --
> struct snd_soc_dai_driver {
>        ...
>        int (*of_xlate)(struct snd_soc_dai_driver    *driver,
>                        const struct of_phandle_args *spec,  // driver specific spec
>                        void                         *data); // for return data

As I mentioned above, that last parameter should be "char **dai_name",
and the function name probably of_xlate_dai_name.

>        ...
> }
> 
> -- MULTI .of_xlate support codec driver ---
> 
> #ifdef CONFIG_ASOC_SIMPLE_AUDIO_OF

No need to the ifdef; just provide a single definition which does one thing.

> int codec_of_xlate(struct snd_soc_dai_driver    *driver,
>                    const struct of_phandle_args *portspec,
>                    void                         *data);
> {
>         /*
>          * for simple-card which needs "dai name"
>          *
>          * of_phandle_args is used as "port" spec
>          */
>         *data = port_to_dai_name(portspec);

Yes, that's about right. Given how simple the implementation of
port_to_dai_name() is, I would simply write the code directly in the
implementation of of_xlate(). I assume you were writing pseudo-code
simply to avoid spelling out the implementation though.

>         return 0;
> }
> #elif  CONFIG_OTHER_DIRVER_IT_NEEDS_xxx_POINTER_OF
> int codec_of_xlate(struct snd_soc_dai_driver    *driver,
>                    const struct of_phandle_args *something_spec,
>                    void                         *data);
> {
>         /*
>          * for "other" driver which needs something pointer
>          *
>          * of_phandle_args is used as "something" spec
>          */
>         *data = something_necessary_pointer(something_spec);
>         return 0;
> }
> #else
> #define codec_of_xlate() NULL
> #endif
> 
> struct snd_soc_dai_driver  codec_driver = {
>        ...
>        .of_xlate = codec_of_xlate,
>        ...
> }

  reply	other threads:[~2013-02-14  4:37 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-26  6:51 [PATCH 0/5] ASoC: add simple-card DT support Kuninori Morimoto
2012-12-26  6:52 ` [PATCH 1/5] ASoC: add snd_soc_of_parse_daifmt() Kuninori Morimoto
2012-12-26  6:52 ` [PATCH 2/5] ASoC: simple-card: use struct device pointer for dev_xxx() Kuninori Morimoto
2012-12-27 16:51   ` Mark Brown
2012-12-26  6:52 ` [PATCH 3/5] ASoC: simple-card: add asoc_simple_dai_set for initializing Kuninori Morimoto
2012-12-26  6:52 ` [PATCH 4/5] ASoC: simple-card: remove pointless struct asoc_simple_dai_init_info Kuninori Morimoto
2012-12-26  6:53 ` [PATCH 5/5] ASoC: simple-card: add Device Tree support Kuninori Morimoto
2013-01-04 17:49   ` Stephen Warren
2013-01-04 19:37     ` Mark Brown
2013-01-08  0:13       ` Kuninori Morimoto
2013-01-15  2:34       ` [RFC][PATCH 0/2 v2] " 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  5:02                             ` [PATCH 0/2] ASoC: fixup SND_SOC_DAIFMT_GATED/CONT Kuninori Morimoto
2013-01-30  5:03                               ` [PATCH 1/2] ASoC: SND_SOC_DAIFMT_GATED become 0 as default settings Kuninori Morimoto
2013-01-30  5:03                               ` [PATCH 2/2] ASoC: clock gating is decided by bool on snd_soc_of_parse_daifmt() Kuninori Morimoto
2013-01-30 16:39                                 ` Stephen Warren
2013-01-30  8:42                               ` [PATCH 0/2] ASoC: fixup SND_SOC_DAIFMT_GATED/CONT Mark Brown
2013-01-30  9:09                             ` [RFC][PATCH 2/2 v3] ASoC: simple-card: add Device Tree support 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 [this message]
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
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=511C6A1B.9000507@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.