If the machine driver has been un/reloaded, the register values of the codec driver have to be reinitialized in order to run properly.
Signed-off-by: Pascal Huerst pascal.huerst@gmail.com --- sound/soc/codecs/tas5086.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c index 249ef5c..cd19171 100644 --- a/sound/soc/codecs/tas5086.c +++ b/sound/soc/codecs/tas5086.c @@ -851,10 +851,16 @@ static int tas5086_probe(struct snd_soc_codec *codec) }
tas5086_reset(priv); + regcache_mark_dirty(priv->regmap); + ret = tas5086_init(codec->dev, priv); if (ret < 0) goto exit_disable_regulators;
+ ret = regcache_sync(priv->regmap); + if (ret < 0) + goto exit_disable_regulators; + /* set master volume to 0 dB */ ret = regmap_write(priv->regmap, TAS5086_MASTER_VOL, 0x30); if (ret < 0)