Hi,
I'm trying to write an ALSA soundcard driver module for an embedded Zynq-based system with 4 Cirrus CS42448 codecs. Each codec has 6 analog output channels and I'd like the "soundcard" to have 24 channels (6 to each codec). I've been having trouble getting it to do this. The hw_params for the codec, card and "I2S" IP core drivers all get the same parameters, including number of channels.
When I define 4 snd_soc_dai_link's, each with 1 codec, then 4 "devices" are set up for the card and I can access 6 channels on 1 codec (1 "device") at a time. When I define 1 snd_soc_dai_link with 4 codecs then 1 "device" is set up and I can still only access 6 channels, but it appears to use all 4 codecs (somehow - I haven't yet worked out the channel allocation). I can't seem to get 24 channels to the card, splitting into 6 channels to each of the codecs.
Can anyone suggest how I should be going about this?
The linux kernel is 3.17 from PetaLinux (Xilinx).
Cheers, Steve