From de83e87f07f614f7008361a62016bd8c20fb1c2b Mon Sep 17 00:00:00 2001 From: Sudheer Papothi Date: Wed, 1 Jul 2020 13:43:31 +0530 Subject: [PATCH] ASoC: wsa-macro: Add core vote before accessing registers Add core vote before accessing registers to avoid unclocked access. Change-Id: I02ce78d71787f5a12c44cd3194dde62682f20037 Signed-off-by: Sudheer Papothi --- asoc/codecs/bolero/wsa-macro.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/asoc/codecs/bolero/wsa-macro.c b/asoc/codecs/bolero/wsa-macro.c index 5c59d6de4f3d..ca25ff8ac493 100644 --- a/asoc/codecs/bolero/wsa-macro.c +++ b/asoc/codecs/bolero/wsa-macro.c @@ -2008,10 +2008,12 @@ static int wsa_macro_set_rx_mute_status(struct snd_kcontrol *kcontrol, int value = ucontrol->value.integer.value[0]; int wsa_rx_shift = ((struct soc_multi_mixer_control *) kcontrol->private_value)->shift; + int ret = 0; if (!wsa_macro_get_data(component, &wsa_dev, &wsa_priv, __func__)) return -EINVAL; + pm_runtime_get_sync(wsa_priv->dev); switch (wsa_rx_shift) { case 0: snd_soc_component_update_bits(component, @@ -2036,13 +2038,16 @@ static int wsa_macro_set_rx_mute_status(struct snd_kcontrol *kcontrol, default: pr_err("%s: invalid argument rx_shift = %d\n", __func__, wsa_rx_shift); - return -EINVAL; + ret = -EINVAL; } + pm_runtime_mark_last_busy(wsa_priv->dev); + pm_runtime_put_autosuspend(wsa_priv->dev); dev_dbg(component->dev, "%s: WSA Digital Mute RX %d Enable %d\n", __func__, wsa_rx_shift, value); wsa_priv->wsa_digital_mute_status[wsa_rx_shift] = value; - return 0; + + return ret; } static int wsa_macro_get_compander(struct snd_kcontrol *kcontrol,