Thread (11 messages) 11 messages, 4 authors, 2013-08-22

Re: [PATCH v10 2/2] ASoC: fsl: Add S/PDIF machine driver

From: Stephen Warren <hidden>
Date: 2013-08-22 19:56:37
Also in: alsa-devel, linux-devicetree

On 08/22/2013 05:40 AM, Nicolin Chen wrote:
Hi Stephen,

On Wed, Aug 21, 2013 at 12:30:59PM -0600, Stephen Warren wrote:
quoted
I still don't think those two properties are correct.

Exactly what node will those phandles point at?

There definitely should not be a DT node for any "dummy CODEC",
irrespective of whether this binding calls the other node a "CODEC" or a
"dummy CODEC".

If these properties are to contain phandles, it would be acceptable for
the referenced node to be:

* A node representing the physical connector/jack on the board.

* A node representing some other IP block on the board, such as an HDMI
encoder/display-controller

I think those options are unlikely in general, so I think instead these
properties should just be Boolean indicating that "something" is
connector to the S/PDIF RX/TX, without specifying what that "something"
is. It doesn't matter what at least in the connector/jack case, although
perhaps it does in the HDMI encoder/display-controller?
Documentation/devicetree/bindings/sound/spdif-receiver.txt
If I understand correctly, this doc for the dummy codec should be invalid?
Yes, I'm not convinced that binding is a good idea; it describes
something that often doesn't actually exist in HW. (Sometimes there's a
real S/PDIF receiving device on board, but sometimes there's nothing
except a jack/connector).

It'd be useful if other DT binding maintainers could weigh in on this to
confirm/deny my thoughts.
But this patch, the spdif machine driver, is based on this codec driver,
pls check the following code:

164 +       codec_rx_np = of_parse_phandle(np, "spdif-receiver", 0);
165 +       if (codec_rx_np) {
169 +               data->dai[num_links].codec_of_node = codec_rx_np;
173 +       }

Accordingly, the binding I planned to add in DT:

27 +       spdif_rx_codec: spdif-receiver {
28 +               compatible = "linux,spdif-dir";
29 +       };
30 +
31 +       sound-spdif {
32 +               compatible = "fsl,imx-audio-spdif",
33 +                          "fsl,imx-sabreauto-spdif";
34 +               model = "imx-spdif";
35 +               spdif-controller = <&spdif>;
37 +               spdif-receiver = <&spdif_rx_codec>;
38 +       };

So if the DT can't allow me to include this codec node, how could I
handle it in the current baseline.
I would expect the machine driver's probe routine to create the dummy
S/PDIF receiver object itself, and register it by calling
snd_soc_register_codec(). That way, only the machine driver code need
know it (dummy CODEC) exists.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help