Преглед на файлове

Merge "asoc: Add control to set AFE Tx loopback port"

qctecmdr преди 5 години
родител
ревизия
1a78e2262a
променени са 1 файла, в които са добавени 214 реда и са изтрити 142 реда
  1. 214 142
      asoc/msm-pcm-routing-v2.c

+ 214 - 142
asoc/msm-pcm-routing-v2.c

@@ -82,6 +82,8 @@ static bool swap_ch;
 static int aanc_level;
 static int num_app_cfg_types;
 static int msm_ec_ref_port_id;
+static int afe_loopback_tx_port_index;
+static int afe_loopback_tx_port_id = -1;
 
 #define WEIGHT_0_DB 0x4000
 /* all the FEs which can support channel mixer */
@@ -857,7 +859,20 @@ static int msm_pcm_routing_get_lsm_app_type_idx(int app_type)
 
 static int get_port_id(int port_id)
 {
-	return (port_id == AFE_LOOPBACK_TX ? msm_ec_ref_port_id : port_id);
+	int ret = port_id;
+
+	if (port_id == AFE_LOOPBACK_TX) {
+		/*
+		 * Return afe_loopback_tx_port_id if set. Else return
+		 * msm_ec_ref_port_id to maintain backward compatibility.
+		 */
+		if (afe_loopback_tx_port_id != -1)
+			ret = afe_loopback_tx_port_id;
+		else
+			ret = msm_ec_ref_port_id;
+	}
+
+	return ret;
 }
 
 static bool is_mm_lsm_fe_id(int fe_id)
