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

This commit is contained in:
Mark Brown 2015-10-07 16:07:50 +01:00
commit e4fc141d2a
2 changed files with 15 additions and 9 deletions

View File

@ -1509,14 +1509,17 @@ static int aic3x_init(struct snd_soc_codec *codec)
snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL);
snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL);
/* Line2 to HP Bypass default volume, disconnect from Output Mixer */ /* On tlv320aic3104, these registers are reserved and must not be written */
snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); if (aic3x->model != AIC3X_MODEL_3104) {
snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL); /* Line2 to HP Bypass default volume, disconnect from Output Mixer */
snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL); snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL);
snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL); snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL);
/* Line2 Line Out default volume, disconnect from Output Mixer */ snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL);
snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL);
snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); /* Line2 Line Out default volume, disconnect from Output Mixer */
snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL);
snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL);
}
switch (aic3x->model) { switch (aic3x->model) {
case AIC3X_MODEL_3X: case AIC3X_MODEL_3X:

View File

@ -3760,7 +3760,7 @@ static int wm8962_i2c_probe(struct i2c_client *i2c,
ret = snd_soc_register_codec(&i2c->dev, ret = snd_soc_register_codec(&i2c->dev,
&soc_codec_dev_wm8962, &wm8962_dai, 1); &soc_codec_dev_wm8962, &wm8962_dai, 1);
if (ret < 0) if (ret < 0)
goto err_enable; goto err_pm_runtime;
regcache_cache_only(wm8962->regmap, true); regcache_cache_only(wm8962->regmap, true);
@ -3769,6 +3769,8 @@ static int wm8962_i2c_probe(struct i2c_client *i2c,
return 0; return 0;
err_pm_runtime:
pm_runtime_disable(&i2c->dev);
err_enable: err_enable:
regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);
err: err:
@ -3778,6 +3780,7 @@ err:
static int wm8962_i2c_remove(struct i2c_client *client) static int wm8962_i2c_remove(struct i2c_client *client)
{ {
snd_soc_unregister_codec(&client->dev); snd_soc_unregister_codec(&client->dev);
pm_runtime_disable(&client->dev);
return 0; return 0;
} }