[alsa-devel] Multiple codecs on one sound card for multi-channel sound card

Caleb Crome caleb at crome.org
Wed Sep 9 03:02:27 CEST 2015


Hi all,
   What's the current best practices to specify multiple codecs on one
sound card, with all codecs sharing a single TDM bus?

I have a card with up to 32 TLV320AIC33 codecs on it.  For the moment, we
can limit the discussion to only 16 codecs, so we don't have to get extra
serializers involved...

I currently have something like this in my am335x-boneblack.dts file:

(i.e. attempting to set tdm slot width and num in the i2c codec)

but it doesn't seem to be pickin up the fact that I want all the codecs
linked together as one.

(FYI, the first codec, i.e. tlv32aic3x_a should be the master, and all
others including the CPU will be slaves).

Thanks for any help!

BTW, I'm happy to use whatever kernel will support me with the minimal
amount of effort!

Sincerely,
  -Caleb


&i2c1 {
clock-frequency = <100000>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c1_pins_default>;
status="okay";

tlv320aic3x_a: tlv320aic3x at 18 {
       #sound-dai-cells = <0>;
compatible = "ti,tlv320aic3x";
reg = <0x18>;
status = "okay";
dai-tdm-slot-width = <16>;
dai-tdm-slot-num   = <0>;
};
tlv320aic3x_b: tlv320aic3x at 19 {
       #sound-dai-cells = <0>;
compatible = "ti,tlv320aic3x";
reg = <0x19>;
status = "okay";
dai-tdm-slot-width = <16>;
dai-tdm-slot-num   = <2>;
};
tlv320aic3x_c: tlv320aic3x at 1a {
compatible = "ti,tlv320aic3x";
reg = <0x1a>;
status = "okay";
dai-tdm-slot-width = <16>;
dai-tdm-slot-num   = <4>;
};
tlv320aic3x_d: tlv320aic3x at 1b {
compatible = "ti,tlv320aic3x";
reg = <0x1b>;
status = "okay";
dai-tdm-slot-width = <16>;
dai-tdm-slot-num   = <6>;
};
};

sound {
     compatible = "simple-audio-card";
     simple-audio-card,name = "puck audio";
     // simple-audio-card,widgets=
     // simple-audio-card,routing=
     simple-audio-card,mclk-fs = <256>;
     status="okay";
     simple-audio-card,bitclock-master = <&tlv320aic3x_a>;
     simple-audio-card,frame-master    = <&tlv320aic3x_a>;
     simple-audio-card,dai-link at 0 {
          format = "left_j";
  cpu {
    sound-dai = <&mcasp0 0>;
  };

// *** Here's where I'm really confused -- this part doesn't seem to be
supported to
// have all the codecs on a single DAI.
// The examples given  seem to be for different codec DAIs
// sharing a single CPU DAI, but not used at the same time.

  codec {
    #sound-dai-cells = <0>;
    sound-dai          = <
    &tlv320aic3x_a
    &tlv320aic3x_b
    &tlv320aic3x_c
      &tlv320aic3x_d
    >;
  };
     };
};


More information about the Alsa-devel mailing list