Loading include/sound/q6afe-v2.h +2 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,8 @@ enum afe_mad_type { MAD_HW_NONE = 0x00, MAD_HW_AUDIO = 0x01, MAD_HW_BEACON = 0x02, MAD_HW_ULTRASOUND = 0x04 MAD_HW_ULTRASOUND = 0x04, MAD_SW_AUDIO = 0x05, }; struct afe_audio_buffer { Loading include/sound/q6lsm.h +2 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ struct lsm_client { uint16_t user_sensitivity; uint16_t kw_sensitivity; bool started; dma_addr_t lsm_cal_phy_addr; uint32_t lsm_cal_size; }; struct lsm_stream_cmd_open_tx { Loading Loading @@ -126,7 +128,6 @@ int q6lsm_stop(struct lsm_client *client, bool wait); int q6lsm_snd_model_buf_alloc(struct lsm_client *client, size_t len); int q6lsm_snd_model_buf_free(struct lsm_client *client); int q6lsm_close(struct lsm_client *client); int q6lsm_unmap_cal_blocks(void); int q6lsm_register_sound_model(struct lsm_client *client, enum lsm_detection_mode mode, u16 minkeyword, u16 minuser, bool detectfailure); Loading sound/soc/msm/msm-dai-fe.c +120 −15 Original line number Diff line number Diff line Loading @@ -749,21 +749,6 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .name = "DTMF_RX_HOSTLESS", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen Audio Service Capture", .aif_name = "LSM_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM", .probe = fe_dai_probe, }, { .playback = { .stream_name = "VOLTE_STUB Playback", Loading Loading @@ -865,6 +850,126 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .ops = &msm_fe_dai_ops, .name = "QCHAT", }, { .capture = { .stream_name = "Listen 1 Audio Service Capture", .aif_name = "LSM1_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM1", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 2 Audio Service Capture", .aif_name = "LSM2_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM2", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 3 Audio Service Capture", .aif_name = "LSM3_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM3", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 4 Audio Service Capture", .aif_name = "LSM4_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM4", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 5 Audio Service Capture", .aif_name = "LSM5_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM5", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 6 Audio Service Capture", .aif_name = "LSM6_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM6", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 7 Audio Service Capture", .aif_name = "LSM7_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM7", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 8 Audio Service Capture", .aif_name = "LSM8_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM8", .probe = fe_dai_probe, }, }; static int msm_fe_dai_dev_probe(struct platform_device *pdev) Loading sound/soc/msm/qdsp6v2/audio_acdb.c +0 −7 Original line number Diff line number Diff line Loading @@ -1151,13 +1151,6 @@ static int unmap_cal_tables(void) result = result2; } result2 = q6lsm_unmap_cal_blocks(); if (result2 < 0) { pr_err("%s: lsm_unmap_cal_blocks failed, err = %d\n", __func__, result2); result = result2; } result2 = q6asm_unmap_cal_blocks(); if (result2 < 0) { pr_err("%s: asm_unmap_cal_blocks failed, err = %d\n", Loading sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +124 −6 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ struct msm_pcm_routing_fdai_data { #define INVALID_SESSION -1 #define SESSION_TYPE_RX 0 #define SESSION_TYPE_TX 1 #define MAX_LSM_SESSIONS 8 #define EC_PORT_ID_PRIMARY_MI2S_TX 1 #define EC_PORT_ID_SECONDARY_MI2S_TX 2 Loading @@ -80,7 +81,8 @@ enum { MADNONE, MADAUDIO, MADBEACON, MADULTRASOUND MADULTRASOUND, MADSWAUDIO, }; #define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX" Loading Loading @@ -1035,6 +1037,9 @@ static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol, case MAD_HW_ULTRASOUND: ucontrol->value.integer.value[0] = MADULTRASOUND; break; case MAD_SW_AUDIO: ucontrol->value.integer.value[0] = MADSWAUDIO; break; default: WARN(1, "Unknown\n"); return -EINVAL; Loading Loading @@ -1074,6 +1079,9 @@ static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol, case MADULTRASOUND: mad_type = MAD_HW_ULTRASOUND; break; case MADSWAUDIO: mad_type = MAD_SW_AUDIO; break; default: WARN(1, "Unknown\n"); return -EINVAL; Loading Loading @@ -2859,13 +2867,47 @@ static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls = static const struct soc_enum lsm_mux_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(mad_audio_mux_text), mad_audio_mux_text); static const struct snd_kcontrol_new lsm_mux = static const struct snd_kcontrol_new lsm1_mux = SOC_DAPM_ENUM_EXT("LSM1 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm2_mux = SOC_DAPM_ENUM_EXT("LSM2 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm3_mux = SOC_DAPM_ENUM_EXT("LSM3 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm4_mux = SOC_DAPM_ENUM_EXT("LSM4 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm5_mux = SOC_DAPM_ENUM_EXT("LSM5 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm6_mux = SOC_DAPM_ENUM_EXT("LSM6 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm7_mux = SOC_DAPM_ENUM_EXT("LSM7 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm8_mux = SOC_DAPM_ENUM_EXT("LSM8 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const char * const lsm_func_text[] = { "None", "AUDIO", "BEACON", "ULTRASOUND" "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO", }; static const struct soc_enum lsm_func_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text); Loading Loading @@ -3477,7 +3519,21 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback", 0, 0, 0, 0), /* LSM */ SND_SOC_DAPM_AIF_OUT("LSM_UL_HL", "Listen Audio Service Capture", SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0), Loading Loading @@ -3571,7 +3627,14 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { &pcm_rx_switch_mixer_controls), /* Mux Definitions */ SND_SOC_DAPM_MUX("LSM1 MUX", SND_SOC_NOPM, 0, 0, &lsm_mux), SND_SOC_DAPM_MUX("LSM1 MUX", SND_SOC_NOPM, 0, 0, &lsm1_mux), SND_SOC_DAPM_MUX("LSM2 MUX", SND_SOC_NOPM, 0, 0, &lsm2_mux), SND_SOC_DAPM_MUX("LSM3 MUX", SND_SOC_NOPM, 0, 0, &lsm3_mux), SND_SOC_DAPM_MUX("LSM4 MUX", SND_SOC_NOPM, 0, 0, &lsm4_mux), SND_SOC_DAPM_MUX("LSM5 MUX", SND_SOC_NOPM, 0, 0, &lsm5_mux), SND_SOC_DAPM_MUX("LSM6 MUX", SND_SOC_NOPM, 0, 0, &lsm6_mux), SND_SOC_DAPM_MUX("LSM7 MUX", SND_SOC_NOPM, 0, 0, &lsm7_mux), SND_SOC_DAPM_MUX("LSM8 MUX", SND_SOC_NOPM, 0, 0, &lsm8_mux), SND_SOC_DAPM_MUX("SLIM_0_RX AANC MUX", SND_SOC_NOPM, 0, 0, aanc_slim_0_rx_mux), Loading Loading @@ -4138,7 +4201,62 @@ static const struct snd_soc_dapm_route intercon[] = { {"LSM1 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM1 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM1 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM_UL_HL", NULL, "LSM1 MUX"}, {"LSM1_UL_HL", NULL, "LSM1 MUX"}, {"LSM2 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM2 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM2 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM2 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM2 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM2_UL_HL", NULL, "LSM2 MUX"}, {"LSM3 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM3 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM3 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM3 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM3 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM3_UL_HL", NULL, "LSM3 MUX"}, {"LSM4 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM4 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM4 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM4 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM4 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM4_UL_HL", NULL, "LSM4 MUX"}, {"LSM5 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM5 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM5 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM5 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM5 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM5_UL_HL", NULL, "LSM5 MUX"}, {"LSM6 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM6 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM6 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM6 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM6 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM6_UL_HL", NULL, "LSM6 MUX"}, {"LSM7 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM7 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM7 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM7 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM7 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM7_UL_HL", NULL, "LSM7 MUX"}, {"LSM8 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM8 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM8 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM8 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM8 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM8_UL_HL", NULL, "LSM8 MUX"}, {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"}, {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"}, Loading Loading
include/sound/q6afe-v2.h +2 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,8 @@ enum afe_mad_type { MAD_HW_NONE = 0x00, MAD_HW_AUDIO = 0x01, MAD_HW_BEACON = 0x02, MAD_HW_ULTRASOUND = 0x04 MAD_HW_ULTRASOUND = 0x04, MAD_SW_AUDIO = 0x05, }; struct afe_audio_buffer { Loading
include/sound/q6lsm.h +2 −1 Original line number Diff line number Diff line Loading @@ -47,6 +47,8 @@ struct lsm_client { uint16_t user_sensitivity; uint16_t kw_sensitivity; bool started; dma_addr_t lsm_cal_phy_addr; uint32_t lsm_cal_size; }; struct lsm_stream_cmd_open_tx { Loading Loading @@ -126,7 +128,6 @@ int q6lsm_stop(struct lsm_client *client, bool wait); int q6lsm_snd_model_buf_alloc(struct lsm_client *client, size_t len); int q6lsm_snd_model_buf_free(struct lsm_client *client); int q6lsm_close(struct lsm_client *client); int q6lsm_unmap_cal_blocks(void); int q6lsm_register_sound_model(struct lsm_client *client, enum lsm_detection_mode mode, u16 minkeyword, u16 minuser, bool detectfailure); Loading
sound/soc/msm/msm-dai-fe.c +120 −15 Original line number Diff line number Diff line Loading @@ -749,21 +749,6 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .name = "DTMF_RX_HOSTLESS", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen Audio Service Capture", .aif_name = "LSM_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM", .probe = fe_dai_probe, }, { .playback = { .stream_name = "VOLTE_STUB Playback", Loading Loading @@ -865,6 +850,126 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .ops = &msm_fe_dai_ops, .name = "QCHAT", }, { .capture = { .stream_name = "Listen 1 Audio Service Capture", .aif_name = "LSM1_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM1", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 2 Audio Service Capture", .aif_name = "LSM2_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM2", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 3 Audio Service Capture", .aif_name = "LSM3_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM3", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 4 Audio Service Capture", .aif_name = "LSM4_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM4", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 5 Audio Service Capture", .aif_name = "LSM5_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM5", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 6 Audio Service Capture", .aif_name = "LSM6_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM6", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 7 Audio Service Capture", .aif_name = "LSM7_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM7", .probe = fe_dai_probe, }, { .capture = { .stream_name = "Listen 8 Audio Service Capture", .aif_name = "LSM8_UL_HL", .rates = SNDRV_PCM_RATE_16000, .formats = SNDRV_PCM_FMTBIT_S16_LE, .channels_min = 1, .channels_max = 1, .rate_min = 16000, .rate_max = 16000, }, .ops = &msm_fe_dai_ops, .name = "LSM8", .probe = fe_dai_probe, }, }; static int msm_fe_dai_dev_probe(struct platform_device *pdev) Loading
sound/soc/msm/qdsp6v2/audio_acdb.c +0 −7 Original line number Diff line number Diff line Loading @@ -1151,13 +1151,6 @@ static int unmap_cal_tables(void) result = result2; } result2 = q6lsm_unmap_cal_blocks(); if (result2 < 0) { pr_err("%s: lsm_unmap_cal_blocks failed, err = %d\n", __func__, result2); result = result2; } result2 = q6asm_unmap_cal_blocks(); if (result2 < 0) { pr_err("%s: asm_unmap_cal_blocks failed, err = %d\n", Loading
sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +124 −6 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ struct msm_pcm_routing_fdai_data { #define INVALID_SESSION -1 #define SESSION_TYPE_RX 0 #define SESSION_TYPE_TX 1 #define MAX_LSM_SESSIONS 8 #define EC_PORT_ID_PRIMARY_MI2S_TX 1 #define EC_PORT_ID_SECONDARY_MI2S_TX 2 Loading @@ -80,7 +81,8 @@ enum { MADNONE, MADAUDIO, MADBEACON, MADULTRASOUND MADULTRASOUND, MADSWAUDIO, }; #define SLIMBUS_0_TX_TEXT "SLIMBUS_0_TX" Loading Loading @@ -1035,6 +1037,9 @@ static int msm_routing_lsm_func_get(struct snd_kcontrol *kcontrol, case MAD_HW_ULTRASOUND: ucontrol->value.integer.value[0] = MADULTRASOUND; break; case MAD_SW_AUDIO: ucontrol->value.integer.value[0] = MADSWAUDIO; break; default: WARN(1, "Unknown\n"); return -EINVAL; Loading Loading @@ -1074,6 +1079,9 @@ static int msm_routing_lsm_func_put(struct snd_kcontrol *kcontrol, case MADULTRASOUND: mad_type = MAD_HW_ULTRASOUND; break; case MADSWAUDIO: mad_type = MAD_SW_AUDIO; break; default: WARN(1, "Unknown\n"); return -EINVAL; Loading Loading @@ -2859,13 +2867,47 @@ static const struct snd_kcontrol_new pcm_rx_switch_mixer_controls = static const struct soc_enum lsm_mux_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(mad_audio_mux_text), mad_audio_mux_text); static const struct snd_kcontrol_new lsm_mux = static const struct snd_kcontrol_new lsm1_mux = SOC_DAPM_ENUM_EXT("LSM1 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm2_mux = SOC_DAPM_ENUM_EXT("LSM2 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm3_mux = SOC_DAPM_ENUM_EXT("LSM3 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm4_mux = SOC_DAPM_ENUM_EXT("LSM4 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm5_mux = SOC_DAPM_ENUM_EXT("LSM5 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm6_mux = SOC_DAPM_ENUM_EXT("LSM6 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm7_mux = SOC_DAPM_ENUM_EXT("LSM7 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const struct snd_kcontrol_new lsm8_mux = SOC_DAPM_ENUM_EXT("LSM8 MUX", lsm_mux_enum, msm_routing_lsm_mux_get, msm_routing_lsm_mux_put); static const char * const lsm_func_text[] = { "None", "AUDIO", "BEACON", "ULTRASOUND" "None", "AUDIO", "BEACON", "ULTRASOUND", "SWAUDIO", }; static const struct soc_enum lsm_func_enum = SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(lsm_func_text), lsm_func_text); Loading Loading @@ -3477,7 +3519,21 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_AIF_IN("DTMF_DL_HL", "DTMF_RX_HOSTLESS Playback", 0, 0, 0, 0), /* LSM */ SND_SOC_DAPM_AIF_OUT("LSM_UL_HL", "Listen Audio Service Capture", SND_SOC_DAPM_AIF_OUT("LSM1_UL_HL", "Listen 1 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM2_UL_HL", "Listen 2 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM3_UL_HL", "Listen 3 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM4_UL_HL", "Listen 4 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM5_UL_HL", "Listen 5 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM6_UL_HL", "Listen 6 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM7_UL_HL", "Listen 7 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("LSM8_UL_HL", "Listen 8 Audio Service Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("QCHAT_DL", "QCHAT Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("QCHAT_UL", "QCHAT Capture", 0, 0, 0, 0), Loading Loading @@ -3571,7 +3627,14 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { &pcm_rx_switch_mixer_controls), /* Mux Definitions */ SND_SOC_DAPM_MUX("LSM1 MUX", SND_SOC_NOPM, 0, 0, &lsm_mux), SND_SOC_DAPM_MUX("LSM1 MUX", SND_SOC_NOPM, 0, 0, &lsm1_mux), SND_SOC_DAPM_MUX("LSM2 MUX", SND_SOC_NOPM, 0, 0, &lsm2_mux), SND_SOC_DAPM_MUX("LSM3 MUX", SND_SOC_NOPM, 0, 0, &lsm3_mux), SND_SOC_DAPM_MUX("LSM4 MUX", SND_SOC_NOPM, 0, 0, &lsm4_mux), SND_SOC_DAPM_MUX("LSM5 MUX", SND_SOC_NOPM, 0, 0, &lsm5_mux), SND_SOC_DAPM_MUX("LSM6 MUX", SND_SOC_NOPM, 0, 0, &lsm6_mux), SND_SOC_DAPM_MUX("LSM7 MUX", SND_SOC_NOPM, 0, 0, &lsm7_mux), SND_SOC_DAPM_MUX("LSM8 MUX", SND_SOC_NOPM, 0, 0, &lsm8_mux), SND_SOC_DAPM_MUX("SLIM_0_RX AANC MUX", SND_SOC_NOPM, 0, 0, aanc_slim_0_rx_mux), Loading Loading @@ -4138,7 +4201,62 @@ static const struct snd_soc_dapm_route intercon[] = { {"LSM1 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM1 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM1 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM_UL_HL", NULL, "LSM1 MUX"}, {"LSM1_UL_HL", NULL, "LSM1 MUX"}, {"LSM2 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM2 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM2 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM2 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM2 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM2_UL_HL", NULL, "LSM2 MUX"}, {"LSM3 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM3 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM3 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM3 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM3 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM3_UL_HL", NULL, "LSM3 MUX"}, {"LSM4 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM4 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM4 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM4 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM4 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM4_UL_HL", NULL, "LSM4 MUX"}, {"LSM5 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM5 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM5 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM5 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM5 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM5_UL_HL", NULL, "LSM5 MUX"}, {"LSM6 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM6 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM6 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM6 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM6 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM6_UL_HL", NULL, "LSM6 MUX"}, {"LSM7 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM7 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM7 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM7 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM7 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM7_UL_HL", NULL, "LSM7 MUX"}, {"LSM8 MUX", "SLIMBUS_0_TX", "SLIMBUS_0_TX"}, {"LSM8 MUX", "SLIMBUS_1_TX", "SLIMBUS_1_TX"}, {"LSM8 MUX", "SLIMBUS_3_TX", "SLIMBUS_3_TX"}, {"LSM8 MUX", "SLIMBUS_4_TX", "SLIMBUS_4_TX"}, {"LSM8 MUX", "SLIMBUS_5_TX", "SLIMBUS_5_TX"}, {"LSM8_UL_HL", NULL, "LSM8 MUX"}, {"QCHAT_Tx Mixer", "PRI_TX_QCHAT", "PRI_I2S_TX"}, {"QCHAT_Tx Mixer", "SLIM_0_TX_QCHAT", "SLIMBUS_0_TX"}, Loading