Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91144712 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "asoc: swr-dmic: select correct port type for swr-dmic"

parents e2e4119e 23ee77a6
Loading
Loading
Loading
Loading
+13 −12
Original line number Original line Diff line number Diff line
@@ -67,7 +67,6 @@ struct swr_dmic_priv {
	struct device_node *wcd_handle;
	struct device_node *wcd_handle;
	bool is_wcd_supply;
	bool is_wcd_supply;
	int is_en_supply;
	int is_en_supply;
	int port_type;
	u8 tx_master_port_map[SWR_DMIC_MAX_PORTS];
	u8 tx_master_port_map[SWR_DMIC_MAX_PORTS];
	struct notifier_block nblock;
	struct notifier_block nblock;
};
};
@@ -141,7 +140,6 @@ static int swr_dmic_tx_master_port_get(struct snd_kcontrol *kcontrol,
		dev_dbg(component->dev, "%s: invalid port string\n", __func__);
		dev_dbg(component->dev, "%s: invalid port string\n", __func__);
		return ret;
		return ret;
	}
	}
	swr_dmic->port_type = slave_port_idx;


	ucontrol->value.integer.value[0] =
	ucontrol->value.integer.value[0] =
			swr_dmic_get_master_port_val(
			swr_dmic_get_master_port_val(
@@ -168,7 +166,6 @@ static int swr_dmic_tx_master_port_put(struct snd_kcontrol *kcontrol,
		dev_dbg(component->dev, "%s: invalid port string\n", __func__);
		dev_dbg(component->dev, "%s: invalid port string\n", __func__);
		return ret;
		return ret;
	}
	}
	swr_dmic->port_type = slave_port_idx;


	swr_dmic->tx_master_port_map[slave_port_idx] =
	swr_dmic->tx_master_port_map[slave_port_idx] =
		swr_master_channel_map[ucontrol->value.enumerated.item[0]];
		swr_master_channel_map[ucontrol->value.enumerated.item[0]];
@@ -188,9 +185,9 @@ static int swr_dmic_port_enable(struct snd_soc_dapm_widget *w,
	struct swr_dmic_priv *swr_dmic =
	struct swr_dmic_priv *swr_dmic =
			snd_soc_component_get_drvdata(component);
			snd_soc_component_get_drvdata(component);


	u8 ch_mask = 0x01; // only DpnChannelEN1 register is available
	u8 ch_mask = 0x01; /* only DpnChannelEN1 register is available */
	u8 num_port = 1;
	u8 num_port = 1;
	u8 port_id = swr_dmic->port_type;
	u8 port_id = w->shift;
	u8 port_type = swr_dmic->tx_master_port_map[port_id];
	u8 port_type = swr_dmic->tx_master_port_map[port_id];


	switch (event) {
	switch (event) {
@@ -217,17 +214,17 @@ static int dmic_swr_ctrl(struct snd_soc_dapm_widget *w,
			snd_soc_component_get_drvdata(component);
			snd_soc_component_get_drvdata(component);


	u8 num_ch = 1;
	u8 num_ch = 1;
	u8 ch_mask = 0x01; // only DpnChannelEN1 register is available
	u8 ch_mask = 0x01; /* only DpnChannelEN1 register is available */
	u32 ch_rate = SWR_CLK_RATE_4P8MHZ;
	u32 ch_rate = SWR_CLK_RATE_4P8MHZ;
	u8 num_port = 1;
	u8 num_port = 1;
	u8 port_type = 0;
	u8 port_type = 0;
	u8 port_id = swr_dmic->port_type;
	u8 port_id = w->shift;


	/*
	/*
	 * Port 1 is high quality / 2.4 or 3.072 Mbps
	 * Port 1 is high quality / 2.4 or 3.072 Mbps
	 * Port 2 is listen low power / 0.6 or 0.768 Mbps
	 * Port 2 is listen low power / 0.6 or 0.768 Mbps
	 */
	 */
	if(swr_dmic->port_type == SWR_DMIC_HIFI_PORT)
	if(port_id == SWR_DMIC_HIFI_PORT)
		ch_rate = SWR_CLK_RATE_2P4MHZ;
		ch_rate = SWR_CLK_RATE_2P4MHZ;
	else
	else
		ch_rate = SWR_CLK_RATE_0P6MHZ;
		ch_rate = SWR_CLK_RATE_0P6MHZ;
@@ -279,22 +276,26 @@ static const struct snd_kcontrol_new va_dmic_switch[] = {
};
};


static const struct snd_soc_dapm_widget swr_dmic_dapm_widgets[] = {
static const struct snd_soc_dapm_widget swr_dmic_dapm_widgets[] = {
	SND_SOC_DAPM_MIXER_E("SWR_DMIC_MIXER", SND_SOC_NOPM, 0, 0,
	SND_SOC_DAPM_MIXER_E("SWR_DMIC_MIXER", SND_SOC_NOPM,
			SWR_DMIC_HIFI_PORT, 0,
			dmic_switch, ARRAY_SIZE(dmic_switch), dmic_swr_ctrl,
			dmic_switch, ARRAY_SIZE(dmic_switch), dmic_swr_ctrl,
			SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
			SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),


	SND_SOC_DAPM_MIXER_E("SWR_DMIC_VA_MIXER", SND_SOC_NOPM, 0, 0,
	SND_SOC_DAPM_MIXER_E("SWR_DMIC_VA_MIXER", SND_SOC_NOPM,
			SWR_DMIC_LP_PORT, 0,
			va_dmic_switch, ARRAY_SIZE(va_dmic_switch), dmic_swr_ctrl,
			va_dmic_switch, ARRAY_SIZE(va_dmic_switch), dmic_swr_ctrl,
			SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
			SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),


	SND_SOC_DAPM_INPUT("SWR_DMIC"),
	SND_SOC_DAPM_INPUT("SWR_DMIC"),
	SND_SOC_DAPM_INPUT("VA_SWR_DMIC"),
	SND_SOC_DAPM_INPUT("VA_SWR_DMIC"),


	SND_SOC_DAPM_OUT_DRV_E("SMIC_PORT_EN", SND_SOC_NOPM, 0, 0, NULL, 0,
	SND_SOC_DAPM_OUT_DRV_E("SMIC_PORT_EN", SND_SOC_NOPM,
				SWR_DMIC_HIFI_PORT, 0, NULL, 0,
				swr_dmic_port_enable,
				swr_dmic_port_enable,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),


	SND_SOC_DAPM_OUT_DRV_E("SMIC_VA_PORT_EN", SND_SOC_NOPM, 0, 0, NULL, 0,
	SND_SOC_DAPM_OUT_DRV_E("SMIC_VA_PORT_EN", SND_SOC_NOPM,
				SWR_DMIC_LP_PORT, 0, NULL, 0,
				swr_dmic_port_enable,
				swr_dmic_port_enable,
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
				SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),