Loading sound/soc/msm/msm8226.c +66 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ #include "../codecs/wcd9xxx-common.h" #include "../codecs/wcd9306.h" #define SAMPLING_RATE_48KHZ 48000 #define SAMPLING_RATE_96KHZ 96000 #define SAMPLING_RATE_192KHZ 192000 #define DRV_NAME "msm8226-asoc-tapan" #define MSM_SLIM_0_RX_MAX_CHANNELS 2 Loading Loading @@ -154,6 +158,8 @@ static int clk_users; static int ext_spk_amp_gpio = -1; static int vdd_spkr_gpio = -1; static int msm_proxy_rx_ch = 2; static int slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static inline int param_is_mask(int p) Loading Loading @@ -388,6 +394,9 @@ static const char *const slim0_rx_ch_text[] = {"One", "Two"}; static const char *const slim0_tx_ch_text[] = {"One", "Two", "Three", "Four"}; static const char *const proxy_rx_ch_text[] = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"}; static char const *rx_bit_format_text[] = {"S16_LE", "S24_LE"}; static char const *slim0_rx_sample_rate_text[] = {"KHZ_48", "KHZ_96", "KHZ_192"}; static const struct soc_enum msm_enum[] = { SOC_ENUM_SINGLE_EXT(2, slim0_rx_ch_text), Loading @@ -399,6 +408,58 @@ static const struct soc_enum msm_btsco_enum[] = { SOC_ENUM_SINGLE_EXT(2, btsco_rate_text), }; static int slim0_rx_sample_rate_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int sample_rate_val = 0; switch (slim0_rx_sample_rate) { case SAMPLING_RATE_192KHZ: sample_rate_val = 2; break; case SAMPLING_RATE_96KHZ: sample_rate_val = 1; break; case SAMPLING_RATE_48KHZ: default: sample_rate_val = 0; break; } ucontrol->value.integer.value[0] = sample_rate_val; pr_debug("%s: slim0_rx_sample_rate = %d\n", __func__, slim0_rx_sample_rate); return 0; } static int slim0_rx_sample_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: ucontrol value = %ld\n", __func__, ucontrol->value.integer.value[0]); switch (ucontrol->value.integer.value[0]) { case 2: slim0_rx_sample_rate = SAMPLING_RATE_192KHZ; break; case 1: slim0_rx_sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; break; } pr_debug("%s: slim0_rx_sample_rate = %d\n", __func__, slim0_rx_sample_rate); return 0; } static int msm_slim_0_rx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -741,8 +802,7 @@ static int msm_slim_0_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, pr_debug("%s()\n", __func__); param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, slim0_rx_bit_format); rate->min = rate->max = 48000; rate->min = rate->max = slim0_rx_sample_rate; channels->min = channels->max = msm_slim_0_rx_ch; return 0; Loading Loading @@ -783,6 +843,8 @@ static const struct soc_enum msm_snd_enum[] = { SOC_ENUM_SINGLE_EXT(2, slim0_rx_ch_text), SOC_ENUM_SINGLE_EXT(4, slim0_tx_ch_text), SOC_ENUM_SINGLE_EXT(8, proxy_rx_ch_text), SOC_ENUM_SINGLE_EXT(2, rx_bit_format_text), SOC_ENUM_SINGLE_EXT(3, slim0_rx_sample_rate_text), }; static const struct snd_kcontrol_new msm_snd_controls[] = { Loading @@ -798,7 +860,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { msm_proxy_rx_ch_get, msm_proxy_rx_ch_put), SOC_ENUM_EXT("SLIM_0_RX Format", msm_snd_enum[3], slim0_rx_bit_format_get, slim0_rx_bit_format_put), SOC_ENUM_EXT("SLIM_0_RX SampleRate", msm_snd_enum[4], slim0_rx_sample_rate_get, slim0_rx_sample_rate_put), }; static int msm_afe_set_config(struct snd_soc_codec *codec) Loading Loading
sound/soc/msm/msm8226.c +66 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ #include "../codecs/wcd9xxx-common.h" #include "../codecs/wcd9306.h" #define SAMPLING_RATE_48KHZ 48000 #define SAMPLING_RATE_96KHZ 96000 #define SAMPLING_RATE_192KHZ 192000 #define DRV_NAME "msm8226-asoc-tapan" #define MSM_SLIM_0_RX_MAX_CHANNELS 2 Loading Loading @@ -154,6 +158,8 @@ static int clk_users; static int ext_spk_amp_gpio = -1; static int vdd_spkr_gpio = -1; static int msm_proxy_rx_ch = 2; static int slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static inline int param_is_mask(int p) Loading Loading @@ -388,6 +394,9 @@ static const char *const slim0_rx_ch_text[] = {"One", "Two"}; static const char *const slim0_tx_ch_text[] = {"One", "Two", "Three", "Four"}; static const char *const proxy_rx_ch_text[] = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"}; static char const *rx_bit_format_text[] = {"S16_LE", "S24_LE"}; static char const *slim0_rx_sample_rate_text[] = {"KHZ_48", "KHZ_96", "KHZ_192"}; static const struct soc_enum msm_enum[] = { SOC_ENUM_SINGLE_EXT(2, slim0_rx_ch_text), Loading @@ -399,6 +408,58 @@ static const struct soc_enum msm_btsco_enum[] = { SOC_ENUM_SINGLE_EXT(2, btsco_rate_text), }; static int slim0_rx_sample_rate_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int sample_rate_val = 0; switch (slim0_rx_sample_rate) { case SAMPLING_RATE_192KHZ: sample_rate_val = 2; break; case SAMPLING_RATE_96KHZ: sample_rate_val = 1; break; case SAMPLING_RATE_48KHZ: default: sample_rate_val = 0; break; } ucontrol->value.integer.value[0] = sample_rate_val; pr_debug("%s: slim0_rx_sample_rate = %d\n", __func__, slim0_rx_sample_rate); return 0; } static int slim0_rx_sample_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: ucontrol value = %ld\n", __func__, ucontrol->value.integer.value[0]); switch (ucontrol->value.integer.value[0]) { case 2: slim0_rx_sample_rate = SAMPLING_RATE_192KHZ; break; case 1: slim0_rx_sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; break; } pr_debug("%s: slim0_rx_sample_rate = %d\n", __func__, slim0_rx_sample_rate); return 0; } static int msm_slim_0_rx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -741,8 +802,7 @@ static int msm_slim_0_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, pr_debug("%s()\n", __func__); param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, slim0_rx_bit_format); rate->min = rate->max = 48000; rate->min = rate->max = slim0_rx_sample_rate; channels->min = channels->max = msm_slim_0_rx_ch; return 0; Loading Loading @@ -783,6 +843,8 @@ static const struct soc_enum msm_snd_enum[] = { SOC_ENUM_SINGLE_EXT(2, slim0_rx_ch_text), SOC_ENUM_SINGLE_EXT(4, slim0_tx_ch_text), SOC_ENUM_SINGLE_EXT(8, proxy_rx_ch_text), SOC_ENUM_SINGLE_EXT(2, rx_bit_format_text), SOC_ENUM_SINGLE_EXT(3, slim0_rx_sample_rate_text), }; static const struct snd_kcontrol_new msm_snd_controls[] = { Loading @@ -798,7 +860,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { msm_proxy_rx_ch_get, msm_proxy_rx_ch_put), SOC_ENUM_EXT("SLIM_0_RX Format", msm_snd_enum[3], slim0_rx_bit_format_get, slim0_rx_bit_format_put), SOC_ENUM_EXT("SLIM_0_RX SampleRate", msm_snd_enum[4], slim0_rx_sample_rate_get, slim0_rx_sample_rate_put), }; static int msm_afe_set_config(struct snd_soc_codec *codec) Loading