> On Tue, Feb 07, 2023 at 05:09:46PM +0800, shumingf@xxxxxxxxxxx wrote: > > > +static int rt712_sdca_mux_put(struct snd_kcontrol *kcontrol, > > + struct snd_ctl_elem_value *ucontrol) { > > + struct snd_soc_component *component = > > + snd_soc_dapm_kcontrol_component(kcontrol); > > + struct snd_soc_dapm_context *dapm = > > + snd_soc_dapm_kcontrol_dapm(kcontrol); > > + struct rt712_sdca_priv *rt712 = > snd_soc_component_get_drvdata(component); > > + struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; > > + unsigned int *item = ucontrol->value.enumerated.item; > > + unsigned int mask_sft; > > > + > > + snd_soc_dapm_mux_update_power(dapm, kcontrol, > > + item[0], e, NULL); > > + > > + return 1; > > +} > > This unconditionally returns 1 if the value written is in bounds which means > that an event will always be signalled. Please use mixer-test to check for this > and other issues. I will add the code to check. return 0 if no need to be changed return 1 if needs to be changed Thanks. > > + /* set sampling frequency */ > > + if (dai->id == RT712_AIF1) { > > + regmap_write(rt712->regmap, > > + SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, > RT712_SDCA_ENT_CS01, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), > > + sampling_rate); > > + regmap_write(rt712->regmap, > > + SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC, > RT712_SDCA_ENT_CS11, RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), > > + sampling_rate); > > + } > > + > > + if (dai->id == RT712_AIF2) > > + regmap_write(rt712->regmap, > > + SDW_SDCA_CTL(FUNC_NUM_AMP, RT712_SDCA_ENT_CS31, > RT712_SDCA_CTL_SAMPLE_FREQ_INDEX, 0), > > + sampling_rate); > > This would be better written as a switch statement, there were some other > checks for variants that looked to have similar issues. It makes it clearer that > only one option can be selected and allows you to have a default check that > makes sure that any new variant with another AIF gets handled. OK, will send the patch to fix. > ------Please consider the environment before printing this e-mail.