Loading sound/soc/msm/msm8x16.c +39 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ static int msm_btsco_rate = BTSCO_RATE_8KHZ; static int msm_btsco_ch = 1; static int msm_ter_mi2s_tx_ch = 1; static int msm_pri_mi2s_rx_ch = 1; static int msm_proxy_rx_ch = 2; Loading Loading @@ -129,6 +130,23 @@ static const struct snd_soc_dapm_widget msm8x16_dapm_widgets[] = { static char const *rx_bit_format_text[] = {"S16_LE", "S24_LE"}; static const char *const ter_mi2s_tx_ch_text[] = {"One", "Two"}; static int msm_pri_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params) { struct snd_interval *rate = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); struct snd_interval *channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); pr_debug("%s: Number of channels = %d\n", __func__, msm_pri_mi2s_rx_ch); rate->min = rate->max = 48000; channels->min = channels->max = msm_pri_mi2s_rx_ch; return 0; } static int msm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params) { Loading Loading @@ -239,6 +257,24 @@ static int msm_tx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, return 0; } static int msm_pri_mi2s_rx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: msm_pri_mi2s_rx_ch = %d\n", __func__, msm_pri_mi2s_rx_ch); ucontrol->value.integer.value[0] = msm_pri_mi2s_rx_ch - 1; return 0; } static int msm_pri_mi2s_rx_ch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { msm_pri_mi2s_rx_ch = ucontrol->value.integer.value[0] + 1; pr_debug("%s: msm_pri_mi2s_rx_ch = %d\n", __func__, msm_pri_mi2s_rx_ch); return 1; } static int msm_ter_mi2s_tx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -360,6 +396,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { mi2s_rx_bit_format_get, mi2s_rx_bit_format_put), SOC_ENUM_EXT("MI2S_TX Channels", msm_snd_enum[1], msm_ter_mi2s_tx_ch_get, msm_ter_mi2s_tx_ch_put), SOC_ENUM_EXT("MI2S_RX Channels", msm_snd_enum[1], msm_pri_mi2s_rx_ch_get, msm_pri_mi2s_rx_ch_put), }; Loading Loading @@ -793,7 +831,7 @@ static struct snd_soc_dai_link msm8x16_dai[] = { .no_pcm = 1, .be_id = MSM_BACKEND_DAI_PRI_MI2S_RX, .init = &msm_audrx_init, .be_hw_params_fixup = msm_be_hw_params_fixup, .be_hw_params_fixup = msm_pri_rx_be_hw_params_fixup, .ops = &msm8x16_mi2s_be_ops, .ignore_suspend = 1, }, Loading Loading
sound/soc/msm/msm8x16.c +39 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ static int msm_btsco_rate = BTSCO_RATE_8KHZ; static int msm_btsco_ch = 1; static int msm_ter_mi2s_tx_ch = 1; static int msm_pri_mi2s_rx_ch = 1; static int msm_proxy_rx_ch = 2; Loading Loading @@ -129,6 +130,23 @@ static const struct snd_soc_dapm_widget msm8x16_dapm_widgets[] = { static char const *rx_bit_format_text[] = {"S16_LE", "S24_LE"}; static const char *const ter_mi2s_tx_ch_text[] = {"One", "Two"}; static int msm_pri_rx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params) { struct snd_interval *rate = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); struct snd_interval *channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); pr_debug("%s: Number of channels = %d\n", __func__, msm_pri_mi2s_rx_ch); rate->min = rate->max = 48000; channels->min = channels->max = msm_pri_mi2s_rx_ch; return 0; } static int msm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_params *params) { Loading Loading @@ -239,6 +257,24 @@ static int msm_tx_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, return 0; } static int msm_pri_mi2s_rx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: msm_pri_mi2s_rx_ch = %d\n", __func__, msm_pri_mi2s_rx_ch); ucontrol->value.integer.value[0] = msm_pri_mi2s_rx_ch - 1; return 0; } static int msm_pri_mi2s_rx_ch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { msm_pri_mi2s_rx_ch = ucontrol->value.integer.value[0] + 1; pr_debug("%s: msm_pri_mi2s_rx_ch = %d\n", __func__, msm_pri_mi2s_rx_ch); return 1; } static int msm_ter_mi2s_tx_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -360,6 +396,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { mi2s_rx_bit_format_get, mi2s_rx_bit_format_put), SOC_ENUM_EXT("MI2S_TX Channels", msm_snd_enum[1], msm_ter_mi2s_tx_ch_get, msm_ter_mi2s_tx_ch_put), SOC_ENUM_EXT("MI2S_RX Channels", msm_snd_enum[1], msm_pri_mi2s_rx_ch_get, msm_pri_mi2s_rx_ch_put), }; Loading Loading @@ -793,7 +831,7 @@ static struct snd_soc_dai_link msm8x16_dai[] = { .no_pcm = 1, .be_id = MSM_BACKEND_DAI_PRI_MI2S_RX, .init = &msm_audrx_init, .be_hw_params_fixup = msm_be_hw_params_fixup, .be_hw_params_fixup = msm_pri_rx_be_hw_params_fixup, .ops = &msm8x16_mi2s_be_ops, .ignore_suspend = 1, }, Loading