Loading asoc/msm-pcm-routing-v2.c +18 −0 Original line number Original line Diff line number Diff line Loading @@ -14993,6 +14993,14 @@ static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = { msm_routing_put_port_mixer), msm_routing_put_port_mixer), }; }; static const struct snd_kcontrol_new sec_tdm_rx_7_port_mixer_controls[] = { SOC_DOUBLE_EXT("TERT_TDM_TX_7", SND_SOC_NOPM, MSM_BACKEND_DAI_SEC_TDM_RX_7, MSM_BACKEND_DAI_TERT_TDM_TX_7, 1, 0, msm_routing_get_port_mixer, msm_routing_put_port_mixer), }; static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = { static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = { SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM, SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM, MSM_BACKEND_DAI_TERT_TDM_RX_0, MSM_BACKEND_DAI_TERT_TDM_RX_0, Loading Loading @@ -19312,6 +19320,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0, sec_tdm_rx_3_port_mixer_controls, sec_tdm_rx_3_port_mixer_controls, ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)), ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)), SND_SOC_DAPM_MIXER("SEC_TDM_RX_7 Port Mixer", SND_SOC_NOPM, 0, 0, sec_tdm_rx_7_port_mixer_controls, ARRAY_SIZE(sec_tdm_rx_7_port_mixer_controls)), SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0, tert_tdm_rx_0_port_mixer_controls, tert_tdm_rx_0_port_mixer_controls, ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)), ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)), Loading Loading @@ -21926,10 +21937,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"}, {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"}, {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"}, {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"}, {"SEC_TDM_RX_7", NULL, "SEC_TDM_RX_7_DL_HL"}, {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"}, {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"}, {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"}, {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"}, {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"}, {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"}, {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"}, {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"}, {"TERT_TDM_TX_7_UL_HL", NULL, "TERT_TDM_TX_7"}, {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"}, {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"}, {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"}, {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"}, {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"}, {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"}, Loading Loading @@ -22127,6 +22140,9 @@ static const struct snd_soc_dapm_route intercon[] = { {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"}, {"SEC_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"}, {"SEC_TDM_RX_7", NULL, "SEC_TDM_RX_7 Port Mixer"}, {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"}, Loading Loading @@ -22708,6 +22724,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"BE_OUT", NULL, "SEC_TDM_RX_1"}, {"BE_OUT", NULL, "SEC_TDM_RX_1"}, {"BE_OUT", NULL, "SEC_TDM_RX_2"}, {"BE_OUT", NULL, "SEC_TDM_RX_2"}, {"BE_OUT", NULL, "SEC_TDM_RX_3"}, {"BE_OUT", NULL, "SEC_TDM_RX_3"}, {"BE_OUT", NULL, "SEC_TDM_RX_7"}, {"BE_OUT", NULL, "TERT_TDM_RX_0"}, {"BE_OUT", NULL, "TERT_TDM_RX_0"}, {"BE_OUT", NULL, "TERT_TDM_RX_1"}, {"BE_OUT", NULL, "TERT_TDM_RX_1"}, {"BE_OUT", NULL, "TERT_TDM_RX_2"}, {"BE_OUT", NULL, "TERT_TDM_RX_2"}, Loading Loading @@ -22796,6 +22813,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"TERT_TDM_TX_1", NULL, "BE_IN"}, {"TERT_TDM_TX_1", NULL, "BE_IN"}, {"TERT_TDM_TX_2", NULL, "BE_IN"}, {"TERT_TDM_TX_2", NULL, "BE_IN"}, {"TERT_TDM_TX_3", NULL, "BE_IN"}, {"TERT_TDM_TX_3", NULL, "BE_IN"}, {"TERT_TDM_TX_7", NULL, "BE_IN"}, {"QUAT_TDM_TX_0", NULL, "BE_IN"}, {"QUAT_TDM_TX_0", NULL, "BE_IN"}, {"QUAT_TDM_TX_1", NULL, "BE_IN"}, {"QUAT_TDM_TX_1", NULL, "BE_IN"}, {"QUAT_TDM_TX_2", NULL, "BE_IN"}, {"QUAT_TDM_TX_2", NULL, "BE_IN"}, asoc/sa8155.c +89 −5 Original line number Original line Diff line number Diff line Loading @@ -397,7 +397,7 @@ static unsigned int tdm_rx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, }, }, {/* TERT TDM */ {/* TERT TDM */ {0, 4, 8, 12, 16, 20, 0xFFFF}, {0, 4, 8, 12, 16, 20, 0xFFFF}, Loading Loading @@ -461,7 +461,7 @@ static unsigned int tdm_tx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, }, }, {/* QUAT TDM */ {/* QUAT TDM */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ Loading Loading @@ -512,7 +512,7 @@ static unsigned int tdm_rx_slot_offset_custom {10, 0xFFFF}, {10, 0xFFFF}, {12, 14, 16, 18, 20, 22, 24, 26, 0xFFFF}, {12, 14, 16, 18, 20, 22, 24, 26, 0xFFFF}, {28, 30, 0xFFFF}, {28, 30, 0xFFFF}, {0xFFFF}, /* not used */ {30, 0xFFFF}, }, }, {/* TERT TDM */ {/* TERT TDM */ {0, 2, 0xFFFF}, {0, 2, 0xFFFF}, Loading Loading @@ -576,7 +576,7 @@ static unsigned int tdm_tx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {30, 0xFFFF}, }, }, {/* QUAT TDM */ {/* QUAT TDM */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ Loading Loading @@ -4018,6 +4018,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = rate->min = rate->max = tdm_rx_cfg[TDM_SEC][TDM_3].sample_rate; tdm_rx_cfg[TDM_SEC][TDM_3].sample_rate; break; break; case AFE_PORT_ID_SECONDARY_TDM_RX_7: channels->min = channels->max = tdm_rx_cfg[TDM_SEC][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_rx_cfg[TDM_SEC][TDM_7].bit_format); rate->min = rate->max = tdm_rx_cfg[TDM_SEC][TDM_7].sample_rate; break; case AFE_PORT_ID_SECONDARY_TDM_TX: case AFE_PORT_ID_SECONDARY_TDM_TX: channels->min = channels->max = channels->min = channels->max = tdm_tx_cfg[TDM_SEC][TDM_0].channels; tdm_tx_cfg[TDM_SEC][TDM_0].channels; Loading Loading @@ -4122,6 +4130,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = rate->min = rate->max = tdm_tx_cfg[TDM_TERT][TDM_3].sample_rate; tdm_tx_cfg[TDM_TERT][TDM_3].sample_rate; break; break; case AFE_PORT_ID_TERTIARY_TDM_TX_7: channels->min = channels->max = tdm_tx_cfg[TDM_TERT][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_tx_cfg[TDM_TERT][TDM_7].bit_format); rate->min = rate->max = tdm_tx_cfg[TDM_TERT][TDM_7].sample_rate; break; case AFE_PORT_ID_QUATERNARY_TDM_RX: case AFE_PORT_ID_QUATERNARY_TDM_RX: channels->min = channels->max = channels->min = channels->max = tdm_rx_cfg[TDM_QUAT][TDM_0].channels; tdm_rx_cfg[TDM_QUAT][TDM_0].channels; Loading Loading @@ -4375,6 +4391,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_SEC].width; slot_width = tdm_slot[TDM_SEC].width; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_3]; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_3]; break; break; case AFE_PORT_ID_SECONDARY_TDM_RX_7: slots = tdm_slot[TDM_SEC].num; slot_width = tdm_slot[TDM_SEC].width; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_7]; break; case AFE_PORT_ID_SECONDARY_TDM_TX: case AFE_PORT_ID_SECONDARY_TDM_TX: slots = tdm_slot[TDM_SEC].num; slots = tdm_slot[TDM_SEC].num; slot_width = tdm_slot[TDM_SEC].width; slot_width = tdm_slot[TDM_SEC].width; Loading Loading @@ -4440,6 +4461,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_TERT].width; slot_width = tdm_slot[TDM_TERT].width; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_3]; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_3]; break; break; case AFE_PORT_ID_TERTIARY_TDM_TX_7: slots = tdm_slot[TDM_TERT].num; slot_width = tdm_slot[TDM_TERT].width; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_7]; break; case AFE_PORT_ID_QUATERNARY_TDM_RX: case AFE_PORT_ID_QUATERNARY_TDM_RX: slots = tdm_slot[TDM_QUAT].num; slots = tdm_slot[TDM_QUAT].num; slot_width = tdm_slot[TDM_QUAT].width; slot_width = tdm_slot[TDM_QUAT].width; Loading Loading @@ -5565,7 +5591,37 @@ static struct snd_soc_dai_link msm_auto_fe_dai_links[] = { .codec_dai_name = "snd-soc-dummy-dai", .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .codec_name = "snd-soc-dummy", .id = MSM_FRONTEND_DAI_DTMF_RX, .id = MSM_FRONTEND_DAI_DTMF_RX, } }, { .name = "Secondary TDM RX 7 Hostless", .stream_name = "Secondary TDM RX 7 Hostless", .cpu_dai_name = "SEC_TDM_RX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_playback = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Tertiary TDM TX 7 Hostless", .stream_name = "Tertiary TDM TX 7 Hostless", .cpu_dai_name = "TERT_TDM_TX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, }; }; static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { Loading Loading @@ -6118,6 +6174,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa8155_tdm_be_ops, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, .ignore_suspend = 1, }, }, { .name = LPASS_BE_SEC_TDM_RX_7, .stream_name = "Secondary TDM7 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36894", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .id = MSM_BACKEND_DAI_SEC_TDM_RX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, }, { { .name = LPASS_BE_SEC_TDM_TX_1, .name = LPASS_BE_SEC_TDM_TX_1, .stream_name = "Secondary TDM1 Capture", .stream_name = "Secondary TDM1 Capture", Loading Loading @@ -6258,6 +6328,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa8155_tdm_be_ops, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, .ignore_suspend = 1, }, }, { .name = LPASS_BE_TERT_TDM_TX_7, .stream_name = "Tertiary TDM7 Capture", .cpu_dai_name = "msm-dai-q6-tdm.36911", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_capture = 1, .id = MSM_BACKEND_DAI_TERT_TDM_TX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, }, { { .name = LPASS_BE_QUAT_TDM_RX_1, .name = LPASS_BE_QUAT_TDM_RX_1, .stream_name = "Quaternary TDM1 Playback", .stream_name = "Quaternary TDM1 Playback", Loading Loading
asoc/msm-pcm-routing-v2.c +18 −0 Original line number Original line Diff line number Diff line Loading @@ -14993,6 +14993,14 @@ static const struct snd_kcontrol_new sec_tdm_rx_3_port_mixer_controls[] = { msm_routing_put_port_mixer), msm_routing_put_port_mixer), }; }; static const struct snd_kcontrol_new sec_tdm_rx_7_port_mixer_controls[] = { SOC_DOUBLE_EXT("TERT_TDM_TX_7", SND_SOC_NOPM, MSM_BACKEND_DAI_SEC_TDM_RX_7, MSM_BACKEND_DAI_TERT_TDM_TX_7, 1, 0, msm_routing_get_port_mixer, msm_routing_put_port_mixer), }; static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = { static const struct snd_kcontrol_new tert_tdm_rx_0_port_mixer_controls[] = { SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM, SOC_DOUBLE_EXT("PRI_MI2S_TX", SND_SOC_NOPM, MSM_BACKEND_DAI_TERT_TDM_RX_0, MSM_BACKEND_DAI_TERT_TDM_RX_0, Loading Loading @@ -19312,6 +19320,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("SEC_TDM_RX_3 Port Mixer", SND_SOC_NOPM, 0, 0, sec_tdm_rx_3_port_mixer_controls, sec_tdm_rx_3_port_mixer_controls, ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)), ARRAY_SIZE(sec_tdm_rx_3_port_mixer_controls)), SND_SOC_DAPM_MIXER("SEC_TDM_RX_7 Port Mixer", SND_SOC_NOPM, 0, 0, sec_tdm_rx_7_port_mixer_controls, ARRAY_SIZE(sec_tdm_rx_7_port_mixer_controls)), SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_MIXER("TERT_TDM_RX_0 Port Mixer", SND_SOC_NOPM, 0, 0, tert_tdm_rx_0_port_mixer_controls, tert_tdm_rx_0_port_mixer_controls, ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)), ARRAY_SIZE(tert_tdm_rx_0_port_mixer_controls)), Loading Loading @@ -21926,10 +21937,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"}, {"SEC_TDM_RX_1", NULL, "SEC_TDM_RX_1_DL_HL"}, {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"}, {"SEC_TDM_RX_2", NULL, "SEC_TDM_RX_2_DL_HL"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3_DL_HL"}, {"SEC_TDM_RX_7", NULL, "SEC_TDM_RX_7_DL_HL"}, {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"}, {"TERT_TDM_TX_0_UL_HL", NULL, "TERT_TDM_TX_0"}, {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"}, {"TERT_TDM_TX_1_UL_HL", NULL, "TERT_TDM_TX_1"}, {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"}, {"TERT_TDM_TX_2_UL_HL", NULL, "TERT_TDM_TX_2"}, {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"}, {"TERT_TDM_TX_3_UL_HL", NULL, "TERT_TDM_TX_3"}, {"TERT_TDM_TX_7_UL_HL", NULL, "TERT_TDM_TX_7"}, {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"}, {"TERT_TDM_RX_0", NULL, "TERT_TDM_RX_0_DL_HL"}, {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"}, {"TERT_TDM_RX_1", NULL, "TERT_TDM_RX_1_DL_HL"}, {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"}, {"TERT_TDM_RX_2", NULL, "TERT_TDM_RX_2_DL_HL"}, Loading Loading @@ -22127,6 +22140,9 @@ static const struct snd_soc_dapm_route intercon[] = { {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, {"SEC_TDM_RX_3 Port Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"}, {"SEC_TDM_RX_3", NULL, "SEC_TDM_RX_3 Port Mixer"}, {"SEC_TDM_RX_7 Port Mixer", "TERT_TDM_TX_7", "TERT_TDM_TX_7"}, {"SEC_TDM_RX_7", NULL, "SEC_TDM_RX_7 Port Mixer"}, {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "PRI_MI2S_TX", "PRI_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "SEC_MI2S_TX", "SEC_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"}, {"TERT_TDM_RX_0 Port Mixer", "QUAT_MI2S_TX", "QUAT_MI2S_TX"}, Loading Loading @@ -22708,6 +22724,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"BE_OUT", NULL, "SEC_TDM_RX_1"}, {"BE_OUT", NULL, "SEC_TDM_RX_1"}, {"BE_OUT", NULL, "SEC_TDM_RX_2"}, {"BE_OUT", NULL, "SEC_TDM_RX_2"}, {"BE_OUT", NULL, "SEC_TDM_RX_3"}, {"BE_OUT", NULL, "SEC_TDM_RX_3"}, {"BE_OUT", NULL, "SEC_TDM_RX_7"}, {"BE_OUT", NULL, "TERT_TDM_RX_0"}, {"BE_OUT", NULL, "TERT_TDM_RX_0"}, {"BE_OUT", NULL, "TERT_TDM_RX_1"}, {"BE_OUT", NULL, "TERT_TDM_RX_1"}, {"BE_OUT", NULL, "TERT_TDM_RX_2"}, {"BE_OUT", NULL, "TERT_TDM_RX_2"}, Loading Loading @@ -22796,6 +22813,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"TERT_TDM_TX_1", NULL, "BE_IN"}, {"TERT_TDM_TX_1", NULL, "BE_IN"}, {"TERT_TDM_TX_2", NULL, "BE_IN"}, {"TERT_TDM_TX_2", NULL, "BE_IN"}, {"TERT_TDM_TX_3", NULL, "BE_IN"}, {"TERT_TDM_TX_3", NULL, "BE_IN"}, {"TERT_TDM_TX_7", NULL, "BE_IN"}, {"QUAT_TDM_TX_0", NULL, "BE_IN"}, {"QUAT_TDM_TX_0", NULL, "BE_IN"}, {"QUAT_TDM_TX_1", NULL, "BE_IN"}, {"QUAT_TDM_TX_1", NULL, "BE_IN"}, {"QUAT_TDM_TX_2", NULL, "BE_IN"}, {"QUAT_TDM_TX_2", NULL, "BE_IN"},
asoc/sa8155.c +89 −5 Original line number Original line Diff line number Diff line Loading @@ -397,7 +397,7 @@ static unsigned int tdm_rx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, }, }, {/* TERT TDM */ {/* TERT TDM */ {0, 4, 8, 12, 16, 20, 0xFFFF}, {0, 4, 8, 12, 16, 20, 0xFFFF}, Loading Loading @@ -461,7 +461,7 @@ static unsigned int tdm_tx_slot_offset {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {28, 0xFFFF}, }, }, {/* QUAT TDM */ {/* QUAT TDM */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ Loading Loading @@ -512,7 +512,7 @@ static unsigned int tdm_rx_slot_offset_custom {10, 0xFFFF}, {10, 0xFFFF}, {12, 14, 16, 18, 20, 22, 24, 26, 0xFFFF}, {12, 14, 16, 18, 20, 22, 24, 26, 0xFFFF}, {28, 30, 0xFFFF}, {28, 30, 0xFFFF}, {0xFFFF}, /* not used */ {30, 0xFFFF}, }, }, {/* TERT TDM */ {/* TERT TDM */ {0, 2, 0xFFFF}, {0, 2, 0xFFFF}, Loading Loading @@ -576,7 +576,7 @@ static unsigned int tdm_tx_slot_offset_custom {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ {30, 0xFFFF}, }, }, {/* QUAT TDM */ {/* QUAT TDM */ {0xFFFF}, /* not used */ {0xFFFF}, /* not used */ Loading Loading @@ -4018,6 +4018,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = rate->min = rate->max = tdm_rx_cfg[TDM_SEC][TDM_3].sample_rate; tdm_rx_cfg[TDM_SEC][TDM_3].sample_rate; break; break; case AFE_PORT_ID_SECONDARY_TDM_RX_7: channels->min = channels->max = tdm_rx_cfg[TDM_SEC][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_rx_cfg[TDM_SEC][TDM_7].bit_format); rate->min = rate->max = tdm_rx_cfg[TDM_SEC][TDM_7].sample_rate; break; case AFE_PORT_ID_SECONDARY_TDM_TX: case AFE_PORT_ID_SECONDARY_TDM_TX: channels->min = channels->max = channels->min = channels->max = tdm_tx_cfg[TDM_SEC][TDM_0].channels; tdm_tx_cfg[TDM_SEC][TDM_0].channels; Loading Loading @@ -4122,6 +4130,14 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, rate->min = rate->max = rate->min = rate->max = tdm_tx_cfg[TDM_TERT][TDM_3].sample_rate; tdm_tx_cfg[TDM_TERT][TDM_3].sample_rate; break; break; case AFE_PORT_ID_TERTIARY_TDM_TX_7: channels->min = channels->max = tdm_tx_cfg[TDM_TERT][TDM_7].channels; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, tdm_tx_cfg[TDM_TERT][TDM_7].bit_format); rate->min = rate->max = tdm_tx_cfg[TDM_TERT][TDM_7].sample_rate; break; case AFE_PORT_ID_QUATERNARY_TDM_RX: case AFE_PORT_ID_QUATERNARY_TDM_RX: channels->min = channels->max = channels->min = channels->max = tdm_rx_cfg[TDM_QUAT][TDM_0].channels; tdm_rx_cfg[TDM_QUAT][TDM_0].channels; Loading Loading @@ -4375,6 +4391,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_SEC].width; slot_width = tdm_slot[TDM_SEC].width; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_3]; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_3]; break; break; case AFE_PORT_ID_SECONDARY_TDM_RX_7: slots = tdm_slot[TDM_SEC].num; slot_width = tdm_slot[TDM_SEC].width; slot_offset = tdm_rx_slot_offset[TDM_SEC][TDM_7]; break; case AFE_PORT_ID_SECONDARY_TDM_TX: case AFE_PORT_ID_SECONDARY_TDM_TX: slots = tdm_slot[TDM_SEC].num; slots = tdm_slot[TDM_SEC].num; slot_width = tdm_slot[TDM_SEC].width; slot_width = tdm_slot[TDM_SEC].width; Loading Loading @@ -4440,6 +4461,11 @@ static int sa8155_tdm_snd_hw_params(struct snd_pcm_substream *substream, slot_width = tdm_slot[TDM_TERT].width; slot_width = tdm_slot[TDM_TERT].width; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_3]; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_3]; break; break; case AFE_PORT_ID_TERTIARY_TDM_TX_7: slots = tdm_slot[TDM_TERT].num; slot_width = tdm_slot[TDM_TERT].width; slot_offset = tdm_tx_slot_offset[TDM_TERT][TDM_7]; break; case AFE_PORT_ID_QUATERNARY_TDM_RX: case AFE_PORT_ID_QUATERNARY_TDM_RX: slots = tdm_slot[TDM_QUAT].num; slots = tdm_slot[TDM_QUAT].num; slot_width = tdm_slot[TDM_QUAT].width; slot_width = tdm_slot[TDM_QUAT].width; Loading Loading @@ -5565,7 +5591,37 @@ static struct snd_soc_dai_link msm_auto_fe_dai_links[] = { .codec_dai_name = "snd-soc-dummy-dai", .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", .codec_name = "snd-soc-dummy", .id = MSM_FRONTEND_DAI_DTMF_RX, .id = MSM_FRONTEND_DAI_DTMF_RX, } }, { .name = "Secondary TDM RX 7 Hostless", .stream_name = "Secondary TDM RX 7 Hostless", .cpu_dai_name = "SEC_TDM_RX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_playback = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, { .name = "Tertiary TDM TX 7 Hostless", .stream_name = "Tertiary TDM TX 7 Hostless", .cpu_dai_name = "TERT_TDM_TX_7_HOSTLESS", .platform_name = "msm-pcm-hostless", .dynamic = 1, .dpcm_capture = 1, .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, .ignore_suspend = 1, .ignore_pmdown_time = 1, .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, }; }; static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { static struct snd_soc_dai_link msm_custom_fe_dai_links[] = { Loading Loading @@ -6118,6 +6174,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa8155_tdm_be_ops, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, .ignore_suspend = 1, }, }, { .name = LPASS_BE_SEC_TDM_RX_7, .stream_name = "Secondary TDM7 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36894", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .id = MSM_BACKEND_DAI_SEC_TDM_RX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, }, { { .name = LPASS_BE_SEC_TDM_TX_1, .name = LPASS_BE_SEC_TDM_TX_1, .stream_name = "Secondary TDM1 Capture", .stream_name = "Secondary TDM1 Capture", Loading Loading @@ -6258,6 +6328,20 @@ static struct snd_soc_dai_link msm_auto_be_dai_links[] = { .ops = &sa8155_tdm_be_ops, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, .ignore_suspend = 1, }, }, { .name = LPASS_BE_TERT_TDM_TX_7, .stream_name = "Tertiary TDM7 Capture", .cpu_dai_name = "msm-dai-q6-tdm.36911", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_capture = 1, .id = MSM_BACKEND_DAI_TERT_TDM_TX_7, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &sa8155_tdm_be_ops, .ignore_suspend = 1, }, { { .name = LPASS_BE_QUAT_TDM_RX_1, .name = LPASS_BE_QUAT_TDM_RX_1, .stream_name = "Quaternary TDM1 Playback", .stream_name = "Quaternary TDM1 Playback", Loading