From 638b56027e5890046567680d4914d7109adfae6a Mon Sep 17 00:00:00 2001 From: Laxminath Kasam Date: Mon, 24 Sep 2018 13:19:52 +0530 Subject: [PATCH] asoc: codecs: add ignore suspend for bolero and wcd937x widgets Update ignore suspend for AIF in/out and dapm input/output widgets for bolero and wcd937x codecs to avoid suspend of codec during active usecase running even after APSS goes to suspend. CRs-Fixed: 2321226 Change-Id: I277129e8e657485c56414a385150c4da55382770 Signed-off-by: Laxminath Kasam --- asoc/codecs/bolero/rx-macro.c | 13 +++++++++++++ asoc/codecs/bolero/tx-macro.c | 17 +++++++++++++++++ asoc/codecs/bolero/va-macro.c | 16 ++++++++++++++++ asoc/codecs/bolero/wsa-macro.c | 11 +++++++++++ asoc/codecs/wcd937x/wcd937x.c | 21 +++++++++++++++++++++ 5 files changed, 78 insertions(+) diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c index 6c936cbc014c..1b042cbb8433 100644 --- a/asoc/codecs/bolero/rx-macro.c +++ b/asoc/codecs/bolero/rx-macro.c @@ -3027,6 +3027,19 @@ static int rx_macro_init(struct snd_soc_codec *codec) dev_err(rx_dev, "%s: failed to add snd_ctls\n", __func__); return ret; } + snd_soc_dapm_ignore_suspend(dapm, "RX_MACRO_AIF1 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "RX_MACRO_AIF2 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "RX_MACRO_AIF3 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "RX_MACRO_AIF4 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "HPHL_OUT"); + snd_soc_dapm_ignore_suspend(dapm, "HPHR_OUT"); + snd_soc_dapm_ignore_suspend(dapm, "AUX_OUT"); + snd_soc_dapm_ignore_suspend(dapm, "RX_TX DEC0_INP"); + snd_soc_dapm_ignore_suspend(dapm, "RX_TX DEC1_INP"); + snd_soc_dapm_ignore_suspend(dapm, "RX_TX DEC2_INP"); + snd_soc_dapm_ignore_suspend(dapm, "RX_TX DEC3_INP"); + snd_soc_dapm_sync(dapm); + snd_soc_update_bits(codec, BOLERO_CDC_RX_RX0_RX_PATH_DSM_CTL, 0x01, 0x01); snd_soc_update_bits(codec, BOLERO_CDC_RX_RX1_RX_PATH_DSM_CTL, 0x01, 0x01); snd_soc_update_bits(codec, BOLERO_CDC_RX_RX2_RX_PATH_DSM_CTL, 0x01, 0x01); diff --git a/asoc/codecs/bolero/tx-macro.c b/asoc/codecs/bolero/tx-macro.c index 44826de51f54..09dd3b097b01 100644 --- a/asoc/codecs/bolero/tx-macro.c +++ b/asoc/codecs/bolero/tx-macro.c @@ -1521,6 +1521,23 @@ static int tx_macro_init(struct snd_soc_codec *codec) dev_err(tx_dev, "%s: Failed to add snd_ctls\n", __func__); return ret; } + + snd_soc_dapm_ignore_suspend(dapm, "TX_AIF1 Capture"); + snd_soc_dapm_ignore_suspend(dapm, "TX_AIF2 Capture"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC0"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC1"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC2"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_ADC3"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC0"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC1"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC2"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC3"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC4"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC5"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC6"); + snd_soc_dapm_ignore_suspend(dapm, "TX SWR_MIC7"); + snd_soc_dapm_sync(dapm); + for (i = 0; i < NUM_DECIMATORS; i++) { tx_priv->tx_hpf_work[i].tx_priv = tx_priv; tx_priv->tx_hpf_work[i].decimator = i; diff --git a/asoc/codecs/bolero/va-macro.c b/asoc/codecs/bolero/va-macro.c index 1d28e411fa1a..0bbdc68be334 100644 --- a/asoc/codecs/bolero/va-macro.c +++ b/asoc/codecs/bolero/va-macro.c @@ -1454,6 +1454,22 @@ static int va_macro_init(struct snd_soc_codec *codec) return ret; } + snd_soc_dapm_ignore_suspend(dapm, "VA_AIF1 Capture"); + snd_soc_dapm_ignore_suspend(dapm, "VA_AIF2 Capture"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC0"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC1"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC2"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_ADC3"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC0"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC1"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC2"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC3"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC4"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC5"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC6"); + snd_soc_dapm_ignore_suspend(dapm, "VA SWR_MIC7"); + snd_soc_dapm_sync(dapm); + for (i = 0; i < VA_MACRO_NUM_DECIMATORS; i++) { va_priv->va_hpf_work[i].va_priv = va_priv; va_priv->va_hpf_work[i].decimator = i; diff --git a/asoc/codecs/bolero/wsa-macro.c b/asoc/codecs/bolero/wsa-macro.c index d5271865b2f5..9a6dff35ea17 100644 --- a/asoc/codecs/bolero/wsa-macro.c +++ b/asoc/codecs/bolero/wsa-macro.c @@ -2511,6 +2511,17 @@ static int wsa_macro_init(struct snd_soc_codec *codec) dev_err(wsa_dev, "%s: Failed to add snd_ctls\n", __func__); return ret; } + snd_soc_dapm_ignore_suspend(dapm, "WSA_AIF1 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_AIF_MIX1 Playback"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_AIF_VI Capture"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_AIF_ECHO Capture"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_SPK1 OUT"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_SPK2 OUT"); + snd_soc_dapm_ignore_suspend(dapm, "VIINPUT_WSA"); + snd_soc_dapm_ignore_suspend(dapm, "WSA SRC0_INP"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_TX DEC0_INP"); + snd_soc_dapm_ignore_suspend(dapm, "WSA_TX DEC1_INP"); + snd_soc_dapm_sync(dapm); wsa_priv->codec = codec; wsa_priv->spkr_gain_offset = WSA_MACRO_GAIN_OFFSET_0_DB; diff --git a/asoc/codecs/wcd937x/wcd937x.c b/asoc/codecs/wcd937x/wcd937x.c index 0bdfda1a52f6..79b17d9e08c5 100644 --- a/asoc/codecs/wcd937x/wcd937x.c +++ b/asoc/codecs/wcd937x/wcd937x.c @@ -1885,6 +1885,19 @@ static int wcd937x_soc_codec_probe(struct snd_soc_codec *codec) pr_err("%s: mbhc initialization failed\n", __func__); goto err_hwdep; } + snd_soc_dapm_ignore_suspend(dapm, "AMIC1"); + snd_soc_dapm_ignore_suspend(dapm, "AMIC2"); + snd_soc_dapm_ignore_suspend(dapm, "AMIC3"); + snd_soc_dapm_ignore_suspend(dapm, "IN1_HPHL"); + snd_soc_dapm_ignore_suspend(dapm, "IN2_HPHR"); + snd_soc_dapm_ignore_suspend(dapm, "IN3_AUX"); + snd_soc_dapm_ignore_suspend(dapm, "ADC1_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "ADC2_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "EAR"); + snd_soc_dapm_ignore_suspend(dapm, "AUX"); + snd_soc_dapm_ignore_suspend(dapm, "HPHL"); + snd_soc_dapm_ignore_suspend(dapm, "HPHR"); + snd_soc_dapm_sync(dapm); wcd937x_init_reg(codec); @@ -1903,6 +1916,14 @@ static int wcd937x_soc_codec_probe(struct snd_soc_codec *codec) __func__); goto err_hwdep; } + snd_soc_dapm_ignore_suspend(dapm, "AMIC4"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC1_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC2_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC3_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC4_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC5_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "DMIC6_OUTPUT"); + snd_soc_dapm_ignore_suspend(dapm, "ADC3_OUTPUT"); snd_soc_dapm_sync(dapm); } wcd937x->version = WCD937X_VERSION_1_0;