Re: [PATCH v2 43/44] ASoC: codecs: wm*: use .auto_selectable_formats
Charles Keepax <[email protected]>
| Newsgroups | org.kernel.vger.linux-sound |
|---|---|
| Message-ID | <anWo/[email protected]> |
On Fri, Aug 07, 2026 at 12:57:21AM +0000, Kuninori Morimoto wrote: > We can use .auto_selectable_formats. Let's adds it. > > Signed-off-by: Kuninori Morimoto <[email protected]> > --- > --- a/sound/soc/codecs/wm8350.c > +++ b/sound/soc/codecs/wm8350.c > @@ -1426,6 +1426,17 @@ EXPORT_SYMBOL_GPL(wm8350_mic_jack_detect); > SNDRV_PCM_FMTBIT_S20_3LE |\ > SNDRV_PCM_FMTBIT_S24_LE) > > +static const u64 wm8350_selectable_formats = > + SND_SOC_POSSIBLE_DAIFMT_I2S | > + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J | > + SND_SOC_POSSIBLE_DAIFMT_LEFT_J | > + SND_SOC_POSSIBLE_DAIFMT_DSP_A | > + SND_SOC_POSSIBLE_DAIFMT_DSP_B | > + SND_SOC_POSSIBLE_DAIFMT_NB_NF | > + SND_SOC_POSSIBLE_DAIFMT_NB_IF | > + SND_SOC_POSSIBLE_DAIFMT_IB_NF | > + SND_SOC_POSSIBLE_DAIFMT_IB_IF; I think we should only allow NF for the DSP modes here. Looking carefully at the driver code it sets the same value for DSP_A and DSP_B so LRCLK_INV is actually selecting between those two modes here. Admittedly, it should probably block then setting the clock stuff in the following switch, but no point compounding that problem here. > --- a/sound/soc/codecs/wm8962.c > +++ b/sound/soc/codecs/wm8962.c > @@ -3056,6 +3056,22 @@ static int wm8962_mute(struct snd_soc_dai *dai, int mute, int direction) > #define WM8962_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ > SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) > > +static const u64 wm8962_selectable_formats[] = { > + /* 1st priority */ > + SND_SOC_POSSIBLE_DAIFMT_I2S | > + SND_SOC_POSSIBLE_DAIFMT_RIGHT_J | > + SND_SOC_POSSIBLE_DAIFMT_LEFT_J | > + SND_SOC_POSSIBLE_DAIFMT_DSP_B | DSP_B also only supports NF, there is a fallthrough in the switch. > + SND_SOC_POSSIBLE_DAIFMT_NB_NF | > + SND_SOC_POSSIBLE_DAIFMT_NB_IF | > + SND_SOC_POSSIBLE_DAIFMT_IB_NF | > + SND_SOC_POSSIBLE_DAIFMT_IB_IF, > + /* 2nd priority */ > + SND_SOC_POSSIBLE_DAIFMT_DSP_A | > + SND_SOC_POSSIBLE_DAIFMT_NB_NF | > + SND_SOC_POSSIBLE_DAIFMT_IB_NF, > +}; Thanks, Charles