summaryrefslogtreecommitdiff
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorLaxminath Kasam <lkasam@codeaurora.org>2015-12-18 13:57:27 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:15:45 -0700
commit513c9ffd22af5a6f9d13cbe3e6107dda6c8b00a1 (patch)
tree41cf880d4e4bb5d061556fe6c3a0615fe6cd7849 /sound/soc/codecs
parent3e86d4b3899503fa6a5961c8e1bea41adc0a5920 (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.c15
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",