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? > @@ -1204,6 +1261,7 @@ static int rt286_i2c_probe(struct i2c_client *i2c, > mdelay(10); > > regmap_write(rt286->regmap, RT286_MISC_CTRL1, 0x0000); > + > /* Power down LDO, VREF */ > regmap_update_bits(rt286->regmap, RT286_POWER_CTRL2, 0xc, 0x0); > regmap_update_bits(rt286->regmap, RT286_POWER_CTRL1, 0x1001, 0x1001); Random whitespace change. > @@ -1222,6 +1280,7 @@ static int rt286_i2c_probe(struct i2c_client *i2c, > RT286_SET_GPIO_DATA, 0x40, 0x40); > regmap_update_bits(rt286->regmap, > RT286_GPIO_CTRL, 0xc, 0x8); > + rt286->mute_hpo_func = dell_dino_mute_hpo; > } Why would we only do this on some machines, does this break others? This change does appear to be two different changes merged into one, there's the GPIO setup and this automute thing and they don't seem to overlap AFAICT - they should be split into separate patches unless there's some reason why they overlap but I'm not seeing that.