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

Commit 79f2f5ea authored by Patrick Lai's avatar Patrick Lai Committed by Banajit Goswami
Browse files

ASoC: msm: msm8994: add mixer command for SLIM0 TX bit format



As part of effort to support 24-bit recording on MSM8994, add
mixer control so user-space can choose bit format of SLIMBUS_0_TX
back-end through mixer control.

Change-Id: I9395ce4bfd56a3a48c8a86ab403b6f433ef0e626
Signed-off-by: default avatarPatrick Lai <plai@codeaurora.org>
parent c76fd0cf
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -799,6 +799,50 @@ static int msm_slim_0_rx_ch_put(struct snd_kcontrol *kcontrol,
	return 1;
}

static int slim0_tx_bit_format_get(struct snd_kcontrol *kcontrol,
	struct snd_ctl_elem_value *ucontrol)
{

	switch (slim0_tx_bit_format) {
	case SNDRV_PCM_FORMAT_S24_LE:
		ucontrol->value.integer.value[0] = 1;
		break;

	case SNDRV_PCM_FORMAT_S16_LE:
	default:
		ucontrol->value.integer.value[0] = 0;
		break;
	}

	pr_debug("%s: slim0_tx_bit_format = %d, ucontrol value = %ld\n",
			 __func__, slim0_tx_bit_format,
			ucontrol->value.integer.value[0]);

	return 0;
}

static int slim0_tx_bit_format_put(struct snd_kcontrol *kcontrol,
				   struct snd_ctl_elem_value *ucontrol)
{
	int rc = 0;

	switch (ucontrol->value.integer.value[0]) {
	case 1:
		slim0_tx_bit_format = SNDRV_PCM_FORMAT_S24_LE;
		break;
	case 0:
		slim0_tx_bit_format = SNDRV_PCM_FORMAT_S16_LE;
		break;
	default:
		pr_err("%s: invalid value %ld\n", __func__,
		       ucontrol->value.integer.value[0]);
		rc = -EINVAL;
		break;
	}

	return rc;
}

static int msm_slim_0_tx_ch_get(struct snd_kcontrol *kcontrol,
	struct snd_ctl_elem_value *ucontrol)
{
@@ -1616,6 +1660,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = {
		     msm_btsco_rate_get, msm_btsco_rate_put),
	SOC_ENUM_EXT("HDMI_RX SampleRate", msm_snd_enum[7],
			hdmi_rx_sample_rate_get, hdmi_rx_sample_rate_put),
	SOC_ENUM_EXT("SLIM_0_TX Format", msm_snd_enum[4],
			slim0_tx_bit_format_get, slim0_tx_bit_format_put),
};

static bool msm8994_swap_gnd_mic(struct snd_soc_codec *codec)