diff options
author | Laxminath Kasam <lkasam@codeaurora.org> | 2015-12-18 13:57:27 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:15:45 -0700 |
commit | 513c9ffd22af5a6f9d13cbe3e6107dda6c8b00a1 (patch) | |
tree | 41cf880d4e4bb5d061556fe6c3a0615fe6cd7849 /sound/soc/codecs | |
parent | 3e86d4b3899503fa6a5961c8e1bea41adc0a5920 (diff) |
ASoC: wsa881x-analog: fix shutdown of wsa during playback
Enable count of WSA startup/shutdown is not handled.
Add counter to handle the startup and shutdown properly.
Change-Id: I8c46fdd900c51d3e8d766b824f17996919779ba9
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r-- | sound/soc/codecs/wsa881x-analog.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/sound/soc/codecs/wsa881x-analog.c b/sound/soc/codecs/wsa881x-analog.c index 49ea4626b11f..cac6860cb098 100644 --- a/sound/soc/codecs/wsa881x-analog.c +++ b/sound/soc/codecs/wsa881x-analog.c @@ -62,6 +62,7 @@ struct wsa881x_pdata { struct wsa881x_tz_priv tz_pdata; int bg_cnt; int clk_cnt; + int enable_cnt; int version; struct mutex bg_lock; struct mutex res_lock; @@ -119,7 +120,7 @@ static int wsa881x_spk_pa_gain_get(struct snd_kcontrol *kcontrol, ucontrol->value.integer.value[0] = wsa881x->spk_pa_gain; - dev_err(codec->dev, "%s: spk_pa_gain = %ld\n", __func__, + dev_dbg(codec->dev, "%s: spk_pa_gain = %ld\n", __func__, ucontrol->value.integer.value[0]); return 0; @@ -138,7 +139,7 @@ static int wsa881x_spk_pa_gain_put(struct snd_kcontrol *kcontrol, return -EINVAL; } wsa881x->spk_pa_gain = ucontrol->value.integer.value[0]; - dev_err(codec->dev, "%s: ucontrol->value.integer.value[0] = %ld\n", + dev_dbg(codec->dev, "%s: ucontrol->value.integer.value[0] = %ld\n", __func__, ucontrol->value.integer.value[0]); return 0; @@ -884,8 +885,11 @@ static int wsa881x_startup(struct wsa881x_pdata *pdata) struct snd_soc_codec *codec = pdata->codec; struct snd_soc_card *card = codec->component.card; - pr_debug("%s(): wsa startup\n", __func__); + pr_debug("%s(): wsa startup, enable_cnt:%d\n", __func__, + pdata->enable_cnt); + if (pdata->enable_cnt++ > 0) + return 0; ret = msm_gpioset_activate(CLIENT_WSA_BONGO_1, "wsa_clk"); if (ret) { pr_err("%s: gpio set cannot be activated %s\n", @@ -910,7 +914,10 @@ static int wsa881x_shutdown(struct wsa881x_pdata *pdata) struct snd_soc_codec *codec = pdata->codec; struct snd_soc_card *card = codec->component.card; - pr_debug("%s(): wsa shutdown\n", __func__); + pr_debug("%s(): wsa shutdown, enable_cnt:%d\n", __func__, + pdata->enable_cnt); + if (--pdata->enable_cnt > 0) + return 0; ret = wsa881x_reset(pdata, false); if (ret) { pr_err("%s: wsa reset failed suspend %d\n", |