Loading sound/soc/msm/msm8x16.c +34 −0 Original line number Diff line number Diff line Loading @@ -672,12 +672,44 @@ static int msm8x16_enable_extcodec_ext_clk(struct snd_soc_codec *codec, 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), Loading @@ -687,6 +719,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), }; Loading Loading
sound/soc/msm/msm8x16.c +34 −0 Original line number Diff line number Diff line Loading @@ -672,12 +672,44 @@ static int msm8x16_enable_extcodec_ext_clk(struct snd_soc_codec *codec, 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), Loading @@ -687,6 +719,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), }; Loading