Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge remote-tracking branches 'asoc/fix/tlv320aic3x' and 'asoc/fix/wm8962' into asoc-linus

+15 -9
+11 -8
sound/soc/codecs/tlv320aic3x.c
··· 1509 1509 snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); 1510 1510 snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); 1511 1511 1512 - /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ 1513 - snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); 1514 - snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL); 1515 - snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL); 1516 - snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL); 1517 - /* Line2 Line Out default volume, disconnect from Output Mixer */ 1518 - snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); 1519 - snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); 1512 + /* On tlv320aic3104, these registers are reserved and must not be written */ 1513 + if (aic3x->model != AIC3X_MODEL_3104) { 1514 + /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ 1515 + snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); 1516 + snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL); 1517 + snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL); 1518 + snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL); 1519 + /* Line2 Line Out default volume, disconnect from Output Mixer */ 1520 + snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); 1521 + snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); 1522 + } 1520 1523 1521 1524 switch (aic3x->model) { 1522 1525 case AIC3X_MODEL_3X:
+4 -1
sound/soc/codecs/wm8962.c
··· 3760 3760 ret = snd_soc_register_codec(&i2c->dev, 3761 3761 &soc_codec_dev_wm8962, &wm8962_dai, 1); 3762 3762 if (ret < 0) 3763 - goto err_enable; 3763 + goto err_pm_runtime; 3764 3764 3765 3765 regcache_cache_only(wm8962->regmap, true); 3766 3766 ··· 3769 3769 3770 3770 return 0; 3771 3771 3772 + err_pm_runtime: 3773 + pm_runtime_disable(&i2c->dev); 3772 3774 err_enable: 3773 3775 regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); 3774 3776 err: ··· 3780 3778 static int wm8962_i2c_remove(struct i2c_client *client) 3781 3779 { 3782 3780 snd_soc_unregister_codec(&client->dev); 3781 + pm_runtime_disable(&client->dev); 3783 3782 return 0; 3784 3783 } 3785 3784