ASoC: msm: Change channel mode mixer control to enumeration
Change existing mixer control to enumeration type so range
is fixed and input value is more readable.
Signed-off-by: Patrick Lai <plai@codeaurora.org>
diff --git a/sound/soc/msm/msm8960.c b/sound/soc/msm/msm8960.c
index dc108ce..bffd2ae 100644
--- a/sound/soc/msm/msm8960.c
+++ b/sound/soc/msm/msm8960.c
@@ -235,25 +235,30 @@
};
static const char *spk_function[] = {"Off", "On"};
+static const char *slim0_rx_ch_text[] = {"One", "Two"};
+static const char *slim0_tx_ch_text[] = {"One", "Two", "Three", "Four"};
+
static const struct soc_enum msm8960_enum[] = {
SOC_ENUM_SINGLE_EXT(2, spk_function),
+ SOC_ENUM_SINGLE_EXT(2, slim0_rx_ch_text),
+ SOC_ENUM_SINGLE_EXT(4, slim0_tx_ch_text),
};
static int msm8960_slim_0_rx_ch_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- pr_debug("%s: msm8960_slim_0_rx_ch = %d", __func__,
+ pr_debug("%s: msm8960_slim_0_rx_ch = %d\n", __func__,
msm8960_slim_0_rx_ch);
- ucontrol->value.integer.value[0] = msm8960_slim_0_rx_ch;
+ ucontrol->value.integer.value[0] = msm8960_slim_0_rx_ch - 1;
return 0;
}
static int msm8960_slim_0_rx_ch_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- msm8960_slim_0_rx_ch = ucontrol->value.integer.value[0];
+ msm8960_slim_0_rx_ch = ucontrol->value.integer.value[0] + 1;
- pr_debug("%s: msm8960_slim_0_tx_ch = %d\n", __func__,
+ pr_debug("%s: msm8960_slim_0_rx_ch = %d\n", __func__,
msm8960_slim_0_rx_ch);
return 1;
}
@@ -261,16 +266,16 @@
static int msm8960_slim_0_tx_ch_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- pr_debug("%s: msm8960_slim_0_tx_ch = %d", __func__,
+ pr_debug("%s: msm8960_slim_0_tx_ch = %d\n", __func__,
msm8960_slim_0_tx_ch);
- ucontrol->value.integer.value[0] = msm8960_slim_0_tx_ch;
+ ucontrol->value.integer.value[0] = msm8960_slim_0_tx_ch - 1;
return 0;
}
static int msm8960_slim_0_tx_ch_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- msm8960_slim_0_tx_ch = ucontrol->value.integer.value[0];
+ msm8960_slim_0_tx_ch = ucontrol->value.integer.value[0] + 1;
pr_debug("%s: msm8960_slim_0_tx_ch = %d\n", __func__,
msm8960_slim_0_tx_ch);
@@ -281,12 +286,10 @@
static const struct snd_kcontrol_new tabla_msm8960_controls[] = {
SOC_ENUM_EXT("Speaker Function", msm8960_enum[0], msm8960_get_spk,
msm8960_set_spk),
- SOC_SINGLE_EXT("SLIM_0_RX Channels", 0, 0,
- msm8960_SLIM_0_RX_MAX_CHANNELS, 0,
- msm8960_slim_0_rx_ch_get, msm8960_slim_0_rx_ch_put),
- SOC_SINGLE_EXT("SLIM_0_TX Channels", 0, 0,
- msm8960_SLIM_0_TX_MAX_CHANNELS, 0,
- msm8960_slim_0_tx_ch_get, msm8960_slim_0_tx_ch_put),
+ SOC_ENUM_EXT("SLIM_0_RX Channels", msm8960_enum[1],
+ msm8960_slim_0_rx_ch_get, msm8960_slim_0_rx_ch_put),
+ SOC_ENUM_EXT("SLIM_0_TX Channels", msm8960_enum[2],
+ msm8960_slim_0_tx_ch_get, msm8960_slim_0_tx_ch_put),
};
static int msm8960_audrx_init(struct snd_soc_pcm_runtime *rtd)