Loading asoc/sm6150.c +136 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,12 @@ static char const *slim_sample_rate_text[] = {"KHZ_8", "KHZ_16", static char const *bt_sample_rate_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static char const *bt_sample_rate_rx_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static char const *bt_sample_rate_tx_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static const char *const usb_ch_text[] = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"}; Loading Loading @@ -532,6 +538,8 @@ static SOC_ENUM_SINGLE_EXT_DECL(slim_0_tx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(slim_5_rx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(slim_6_rx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate, bt_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate_rx, bt_sample_rate_rx_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate_tx, bt_sample_rate_tx_text); static SOC_ENUM_SINGLE_EXT_DECL(usb_rx_sample_rate, usb_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(usb_tx_sample_rate, usb_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(ext_disp_rx_sample_rate, Loading Loading @@ -1190,7 +1198,129 @@ static int msm_bt_sample_rate_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_bt_sample_rate_rx_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (slim_rx_cfg[SLIM_RX_7].sample_rate) { case SAMPLING_RATE_96KHZ: ucontrol->value.integer.value[0] = 5; break; case SAMPLING_RATE_88P2KHZ: ucontrol->value.integer.value[0] = 4; break; case SAMPLING_RATE_48KHZ: ucontrol->value.integer.value[0] = 3; break; case SAMPLING_RATE_44P1KHZ: ucontrol->value.integer.value[0] = 2; break; case SAMPLING_RATE_16KHZ: ucontrol->value.integer.value[0] = 1; break; case SAMPLING_RATE_8KHZ: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: sample rate rx = %d", __func__, slim_rx_cfg[SLIM_RX_7].sample_rate); return 0; } static int msm_bt_sample_rate_rx_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_16KHZ; break; case 2: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_44P1KHZ; break; case 3: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_48KHZ; break; case 4: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_88P2KHZ; break; case 5: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_8KHZ; break; } pr_debug("%s: sample rate: slim7_rx = %d, value = %d\n", __func__, slim_rx_cfg[SLIM_RX_7].sample_rate, ucontrol->value.enumerated.item[0]); return 0; } static int msm_bt_sample_rate_tx_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (slim_tx_cfg[SLIM_TX_7].sample_rate) { case SAMPLING_RATE_96KHZ: ucontrol->value.integer.value[0] = 5; break; case SAMPLING_RATE_88P2KHZ: ucontrol->value.integer.value[0] = 4; break; case SAMPLING_RATE_48KHZ: ucontrol->value.integer.value[0] = 3; break; case SAMPLING_RATE_44P1KHZ: ucontrol->value.integer.value[0] = 2; break; case SAMPLING_RATE_16KHZ: ucontrol->value.integer.value[0] = 1; break; case SAMPLING_RATE_8KHZ: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: sample rate tx = %d", __func__, slim_tx_cfg[SLIM_TX_7].sample_rate); return 0; } static int msm_bt_sample_rate_tx_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_16KHZ; break; case 2: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_44P1KHZ; break; case 3: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_48KHZ; break; case 4: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_88P2KHZ; break; case 5: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_8KHZ; break; } pr_debug("%s: sample rate: slim7_tx = %d, value = %d\n", __func__, slim_tx_cfg[SLIM_TX_7].sample_rate, ucontrol->value.enumerated.item[0]); return 0; } static int cdc_dma_get_port_idx(struct snd_kcontrol *kcontrol) { int idx = 0; Loading Loading @@ -3693,6 +3823,12 @@ static const struct snd_kcontrol_new msm_common_snd_controls[] = { SOC_ENUM_EXT("BT SampleRate", bt_sample_rate, msm_bt_sample_rate_get, msm_bt_sample_rate_put), SOC_ENUM_EXT("BT SampleRate RX", bt_sample_rate_rx, msm_bt_sample_rate_rx_get, msm_bt_sample_rate_rx_put), SOC_ENUM_EXT("BT SampleRate TX", bt_sample_rate_tx, msm_bt_sample_rate_tx_get, msm_bt_sample_rate_tx_put), SOC_ENUM_EXT("VI_FEED_TX Channels", vi_feed_tx_chs, msm_vi_feed_tx_ch_get, msm_vi_feed_tx_ch_put), }; Loading Loading
asoc/sm6150.c +136 −0 Original line number Diff line number Diff line Loading @@ -467,6 +467,12 @@ static char const *slim_sample_rate_text[] = {"KHZ_8", "KHZ_16", static char const *bt_sample_rate_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static char const *bt_sample_rate_rx_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static char const *bt_sample_rate_tx_text[] = {"KHZ_8", "KHZ_16", "KHZ_44P1", "KHZ_48", "KHZ_88P2", "KHZ_96"}; static const char *const usb_ch_text[] = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight"}; Loading Loading @@ -532,6 +538,8 @@ static SOC_ENUM_SINGLE_EXT_DECL(slim_0_tx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(slim_5_rx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(slim_6_rx_sample_rate, slim_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate, bt_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate_rx, bt_sample_rate_rx_text); static SOC_ENUM_SINGLE_EXT_DECL(bt_sample_rate_tx, bt_sample_rate_tx_text); static SOC_ENUM_SINGLE_EXT_DECL(usb_rx_sample_rate, usb_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(usb_tx_sample_rate, usb_sample_rate_text); static SOC_ENUM_SINGLE_EXT_DECL(ext_disp_rx_sample_rate, Loading Loading @@ -1190,7 +1198,129 @@ static int msm_bt_sample_rate_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_bt_sample_rate_rx_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (slim_rx_cfg[SLIM_RX_7].sample_rate) { case SAMPLING_RATE_96KHZ: ucontrol->value.integer.value[0] = 5; break; case SAMPLING_RATE_88P2KHZ: ucontrol->value.integer.value[0] = 4; break; case SAMPLING_RATE_48KHZ: ucontrol->value.integer.value[0] = 3; break; case SAMPLING_RATE_44P1KHZ: ucontrol->value.integer.value[0] = 2; break; case SAMPLING_RATE_16KHZ: ucontrol->value.integer.value[0] = 1; break; case SAMPLING_RATE_8KHZ: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: sample rate rx = %d", __func__, slim_rx_cfg[SLIM_RX_7].sample_rate); return 0; } static int msm_bt_sample_rate_rx_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_16KHZ; break; case 2: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_44P1KHZ; break; case 3: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_48KHZ; break; case 4: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_88P2KHZ; break; case 5: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim_rx_cfg[SLIM_RX_7].sample_rate = SAMPLING_RATE_8KHZ; break; } pr_debug("%s: sample rate: slim7_rx = %d, value = %d\n", __func__, slim_rx_cfg[SLIM_RX_7].sample_rate, ucontrol->value.enumerated.item[0]); return 0; } static int msm_bt_sample_rate_tx_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (slim_tx_cfg[SLIM_TX_7].sample_rate) { case SAMPLING_RATE_96KHZ: ucontrol->value.integer.value[0] = 5; break; case SAMPLING_RATE_88P2KHZ: ucontrol->value.integer.value[0] = 4; break; case SAMPLING_RATE_48KHZ: ucontrol->value.integer.value[0] = 3; break; case SAMPLING_RATE_44P1KHZ: ucontrol->value.integer.value[0] = 2; break; case SAMPLING_RATE_16KHZ: ucontrol->value.integer.value[0] = 1; break; case SAMPLING_RATE_8KHZ: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: sample rate tx = %d", __func__, slim_tx_cfg[SLIM_TX_7].sample_rate); return 0; } static int msm_bt_sample_rate_tx_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_16KHZ; break; case 2: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_44P1KHZ; break; case 3: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_48KHZ; break; case 4: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_88P2KHZ; break; case 5: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_96KHZ; break; case 0: default: slim_tx_cfg[SLIM_TX_7].sample_rate = SAMPLING_RATE_8KHZ; break; } pr_debug("%s: sample rate: slim7_tx = %d, value = %d\n", __func__, slim_tx_cfg[SLIM_TX_7].sample_rate, ucontrol->value.enumerated.item[0]); return 0; } static int cdc_dma_get_port_idx(struct snd_kcontrol *kcontrol) { int idx = 0; Loading Loading @@ -3693,6 +3823,12 @@ static const struct snd_kcontrol_new msm_common_snd_controls[] = { SOC_ENUM_EXT("BT SampleRate", bt_sample_rate, msm_bt_sample_rate_get, msm_bt_sample_rate_put), SOC_ENUM_EXT("BT SampleRate RX", bt_sample_rate_rx, msm_bt_sample_rate_rx_get, msm_bt_sample_rate_rx_put), SOC_ENUM_EXT("BT SampleRate TX", bt_sample_rate_tx, msm_bt_sample_rate_tx_get, msm_bt_sample_rate_tx_put), SOC_ENUM_EXT("VI_FEED_TX Channels", vi_feed_tx_chs, msm_vi_feed_tx_ch_get, msm_vi_feed_tx_ch_put), }; Loading