[PATCH v3] ASoC: rt711-sdca: change capture switch controls

Shuming [范書銘] shumingf at realtek.com
Thu Apr 22 11:53:10 CEST 2021


Hi Jaroslav, 

> > +static int rt711_sdca_set_fu0f_capture_ctl(struct rt711_sdca_priv
> > +*rt711) {
> > +	int err;
> > +
> > +	if (rt711->fu0f_dapm_mute) {
> > +		err = regmap_write(rt711->regmap,
> > +			SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> > +			RT711_SDCA_CTL_FU_MUTE, CH_L), 0x01);
> > +		if (err < 0)
> > +			return err;
> > +		err = regmap_write(rt711->regmap,
> > +			SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> > +			RT711_SDCA_CTL_FU_MUTE, CH_R), 0x01);
> > +		if (err < 0)
> > +			return err;
> 
> Is possible to set both channels RT711_SDCA_CTL_FU_MUTE in one write ?
> 
> Something like:
> 
>   regmap_write(rt711->regmap,
> 		SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> 			RT711_SDCA_CTL_FU_MUTE, CH_R|CH_L), 0x01);

No, the left/right channel setting of SDCA control are the different register addresses.

> Anyway, this function can be recoded like (far more readable):
> 
>   ch_l = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_l_mute) ? 0x01 :
> 0x00;
>   ch_r = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_r_mute) ? 0x01 :
> 0x00:
>   regmap_write(rt711->regmap,
> 		SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> 			RT711_SDCA_CTL_FU_MUTE, CH_L), ch_l);
>   regmap_write(rt711->regmap,
> 		SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> 			RT711_SDCA_CTL_FU_MUTE, CH_R), ch_r);
> 
> ... just add error checking ...

OK, will fix. Thanks.

> Or ideally, if both mute bits can be set together (one regmap_write):
> 
>   ch_l = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_l_mute) ? 0x01 :
> 0x00;
>   ch_r = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_r_mute) ? 0x01 :
> 0x00:
>   regmap_write(rt711->regmap,
> 		SDW_SDCA_CTL(FUNC_NUM_JACK_CODEC,
> RT711_SDCA_ENT_USER_FU0F,
> 		  RT711_SDCA_CTL_FU_MUTE, CH_L|CH_R), ch_l | (ch_r << 1));
> 
> > +
> > +static int rt711_sdca_set_fu1e_capture_ctl(struct rt711_sdca_priv
> > +*rt711)
> 
> Same comments as for rt711_sdca_set_fu0f_capture_ctl().
> 
> 						Jaroslav
> 
> --
> Jaroslav Kysela <perex at perex.cz>
> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
> ------Please consider the environment before printing this e-mail.


More information about the Alsa-devel mailing list