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

From: Matthias Kaehlcke
Date: Fri Jan 05 2018 - 14:18:45 EST


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