diff --git a/sound/soc/tegra-alt/tegra210_mvc_alt.c b/sound/soc/tegra-alt/tegra210_mvc_alt.c index b1b33f81..510227c3 100644 --- a/sound/soc/tegra-alt/tegra210_mvc_alt.c +++ b/sound/soc/tegra-alt/tegra210_mvc_alt.c @@ -146,9 +146,7 @@ static int tegra210_mvc_get_vol(struct snd_kcontrol *kcontrol, } else { u32 val; - pm_runtime_get_sync(codec->dev); regmap_read(mvc->regmap, reg, &val); - pm_runtime_put(codec->dev); ucontrol->value.integer.value[0] = ((val & TEGRA210_MVC_MUTE_MASK) != 0); } @@ -207,6 +205,10 @@ static int tegra210_mvc_put_vol(struct snd_kcontrol *kcontrol, end: pm_runtime_put(codec->dev); + if (reg == TEGRA210_MVC_TARGET_VOL) + ret |= regmap_update_bits(mvc->regmap, TEGRA210_MVC_CTRL, + TEGRA210_MVC_MUTE_MASK, 0); + return ret; } @@ -573,7 +575,6 @@ static bool tegra210_mvc_volatile_reg(struct device *dev, unsigned int reg) case TEGRA210_MVC_AHUBRAMCTL_CONFIG_RAM_CTRL: case TEGRA210_MVC_AHUBRAMCTL_CONFIG_RAM_DATA: case TEGRA210_MVC_PEAK_VALUE: - case TEGRA210_MVC_CTRL: return true; default: return false;