[alsa-devel] [PATCH v2] ASoC: Handle multiple codecs with split playback / capture
Ricard Wanderlof
ricard.wanderlof at axis.com
Fri Aug 21 09:11:16 CEST 2015
On Thu, 20 Aug 2015, Pierre-Louis Bossart wrote:
> > /**
> > * snd_soc_runtime_activate() - Increment active count for PCM runtime components
> > * @rtd: ASoC PCM runtime that is activated
> > @@ -371,6 +389,20 @@ static void soc_pcm_init_runtime_hw(struct snd_pcm_substream *substream)
> >
> > /* first calculate min/max only for CODECs in the DAI link */
> > for (i = 0; i < rtd->num_codecs; i++) {
> > +
> > + /*
> > + * Skip CODECs which don't support the current stream type.
> > + * Otherwise, since the rate, channel, and format values will
> > + * zero in that case, we would have no usable settings left,
> > + * causing the resulting setup to fail.
> > + * At least one CODEC should match, otherwise we should have
> > + * bailed out on a higher level, since there would be no
> > + * CODEC to support the transfer direction in that case.
> > + */
> > + if (!snd_soc_dai_stream_valid(rtd->codec_dais[i],
> > + substream->stream))
>
> Maybe I misunderstood but shouldn't there be some sort of verification
> that the codecs can use the same number of slots between playback and
> capture if they share the same LRCLK/FS? e.g. it's not uncommon to have
> 4 mic capture and 2 ch playback. If the capture and playback is handled
> by different chips you'd still need to maintain some level of consistency.
You're probably right, although it may be that that sort of thing is
handled at a higher level, e.g. the machine driver in such a setup would
configure both codecs to use TDM before we even get to this function, I
don't know.
I think we'd have to take care of that situation if and when it arises.
The setup I have here doesn't allow me to test it.
/Ricard
--
Ricard Wolf Wanderlöf ricardw(at)axis.com
Axis Communications AB, Lund, Sweden www.axis.com
Phone +46 46 272 2016 Fax +46 46 13 61 30
More information about the Alsa-devel
mailing list