diff --git a/asoc/codecs/wcd934x/wcd934x.c b/asoc/codecs/wcd934x/wcd934x.c index 2a6d829f2443..34868fa1d6b5 100644 --- a/asoc/codecs/wcd934x/wcd934x.c +++ b/asoc/codecs/wcd934x/wcd934x.c @@ -2974,6 +2974,11 @@ static int __tavil_codec_enable_swr(struct snd_soc_dapm_widget *w, int event) tavil->swr.rx_8_count++; ch_cnt = !!(tavil->swr.rx_7_count) + tavil->swr.rx_8_count; + if (wcd9xxx_get_current_power_state(tavil->wcd9xxx, + WCD9XXX_DIG_CORE_REGION_1) + != WCD_REGION_POWER_COLLAPSE_REMOVE) + goto done; + swrm_wcd_notify(tavil->swr.ctrl_data[0].swr_pdev, SWR_DEVICE_UP, NULL); swrm_wcd_notify(tavil->swr.ctrl_data[0].swr_pdev, @@ -2994,6 +2999,7 @@ static int __tavil_codec_enable_swr(struct snd_soc_dapm_widget *w, int event) break; } +done: dev_dbg(tavil->dev, "%s: %s: current swr ch cnt: %d\n", __func__, w->name, ch_cnt);