[alsa-devel] How to structure CPU DAI
jonsmirl at gmail.com
jonsmirl at gmail.com
Mon Nov 19 03:09:23 CET 2012
Getting runtime from the substream gives me a pointer chain which lets
me identify the channel.
rtd->card->dev->of_node
On Sun, Nov 18, 2012 at 5:04 PM, jonsmirl at gmail.com <jonsmirl at gmail.com> wrote:
> The LPC3130 has two independent I2S channels but it is not two copies
> of the same hardware block. Instead it is a single hardware block
> implementing the two channels. Some setup registers contain setup bits
> for both channels.
>
> So I have one CPU DAI with two independent CODECs hung off from it.
>
> So in a function like hw_params() for the CPU DAI, how do I know which
> I2S channel I'm supposed to be using? At the point where I created the
> soc_card I know the right channel. But I can't use the card pointer in
> the CPU DAI, since there are two cards and only on CPU DAI. The card
> pointer points to the last one registered. Can I put the info into the
> substream?
>
> Or should I register two CPU DAIs from a single I2S device driver and
> give then two different names?
>
> A device tree like this describes the hardware..
>
> i2s at 16000000 {
> #address-cells = <2>;
> #size-cells = <0>;
> compatible = "nxp,lpc31xx-i2s";
> reg = <0x16000000 0x1000>;
> i2s0:i2s at 0 {
> interrupts = <13 15>;
> reg = <0x80 0x180>;
> /*receive-slave;*/ /* default is master */
> };
> i2s1:i2s at 1 {
> interrupts = <14 16>;
> reg = <0x100 0x200>;
> /*receive-slave;*/ /* default is master */
> };
> };
>
> sound at 1 {
> compatible = "ea,ea3131-uda1380";
> audio-codec = <&uda1380-0>;
> i2s-controller = <&i2s0>;
> };
>
> sound at 2 {
> compatible = "ea,ea3131-uda1380";
> audio-codec = <&uda1380-1>;
> i2s-controller = <&i2s1>;
> };
>
> --
> Jon Smirl
> jonsmirl at gmail.com
--
Jon Smirl
jonsmirl at gmail.com
More information about the Alsa-devel
mailing list