summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorAsish Bhattacharya <asishb@codeaurora.org>2014-06-18 15:53:26 +0530
committerAsish Bhattacharya <asishb@codeaurora.org>2014-06-18 18:05:25 +0530
commitcd380a4ad6fcadf629e49cd981f4b7deb64ca207 (patch)
tree952d9a83ed2a6e7effbbb5fa1c56c8fea2c21865 /sound/soc
parentf6c459f46a1eeb0d2f88c4c3e560752ee3cdaf27 (diff)
ASoC: msm8x16: add mixer control to set BT sample rate
The interface to set sample rate for BT is not available. Its set at 8KHz hardcoded and hence need mixer control to allow set from user space based on need. Change-Id: I8a522c9d96cff5a0433fce0a5b549b5b7f90a5fe CRs-Fixed: 681676 Signed-off-by: Asish Bhattacharya <asishb@codeaurora.org>
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),
};