summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-06-19 10:50:04 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-06-19 10:50:03 -0700
commit778c18c7637b0176fc13339c20e7277ade8182ba (patch)
tree7f3d082e4df604d9f0f34cffc326d39c62c45cc4 /sound/soc
parent7dce97c5d5185e099d679d4041e96ea1fccc29ac (diff)
parentcd380a4ad6fcadf629e49cd981f4b7deb64ca207 (diff)
Merge "ASoC: msm8x16: add mixer control to set BT sample rate"
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/msm/msm8x16.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/sound/soc/msm/msm8x16.c b/sound/soc/msm/msm8x16.c
index 98e9cc359a58..f622a5567cf6 100644
--- a/sound/soc/msm/msm8x16.c
+++ b/sound/soc/msm/msm8x16.c
@@ -661,12 +661,44 @@ static int msm_snd_enable_codec_ext_clk(struct snd_soc_codec *codec, int enable,
return ret;
}
+static int msm_btsco_rate_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ pr_debug("%s: msm_btsco_rate = %d", __func__, msm_btsco_rate);
+ ucontrol->value.integer.value[0] = msm_btsco_rate;
+ return 0;
+}
+
+static int msm_btsco_rate_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ switch (ucontrol->value.integer.value[0]) {
+ case 8000:
+ msm_btsco_rate = BTSCO_RATE_8KHZ;
+ break;
+ case 16000:
+ msm_btsco_rate = BTSCO_RATE_16KHZ;
+ break;
+ default:
+ msm_btsco_rate = BTSCO_RATE_8KHZ;
+ break;
+ }
+
+ pr_debug("%s: msm_btsco_rate = %d\n", __func__, msm_btsco_rate);
+ return 0;
+}
+
static const struct soc_enum msm_snd_enum[] = {
SOC_ENUM_SINGLE_EXT(2, rx_bit_format_text),
SOC_ENUM_SINGLE_EXT(2, ter_mi2s_tx_ch_text),
SOC_ENUM_SINGLE_EXT(2, loopback_mclk_text),
};
+static const char *const btsco_rate_text[] = {"8000", "16000"};
+static const struct soc_enum msm_btsco_enum[] = {
+ SOC_ENUM_SINGLE_EXT(2, btsco_rate_text),
+};
+
static const struct snd_kcontrol_new msm_snd_controls[] = {
SOC_ENUM_EXT("MI2S_RX Format", msm_snd_enum[0],
mi2s_rx_bit_format_get, mi2s_rx_bit_format_put),
@@ -676,6 +708,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = {
msm_pri_mi2s_rx_ch_get, msm_pri_mi2s_rx_ch_put),
SOC_ENUM_EXT("Loopback MCLK", msm_snd_enum[2],
loopback_mclk_get, loopback_mclk_put),
+ SOC_ENUM_EXT("Internal BTSCO SampleRate", msm_btsco_enum[0],
+ msm_btsco_rate_get, msm_btsco_rate_put),
};