[alsa-devel] [PATCH] ASoC: codecs: dmic: Use channel map for configs with a single mic

Matthias Kaehlcke mka at chromium.org
Fri Jan 5 20:18:36 CET 2018


El Fri, Jan 05, 2018 at 12:04:55PM +0000 Mark Brown ha dit:

> On Fri, Jan 05, 2018 at 11:45:43AM +0100, Arnaud Pouliquen wrote:
> 
> > >> +             num-channels = <1>;
> 
> > In your implementation seems not linked to hardware but software...
> 
> > DMIC driver description specifies the channels_max to 8 channels.
> > I suppose that it is used for DMIC codecs that integrate filters and are
> > connected to CPU DAI with I2S/PCM links. But it can be also used for
> > DMIC connected to CPU DAI with a SPI link (in this case decimation
> > filter in on Soc side).
> 
> The intention with the DMIC CODEC is that it's used when the CPU
> directly has PDM inputs and the DMICs are just directly wired to it
> (stereo is obviously the norm here but some SoCs may bunch things up
> further for use with mic arrays).
> 
> > If we continue to support both use cases, specify the number of channels
> > seems reasonable but this should be use to change the max channel
> > constraint, not to declare a control.
> 
> Yes, that would seem the most obvious thing - it's how we handle things
> like CPU DAIs that support very high channel counts when connected to
> stereo CODECs for example.  It's not obvious why we'd use a channel map
> here instead.

Thanks for the feedback!

I experimented initially with changing channels_max, but overwriting
dmic_dai.capture.channels_max didn't seem right since it would affect
other possible instances of the codec. I overlooked that this can be
avoided by passing a *copy* with adjusted channels_max to
snd_soc_register_codec().

Matthias


More information about the Alsa-devel mailing list