On Mon, Mar 13, 2017 at 08:41:41AM +0000, Kai-Heng Feng wrote: > On Fri, Feb 17, 2017 at 3:22 AM Mark Brown wrote: > > On Mon, Jan 23, 2017 at 01:35:14PM +0800, Kai-Heng Feng wrote: > > > +static void dell_dino_mute_hpo(struct snd_soc_codec *codec) > > > +{ > > > + snd_soc_write(codec, RT286_SET_AMP_GAIN_HPO, AMP_OUT_MUTE); > > > +} > > > + > > How does this ever get unmuted, should it be an _AUTODISABLE control > > instead? > I think the AMP is overrode by another value when playing sound, but I am > not sure. That's bad, we shouldn't have multiple inconsistent ways of controlling the same thing - this tends to lead to bugs as they need to be coordinated and things might change in one or both mechanisms. > Can there be multiple callbacks hooked to the same widget? > In this case, in addition to hpol_enable_control(), can I register another > callback to "HPO L"? You can have a callback that calls other callbacks to share code, you can't do this directly in the framework itself.