Loading sound/soc/msm/msm8994.c +59 −1 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ struct msm8994_asoc_mach_data { }; static int slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_tx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int slim0_tx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int hdmi_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; Loading Loading @@ -799,6 +800,61 @@ static int msm_slim_0_rx_ch_put(struct snd_kcontrol *kcontrol, return 1; } static int slim0_tx_sample_rate_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int sample_rate_val = 0; switch (slim0_tx_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_tx_sample_rate = %d\n", __func__, slim0_tx_sample_rate); return 0; } static int slim0_tx_sample_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int rc = 0; pr_debug("%s: ucontrol value = %ld\n", __func__, ucontrol->value.integer.value[0]); switch (ucontrol->value.integer.value[0]) { case 2: slim0_tx_sample_rate = SAMPLING_RATE_192KHZ; break; case 1: slim0_tx_sample_rate = SAMPLING_RATE_96KHZ; break; case 0: slim0_tx_sample_rate = SAMPLING_RATE_48KHZ; break; default: rc = -EINVAL; pr_err("%s: invalid sample rate being passed\n", __func__); break; } pr_debug("%s: slim0_tx_sample_rate = %d\n", __func__, slim0_tx_sample_rate); return rc; } static int slim0_tx_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1548,7 +1604,7 @@ static int msm_slim_0_tx_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_tx_bit_format); rate->min = rate->max = 48000; rate->min = rate->max = slim0_tx_sample_rate; channels->min = channels->max = msm_slim_0_tx_ch; return 0; Loading Loading @@ -1662,6 +1718,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { hdmi_rx_sample_rate_get, hdmi_rx_sample_rate_put), SOC_ENUM_EXT("SLIM_0_TX Format", msm_snd_enum[4], slim0_tx_bit_format_get, slim0_tx_bit_format_put), SOC_ENUM_EXT("SLIM_0_TX SampleRate", msm_snd_enum[5], slim0_tx_sample_rate_get, slim0_tx_sample_rate_put), }; static bool msm8994_swap_gnd_mic(struct snd_soc_codec *codec) Loading Loading
sound/soc/msm/msm8994.c +59 −1 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ struct msm8994_asoc_mach_data { }; static int slim0_rx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_tx_sample_rate = SAMPLING_RATE_48KHZ; static int slim0_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int slim0_tx_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int hdmi_rx_bit_format = SNDRV_PCM_FORMAT_S16_LE; Loading Loading @@ -799,6 +800,61 @@ static int msm_slim_0_rx_ch_put(struct snd_kcontrol *kcontrol, return 1; } static int slim0_tx_sample_rate_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int sample_rate_val = 0; switch (slim0_tx_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_tx_sample_rate = %d\n", __func__, slim0_tx_sample_rate); return 0; } static int slim0_tx_sample_rate_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { int rc = 0; pr_debug("%s: ucontrol value = %ld\n", __func__, ucontrol->value.integer.value[0]); switch (ucontrol->value.integer.value[0]) { case 2: slim0_tx_sample_rate = SAMPLING_RATE_192KHZ; break; case 1: slim0_tx_sample_rate = SAMPLING_RATE_96KHZ; break; case 0: slim0_tx_sample_rate = SAMPLING_RATE_48KHZ; break; default: rc = -EINVAL; pr_err("%s: invalid sample rate being passed\n", __func__); break; } pr_debug("%s: slim0_tx_sample_rate = %d\n", __func__, slim0_tx_sample_rate); return rc; } static int slim0_tx_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1548,7 +1604,7 @@ static int msm_slim_0_tx_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_tx_bit_format); rate->min = rate->max = 48000; rate->min = rate->max = slim0_tx_sample_rate; channels->min = channels->max = msm_slim_0_tx_ch; return 0; Loading Loading @@ -1662,6 +1718,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { hdmi_rx_sample_rate_get, hdmi_rx_sample_rate_put), SOC_ENUM_EXT("SLIM_0_TX Format", msm_snd_enum[4], slim0_tx_bit_format_get, slim0_tx_bit_format_put), SOC_ENUM_EXT("SLIM_0_TX SampleRate", msm_snd_enum[5], slim0_tx_sample_rate_get, slim0_tx_sample_rate_put), }; static bool msm8994_swap_gnd_mic(struct snd_soc_codec *codec) Loading