On 01/28/2013 07:14 PM, Kuninori Morimoto wrote: > > Hi Stephen > > Thank you for checking path > >>> +Required properties: >>> + >>> +- compatible : "simple-audio" >>> +- simple-audio,card-name : simple-audio card name >>> + >>> +- simple-audio,platform,controller : phandle for platform >> >> Rename that simple-audio,dma-controller perhaps? "platform" is a word >> specific to ASoC, and the bindings really should be generic across OSs. >> >> But I wonder why you'd even need the ASoC platform to be specified in >> DT; instead, the following seem better: >> >> a) Have the CPU DAI's driver register the platform itself. Tegra does this. >> >> b) Assume the ASoC "platform" device simply does DMA via a standard >> dmaengine driber, and instead refer to the DMA controller using DMA >> engine DT bindings. > > This is the feature of this "simple-audio" driver. > "simple-audio" produces board/SoC specific relationship between codec/cpu. > > For example, we are using FSI for cpu, and AK4642/WM8978/DA7210 for codec. > In our old style, we created fsi-ak4642, fsi-wm8978, fsi-da7210... > This means that new fsi-xxx driver is required whenever new boards were > created. > This simple-audio was created to avoid it
I still don't understand why the ASoC platform has to be exposed in device tree; it seems like something completely internal to the ASoC driver. Take a look at the Tegra ASoC DT bindings; the platform isn't in DT at all there. >>> +- simple-audio,platform,name : simple-audio platform >>> name >> >> Can you explain why you'd need the platform name in the DT? Doesn't the >> phandle always uniquely identify it? The example doesn't use this property. > > Ahh yes, this simple-audio supports both phandle and name matching for > compatibility. > example showed phandle matching only. I think the DT binding should only support phandle-based resolution. Name-based resolution would be quite odd for a device tree binding. >>> +- simple-audio,cpu,controller : phandle for CPU DAI >>> +- simple-audio,cpu,dai,name : simple-audio CPU DAI >>> name >> >> It'd be a bit more typical of device-tree to have a single property that >> defines both the controller and any properties of the controller at >> once, e.g. something like: >> >> simple-audio,cpu-interface = <&codec_phandle AK4648_I2S_ITF_A>; >> >> where we assume something like: >> >> #define AK4648_I2S_ITF_A 0 // Interface A's ID >> >> That would remove the need to put string names into the DT. > > Hmm... this "name" is required on ASoC matching... > Especially, "codec dai name" is must item. > > Should I modify ASoC itself ? When I was thinking about a more generic DT binding for audio, quite a while ago, I certainly was planning to have each CODEC expose some kind of "of_xlate" function that could prase the integer interface ID in device tree, and convert it to a string name for internal use by ASoC. >>> +simple-audio,xxx,dai,clock-gating >>> + "continuous" >>> + "gated" >> >> Don't you need to use the common clock bindings to define which clock to >> gate? Or, is the I2S/... node's binding supposed to provide that >> information? > > I guess it is dependent on SoC/board. > No ? OK, I guess if this is I2S bus clock rather than I2S module clock, then this is fine as-is. Not all I2S controllers can implement this though. _______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
