Browse Source

asoc: bolero: control wakeup of swr_tx during clock setup

Move the enable and disable of wakeup capability of
swr_tx gpios to clock setup to disable or enable it
in all required usecases.

Change-Id: I9fb76926d8520c382e7f19777190357c50f98994
Signed-off-by: Laxminath Kasam <[email protected]>
Laxminath Kasam 4 years ago
parent
commit
e0ea9653c3
2 changed files with 12 additions and 10 deletions
  1. 4 4
      asoc/codecs/bolero/tx-macro.c
  2. 8 6
      asoc/codecs/bolero/va-macro.c

+ 4 - 4
asoc/codecs/bolero/tx-macro.c

@@ -2650,11 +2650,7 @@ static int tx_macro_register_event_listener(struct snd_soc_component *component,
 				ret = swrm_wcd_notify(
 					tx_priv->swr_ctrl_data[0].tx_swr_pdev,
 					SWR_REGISTER_WAKEUP, NULL);
-			msm_cdc_pinctrl_set_wakeup_capable(
-					tx_priv->tx_swr_gpio_p, false);
 		} else {
-			msm_cdc_pinctrl_set_wakeup_capable(
-					tx_priv->tx_swr_gpio_p, true);
 			if (!tx_priv->disable_afe_wakeup_event_listener)
 				ret = swrm_wcd_notify(
 					tx_priv->swr_ctrl_data[0].tx_swr_pdev,
@@ -2690,6 +2686,8 @@ static int tx_macro_tx_va_mclk_enable(struct tx_macro_priv *tx_priv,
 					__func__);
 				goto exit;
 			}
+			msm_cdc_pinctrl_set_wakeup_capable(
+					tx_priv->tx_swr_gpio_p, false);
 		}
 
 		clk_tx_ret = bolero_clk_rsc_request_clock(tx_priv->dev,
@@ -2818,6 +2816,8 @@ tx_clk:
 						   TX_CORE_CLK,
 						   false);
 		if (tx_priv->swr_clk_users == 0) {
+			msm_cdc_pinctrl_set_wakeup_capable(
+					tx_priv->tx_swr_gpio_p, true);
 			ret = msm_cdc_pinctrl_select_sleep_state(
 						tx_priv->tx_swr_gpio_p);
 			if (ret < 0) {

+ 8 - 6
asoc/codecs/bolero/va-macro.c

@@ -428,12 +428,8 @@ static int va_macro_swr_pwr_event_v2(struct snd_soc_dapm_widget *w,
 			}
 			va_priv->current_clk_id = VA_CORE_CLK;
 		}
-		msm_cdc_pinctrl_set_wakeup_capable(
-				va_priv->va_swr_gpio_p, false);
 		break;
 	case SND_SOC_DAPM_POST_PMD:
-		msm_cdc_pinctrl_set_wakeup_capable(
-				va_priv->va_swr_gpio_p, true);
 		if (va_priv->current_clk_id == VA_CORE_CLK &&
 			va_priv->va_swr_clk_cnt != 0 &&
 			va_priv->tx_clk_status) {
@@ -610,9 +606,12 @@ static int va_macro_tx_va_mclk_enable(struct va_macro_priv *va_priv,
 		(enable ? "enable" : "disable"), va_priv->va_mclk_users);
 
 	if (enable) {
-		if (va_priv->swr_clk_users == 0)
+		if (va_priv->swr_clk_users == 0) {
 			msm_cdc_pinctrl_select_active_state(
 						va_priv->va_swr_gpio_p);
+			msm_cdc_pinctrl_set_wakeup_capable(
+					va_priv->va_swr_gpio_p, false);
+		}
 		clk_tx_ret = bolero_clk_rsc_request_clock(va_priv->dev,
 						   TX_CORE_CLK,
 						   TX_CORE_CLK,
@@ -705,9 +704,12 @@ static int va_macro_tx_va_mclk_enable(struct va_macro_priv *va_priv,
 						   TX_CORE_CLK,
 						   TX_CORE_CLK,
 						   false);
-		if (va_priv->swr_clk_users == 0)
+		if (va_priv->swr_clk_users == 0) {
+			msm_cdc_pinctrl_set_wakeup_capable(
+					va_priv->va_swr_gpio_p, true);
 			msm_cdc_pinctrl_select_sleep_state(
 						va_priv->va_swr_gpio_p);
+		}
 	}
 	return 0;