diff options
author | Asish Bhattacharya <asishb@codeaurora.org> | 2014-06-18 15:53:26 +0530 |
---|---|---|
committer | Asish Bhattacharya <asishb@codeaurora.org> | 2014-06-18 18:05:25 +0530 |
commit | cd380a4ad6fcadf629e49cd981f4b7deb64ca207 (patch) | |
tree | 952d9a83ed2a6e7effbbb5fa1c56c8fea2c21865 /sound/soc | |
parent | f6c459f46a1eeb0d2f88c4c3e560752ee3cdaf27 (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.c | 34 |
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), }; |