@@ -3611,7 +3626,7 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
 			msm_pcm_put_channel_rule_index),
 
 	SOC_SINGLE_EXT("MultiMedia1 Channels", SND_SOC_NOPM,
-			MSM_FRONTEND_DAI_MULTIMEDIA1, 8, 0,
+			MSM_FRONTEND_DAI_MULTIMEDIA1, 10, 0,
 			msm_pcm_get_out_chs,
 			msm_pcm_put_out_chs),
 	SOC_SINGLE_EXT("MultiMedia2 Channels", SND_SOC_NOPM,
@@ -3753,6 +3768,26 @@ static const struct snd_kcontrol_new channel_mixer_controls[] = {
 	{
 	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
 	.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
+	.name = "MultiMedia1 Output Channel9",
+	.info = msm_pcm_channel_weight_info,
+	.get = msm_pcm_channel_weight_get,
+	.put = msm_pcm_channel_weight_put,
+	.private_value = (unsigned long)&(struct soc_multi_mixer_control)
+		{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 8,}
+	},
+	{
+	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+	.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
+	.name = "MultiMedia1 Output Channel10",
+	.info = msm_pcm_channel_weight_info,
+	.get = msm_pcm_channel_weight_get,
+	.put = msm_pcm_channel_weight_put,
+	.private_value = (unsigned long)&(struct soc_multi_mixer_control)
+		{ .shift = MSM_FRONTEND_DAI_MULTIMEDIA1, .rshift = 9,}
+	},
+	{
+	.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+	.access = SNDRV_CTL_ELEM_ACCESS_READWRITE,
 	.name = "MultiMedia2 Output Channel1",
 	.info = msm_pcm_channel_weight_info,
 	.get = msm_pcm_channel_weight_get,
@@ -4030,227 +4065,200 @@ static int msm_ec_ref_rate_put(struct snd_kcontrol *kcontrol,
 	return 0;
 }
 
-static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
-	"32000", "44100", "48000", "96000", "192000", "384000"};
-
-static const struct soc_enum msm_route_ec_ref_params_enum[] = {
-	SOC_ENUM_SINGLE_EXT(17, ec_ref_ch_text),
-	SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
-	SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
-};
-
-static const struct snd_kcontrol_new ec_ref_param_controls[] = {
-	SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
-		msm_ec_ref_ch_get, msm_ec_ref_ch_put),
-	SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
-		msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
-	SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
-		msm_ec_ref_rate_get, msm_ec_ref_rate_put),
-	SOC_ENUM_EXT("EC Reference Downmixed Channels", msm_route_ec_ref_params_enum[0],
-		msm_ec_ref_ch_downmixed_get, msm_ec_ref_ch_downmixed_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch1", SND_SOC_NOPM, 0,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch2", SND_SOC_NOPM, 1,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch3", SND_SOC_NOPM, 2,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch4", SND_SOC_NOPM, 3,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch5", SND_SOC_NOPM, 4,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch6", SND_SOC_NOPM, 5,
-		16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8,
-		NULL, msm_ec_ref_chmixer_weights_put),
-};
-
-static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
-				struct snd_ctl_elem_value *ucontrol)
-{
-	pr_debug("%s: ec_ref_rx  = %d", __func__, msm_route_ec_ref_rx);
-	mutex_lock(&routing_lock);
-	ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
-	mutex_unlock(&routing_lock);
-	return 0;
-}
-
-static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
-				struct snd_ctl_elem_value *ucontrol)
+static int get_ec_ref_port_id(int value, int *index)
 {
-	int ec_ref_port_id;
-	struct snd_soc_dapm_widget *widget =
-		snd_soc_dapm_kcontrol_widget(kcontrol);
-	struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
-	struct snd_soc_dapm_update *update = NULL;
-
+	int port_id;
 
-	mutex_lock(&routing_lock);
-	switch (ucontrol->value.integer.value[0]) {
+	switch (value) {
 	case 0:
-		msm_route_ec_ref_rx = 0;
-		ec_ref_port_id = AFE_PORT_INVALID;
+		*index = 0;
+		port_id = AFE_PORT_INVALID;
 		break;
 	case 1:
-		msm_route_ec_ref_rx = 1;
-		ec_ref_port_id = SLIMBUS_0_RX;
+		*index = 1;
+		port_id = SLIMBUS_0_RX;
 		break;
 	case 2:
-		msm_route_ec_ref_rx = 2;
-		ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
+		*index = 2;
+		port_id = AFE_PORT_ID_PRIMARY_MI2S_RX;
 		break;
 	case 3:
-		msm_route_ec_ref_rx = 3;
-		ec_ref_port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
+		*index = 3;
+		port_id = AFE_PORT_ID_PRIMARY_MI2S_TX;
 		break;
 	case 4:
-		msm_route_ec_ref_rx = 4;
-		ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
+		*index = 4;
+		port_id = AFE_PORT_ID_SECONDARY_MI2S_TX;
 		break;
 	case 5:
-		msm_route_ec_ref_rx = 5;
-		ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
+		*index = 5;
+		port_id = AFE_PORT_ID_TERTIARY_MI2S_TX;
 		break;
 	case 6:
-		msm_route_ec_ref_rx = 6;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
+		*index = 6;
+		port_id = AFE_PORT_ID_QUATERNARY_MI2S_TX;
 		break;
 	case 7:
-		msm_route_ec_ref_rx = 7;
-		ec_ref_port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
+		*index = 7;
+		port_id = AFE_PORT_ID_SECONDARY_MI2S_RX;
 		break;
 	case 9:
-		msm_route_ec_ref_rx = 9;
-		ec_ref_port_id = SLIMBUS_5_RX;
+		*index = 9;
+		port_id = SLIMBUS_5_RX;
 		break;
 	case 10:
-		msm_route_ec_ref_rx = 10;
-		ec_ref_port_id = SLIMBUS_1_TX;
+		*index = 10;
+		port_id = SLIMBUS_1_TX;
 		break;
 	case 11:
-		msm_route_ec_ref_rx = 11;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
+		*index = 11;
+		port_id = AFE_PORT_ID_QUATERNARY_TDM_TX_1;
 		break;
 	case 12:
-		msm_route_ec_ref_rx = 12;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
+		*index = 12;
+		port_id = AFE_PORT_ID_QUATERNARY_TDM_RX;
 		break;
 	case 13:
-		msm_route_ec_ref_rx = 13;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
+		*index = 13;
+		port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_1;
 		break;
 	case 14:
-		msm_route_ec_ref_rx = 14;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
+		*index = 14;
+		port_id = AFE_PORT_ID_QUATERNARY_TDM_RX_2;
 		break;
 	case 15:
-		msm_route_ec_ref_rx = 15;
-		ec_ref_port_id = SLIMBUS_6_RX;
+		*index = 15;
+		port_id = SLIMBUS_6_RX;
 		break;
 	case 16:
-		msm_route_ec_ref_rx = 16;
-		ec_ref_port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
+		*index = 16;
+		port_id = AFE_PORT_ID_TERTIARY_MI2S_RX;
 		break;
 	case 17:
-		msm_route_ec_ref_rx = 17;
-		ec_ref_port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
+		*index = 17;
+		port_id = AFE_PORT_ID_QUATERNARY_MI2S_RX;
 		break;
 	case 18:
-		msm_route_ec_ref_rx = 18;
-		ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
+		*index = 18;
+		port_id = AFE_PORT_ID_TERTIARY_TDM_TX;
 		break;
 	case 19:
-		msm_route_ec_ref_rx = 19;
-		ec_ref_port_id = AFE_PORT_ID_USB_RX;
+		*index = 19;
+		port_id = AFE_PORT_ID_USB_RX;
 		break;
 	case 20:
-		msm_route_ec_ref_rx = 20;
-		ec_ref_port_id = AFE_PORT_ID_INT0_MI2S_RX;
+		*index = 20;
+		port_id = AFE_PORT_ID_INT0_MI2S_RX;
 		break;
 	case 21:
-		msm_route_ec_ref_rx = 21;
-		ec_ref_port_id = AFE_PORT_ID_INT4_MI2S_RX;
+		*index = 21;
+		port_id = AFE_PORT_ID_INT4_MI2S_RX;
 		break;
 	case 22:
-		msm_route_ec_ref_rx = 22;
-		ec_ref_port_id = AFE_PORT_ID_INT3_MI2S_TX;
+		*index = 22;
+		port_id = AFE_PORT_ID_INT3_MI2S_TX;
 		break;
 	case 23:
-		msm_route_ec_ref_rx = 23;
-		ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
+		*index = 23;
+		port_id = AFE_PORT_ID_HDMI_OVER_DP_RX;
 		break;
 	case 24:
-		msm_route_ec_ref_rx = 24;
-		ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
+		*index = 24;
+		port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_0;
 		break;
 	case 25:
-		msm_route_ec_ref_rx = 25;
-		ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
+		*index = 25;
+		port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_1;
 		break;
 	case 26:
-		msm_route_ec_ref_rx = 26;
-		ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
+		*index = 26;
+		port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_0;
 		break;
 	case 27:
-		msm_route_ec_ref_rx = 27;
-		ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
+		*index = 27;
+		port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_1;
 		break;
 	case 28:
-		msm_route_ec_ref_rx = 28;
-		ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
+		*index = 28;
+		port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_2;
 		break;
 	case 29:
-		msm_route_ec_ref_rx = 29;
-		ec_ref_port_id = SLIMBUS_7_RX;
+		*index = 29;
+		port_id = SLIMBUS_7_RX;
 		break;
 	case 30:
-		msm_route_ec_ref_rx = 30;
-		ec_ref_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_0;
+		*index = 30;
+		port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_0;
 		break;
 	case 31:
-		msm_route_ec_ref_rx = 31;
-		ec_ref_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_1;
+		*index = 31;
+		port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_1;
 		break;
 	case 32:
-		msm_route_ec_ref_rx = 32;
-		ec_ref_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_2;
+		*index = 32;
+		port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_2;
 		break;
 	case 33:
-		msm_route_ec_ref_rx = 33;
-		ec_ref_port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_3;
+		*index = 33;
+		port_id = AFE_PORT_ID_RX_CODEC_DMA_RX_3;
 		break;
 	case 34:
-		msm_route_ec_ref_rx = 34;
-		ec_ref_port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_0;
+		*index = 34;
+		port_id = AFE_PORT_ID_TX_CODEC_DMA_TX_0;
 		break;
 	case 35:
-		msm_route_ec_ref_rx = 35;
-		ec_ref_port_id = AFE_PORT_ID_TERTIARY_TDM_RX_2;
+		*index = 35;
+		port_id = AFE_PORT_ID_TERTIARY_TDM_RX_2;
 		break;
 	case 36:
-		msm_route_ec_ref_rx = 36;
-		ec_ref_port_id = AFE_PORT_ID_SECONDARY_TDM_TX;
+		*index = 36;
+		port_id = AFE_PORT_ID_SECONDARY_TDM_TX;
 		break;
 	default:
-		msm_route_ec_ref_rx = 0; /* NONE */
-		pr_err("%s EC ref rx %ld not valid\n",
-			__func__, ucontrol->value.integer.value[0]);
-		ec_ref_port_id = AFE_PORT_INVALID;
+		*index = 0; /* NONE */
+		pr_err("%s: Invalid value %d\n", __func__, value);
+		port_id = AFE_PORT_INVALID;
 		break;
 	}
-	msm_ec_ref_port_id = ec_ref_port_id;
-	adm_ec_ref_rx_id(ec_ref_port_id);
-	pr_debug("%s: msm_route_ec_ref_rx = %d\n",
-	    __func__, msm_route_ec_ref_rx);
+
+	return port_id;
+}
+
+static int msm_routing_afe_lb_tx_port_get(struct snd_kcontrol *kcontrol,
+				struct snd_ctl_elem_value *ucontrol)
+{
+	pr_debug("%s: port index = %d", __func__, afe_loopback_tx_port_index);
+	mutex_lock(&routing_lock);
+	ucontrol->value.integer.value[0] = afe_loopback_tx_port_index;
 	mutex_unlock(&routing_lock);
-	snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
-					msm_route_ec_ref_rx, e, update);
+
+	return 0;
+}
+
+static int msm_routing_afe_lb_tx_port_put(struct snd_kcontrol *kcontrol,
+				struct snd_ctl_elem_value *ucontrol)
+{
+	int value = ucontrol->value.integer.value[0];
+
+	mutex_lock(&routing_lock);
+	afe_loopback_tx_port_id = get_ec_ref_port_id(value,
+			&afe_loopback_tx_port_index);
+	pr_debug("%s: afe_loopback_tx_port_index = %d\n",
+	    __func__, afe_loopback_tx_port_index);
+	mutex_unlock(&routing_lock);
+
 	return 0;
 }
 
+static const char *const ec_ref_rate_text[] = {"0", "8000", "16000",
+	"32000", "44100", "48000", "96000", "192000", "384000"};
+
+static const struct soc_enum msm_route_ec_ref_params_enum[] = {
+	SOC_ENUM_SINGLE_EXT(17, ec_ref_ch_text),
+	SOC_ENUM_SINGLE_EXT(3, ec_ref_bit_format_text),
+	SOC_ENUM_SINGLE_EXT(9, ec_ref_rate_text),
+};
+
 static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX",
 	"PRI_MI2S_TX", "SEC_MI2S_TX",
 	"TERT_MI2S_TX", "QUAT_MI2S_TX", "SEC_I2S_RX", "PROXY_RX",
@@ -4268,6 +4276,70 @@ static const struct soc_enum msm_route_ec_ref_rx_enum[] = {
 	SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx),
 };
 
+static const struct snd_kcontrol_new ec_ref_param_controls[] = {
+	SOC_ENUM_EXT("EC Reference Channels", msm_route_ec_ref_params_enum[0],
+		msm_ec_ref_ch_get, msm_ec_ref_ch_put),
+	SOC_ENUM_EXT("EC Reference Bit Format", msm_route_ec_ref_params_enum[1],
+		msm_ec_ref_bit_format_get, msm_ec_ref_bit_format_put),
+	SOC_ENUM_EXT("EC Reference SampleRate", msm_route_ec_ref_params_enum[2],
+		msm_ec_ref_rate_get, msm_ec_ref_rate_put),
+	SOC_ENUM_EXT("EC Reference Downmixed Channels",
+		msm_route_ec_ref_params_enum[0],
+		msm_ec_ref_ch_downmixed_get, msm_ec_ref_ch_downmixed_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch1", SND_SOC_NOPM,
+		0, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch2", SND_SOC_NOPM,
+		1, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch3", SND_SOC_NOPM,
+		2, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch4", SND_SOC_NOPM,
+		3, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch5", SND_SOC_NOPM,
+		4, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_SINGLE_MULTI_EXT("EC Reference ChMixer Weights Ch6", SND_SOC_NOPM,
+		5, 16384, 0, PCM_FORMAT_MAX_NUM_CHANNEL_V8, NULL,
+		msm_ec_ref_chmixer_weights_put),
+	SOC_ENUM_EXT("AFE_LOOPBACK_TX Port", msm_route_ec_ref_rx_enum[0],
+		msm_routing_afe_lb_tx_port_get, msm_routing_afe_lb_tx_port_put),
+};
+
+static int msm_routing_ec_ref_rx_get(struct snd_kcontrol *kcontrol,
+				struct snd_ctl_elem_value *ucontrol)
+{
+	pr_debug("%s: ec_ref_rx  = %d", __func__, msm_route_ec_ref_rx);
+	mutex_lock(&routing_lock);
+	ucontrol->value.integer.value[0] = msm_route_ec_ref_rx;
+	mutex_unlock(&routing_lock);
+
+	return 0;
+}
+
+static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol,
+				struct snd_ctl_elem_value *ucontrol)
+{
+	int value = ucontrol->value.integer.value[0];
+	struct snd_soc_dapm_widget *widget =
+		snd_soc_dapm_kcontrol_widget(kcontrol);
+	struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
+	struct snd_soc_dapm_update *update = NULL;
+
+	mutex_lock(&routing_lock);
+	msm_ec_ref_port_id = get_ec_ref_port_id(value, &msm_route_ec_ref_rx);
+	adm_ec_ref_rx_id(msm_ec_ref_port_id);
+	pr_debug("%s: msm_route_ec_ref_rx = %d\n",
+	    __func__, msm_route_ec_ref_rx);
+	mutex_unlock(&routing_lock);
+
+	snd_soc_dapm_mux_update_power(widget->dapm, kcontrol,
+					msm_route_ec_ref_rx, e, update);
+	return 0;
+}
+
 static const struct snd_kcontrol_new ext_ec_ref_mux_ul1 =
 	SOC_DAPM_ENUM_EXT("AUDIO_REF_EC_UL1 MUX Mux",
 		msm_route_ec_ref_rx_enum[0],