Loading arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -691,12 +691,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -708,12 +709,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -749,6 +751,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi +27 −12 Original line number Diff line number Diff line Loading @@ -1004,12 +1004,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -1021,12 +1022,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -1068,9 +1070,22 @@ }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { Loading arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -874,12 +874,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -891,12 +892,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -946,6 +948,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -542,12 +542,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -559,12 +560,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -592,6 +594,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading sound/soc/msm/apq8096-auto.c +78 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ static int msm_tert_tdm_rx_0_ch = 2; /* ICC STREAM */ static int msm_tert_tdm_rx_1_ch = 2; static int msm_tert_tdm_rx_2_ch = 2; static int msm_tert_tdm_rx_3_ch = 2; static int msm_tert_tdm_rx_4_ch; static int msm_tert_tdm_tx_0_ch = 6; /* EC_REF1-EC_REF6(6 CHAN) */ static int msm_tert_tdm_tx_1_ch = 1; Loading @@ -95,6 +96,7 @@ static int msm_tert_tdm_rx_0_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_1_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_2_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_3_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_tx_0_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_tx_1_bit_format = SNDRV_PCM_FORMAT_S16_LE; Loading Loading @@ -778,6 +780,24 @@ static int msm_tert_tdm_rx_3_ch_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_tert_tdm_rx_4_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: msm_tert_tdm_rx_4_ch = %d\n", __func__, msm_tert_tdm_rx_4_ch); ucontrol->value.integer.value[0] = msm_tert_tdm_rx_4_ch - 1; return 0; } static int msm_tert_tdm_rx_4_ch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { msm_tert_tdm_rx_4_ch = ucontrol->value.integer.value[0] + 1; pr_debug("%s: msm_tert_tdm_rx_4_ch = %d\n", __func__, msm_tert_tdm_rx_4_ch); return 0; } static int msm_tert_tdm_tx_0_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1266,6 +1286,40 @@ static int msm_tert_tdm_rx_3_bit_format_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_tert_tdm_rx_4_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (msm_tert_tdm_rx_4_bit_format) { case SNDRV_PCM_FORMAT_S24_LE: ucontrol->value.integer.value[0] = 1; break; case SNDRV_PCM_FORMAT_S16_LE: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: msm_tert_tdm_rx_4_bit_format = %ld\n", __func__, ucontrol->value.integer.value[0]); return 0; } static int msm_tert_tdm_rx_4_bit_format_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S24_LE; break; case 0: default: msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S16_LE; break; } pr_debug("%s: msm_tert_tdm_rx_4_bit_format = %d\n", __func__, msm_tert_tdm_rx_4_bit_format); return 0; } static int msm_tert_tdm_tx_0_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1962,6 +2016,11 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, msm_tert_tdm_rx_3_bit_format); break; case AFE_PORT_ID_TERTIARY_TDM_RX_4: channels->min = channels->max = msm_tert_tdm_rx_4_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, msm_tert_tdm_rx_4_bit_format); break; case AFE_PORT_ID_TERTIARY_TDM_TX: channels->min = channels->max = msm_tert_tdm_tx_0_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, Loading Loading @@ -2548,6 +2607,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { msm_tert_tdm_rx_2_ch_get, msm_tert_tdm_rx_2_ch_put), SOC_ENUM_EXT("TERT_TDM_RX_3 Channels", msm_snd_enum[5], msm_tert_tdm_rx_3_ch_get, msm_tert_tdm_rx_3_ch_put), SOC_ENUM_EXT("TERT_TDM_RX_4 Channels", msm_snd_enum[5], msm_tert_tdm_rx_4_ch_get, msm_tert_tdm_rx_4_ch_put), SOC_ENUM_EXT("TERT_TDM_TX_0 Channels", msm_snd_enum[5], msm_tert_tdm_tx_0_ch_get, msm_tert_tdm_tx_0_ch_put), SOC_ENUM_EXT("TERT_TDM_TX_1 Channels", msm_snd_enum[5], Loading Loading @@ -2596,6 +2657,9 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { SOC_ENUM_EXT("TERT_TDM_RX_3 Bit Format", msm_snd_enum[6], msm_tert_tdm_rx_3_bit_format_get, msm_tert_tdm_rx_3_bit_format_put), SOC_ENUM_EXT("TERT_TDM_RX_4 Bit Format", msm_snd_enum[6], msm_tert_tdm_rx_4_bit_format_get, msm_tert_tdm_rx_4_bit_format_put), SOC_ENUM_EXT("TERT_TDM_TX_0 Bit Format", msm_snd_enum[6], msm_tert_tdm_tx_0_bit_format_get, msm_tert_tdm_tx_0_bit_format_put), Loading Loading @@ -3921,6 +3985,20 @@ static struct snd_soc_dai_link apq8096_auto_be_dai_links[] = { .ops = &apq8096_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_TERT_TDM_RX_4, .stream_name = "Tertiary TDM4 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36904", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .be_id = MSM_BACKEND_DAI_TERT_TDM_RX_4, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &apq8096_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_TERT_TDM_TX_0, .stream_name = "Tertiary TDM0 Capture", Loading Loading
arch/arm/boot/dts/qcom/apq8096-auto-dragonboard.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -691,12 +691,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -708,12 +709,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -749,6 +751,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading
arch/arm/boot/dts/qcom/msm8996-agave-adp.dtsi +27 −12 Original line number Diff line number Diff line Loading @@ -1004,12 +1004,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -1021,12 +1022,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -1068,9 +1070,22 @@ }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { Loading
arch/arm/boot/dts/qcom/msm8996-auto-cdp.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -874,12 +874,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -891,12 +892,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -946,6 +948,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading
arch/arm/boot/dts/qcom/msm8996-mmxf-adp.dtsi +33 −12 Original line number Diff line number Diff line Loading @@ -542,12 +542,13 @@ <&dai_sec_tdm_tx_2>, <&dai_sec_tdm_tx_3>, <&dai_tert_tdm_rx_0>, <&dai_tert_tdm_rx_1>, <&dai_tert_tdm_rx_2>, <&dai_tert_tdm_rx_3>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; <&dai_tert_tdm_rx_4>, <&dai_tert_tdm_tx_0>, <&dai_tert_tdm_tx_1>, <&dai_tert_tdm_tx_2>, <&dai_tert_tdm_tx_3>, <&dai_quat_tdm_rx_0>, <&dai_quat_tdm_rx_1>, <&dai_quat_tdm_rx_2>, <&dai_quat_tdm_rx_3>, <&dai_quat_tdm_tx_0>, <&dai_quat_tdm_tx_1>, <&dai_quat_tdm_tx_2>, <&dai_quat_tdm_tx_3>; asoc-cpu-names = "msm-dai-q6-auxpcm.1", "msm-dai-q6-auxpcm.2", "msm-dai-q6-hdmi.8", "msm-dai-q6-mi2s.1", "msm-dai-q6-mi2s.2", "msm-dai-q6-mi2s.3", Loading @@ -559,12 +560,13 @@ "msm-dai-q6-tdm.36885", "msm-dai-q6-tdm.36887", "msm-dai-q6-tdm.36896", "msm-dai-q6-tdm.36898", "msm-dai-q6-tdm.36900", "msm-dai-q6-tdm.36902", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; "msm-dai-q6-tdm.36904", "msm-dai-q6-tdm.36897", "msm-dai-q6-tdm.36899", "msm-dai-q6-tdm.36901", "msm-dai-q6-tdm.36903", "msm-dai-q6-tdm.36912", "msm-dai-q6-tdm.36914", "msm-dai-q6-tdm.36916", "msm-dai-q6-tdm.36918", "msm-dai-q6-tdm.36913", "msm-dai-q6-tdm.36915", "msm-dai-q6-tdm.36917", "msm-dai-q6-tdm.36919"; asoc-codec = <&stub_codec>; asoc-codec-names = "msm-stub-codec.1"; }; Loading Loading @@ -592,6 +594,25 @@ }; }; qcom,msm-dai-tdm-tert-rx { qcom,msm-cpudai-tdm-group-num-ports = <5>; qcom,msm-cpudai-tdm-group-port-id = <36896 36898 36900 36902 36904>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&tert_tdm_dout_active>; pinctrl-1 = <&tert_tdm_dout_sleep>; dai_tert_tdm_rx_4: qcom,msm-dai-q6-tdm-tert-rx-4 { compatible = "qcom,msm-dai-q6-tdm"; qcom,msm-cpudai-tdm-dev-id = <36904>; qcom,msm-cpudai-tdm-sync-mode = <1>; qcom,msm-cpudai-tdm-sync-src = <0>; qcom,msm-cpudai-tdm-data-out = <0>; qcom,msm-cpudai-tdm-invert-sync = <0>; qcom,msm-cpudai-tdm-data-delay = <0>; qcom,msm-cpudai-tdm-data-align = <0>; }; }; qcom,msm-dai-tdm-quat-rx { pinctrl-names = "default", "sleep"; pinctrl-0 = <&quat_tdm_dout_active>; Loading
sound/soc/msm/apq8096-auto.c +78 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ static int msm_tert_tdm_rx_0_ch = 2; /* ICC STREAM */ static int msm_tert_tdm_rx_1_ch = 2; static int msm_tert_tdm_rx_2_ch = 2; static int msm_tert_tdm_rx_3_ch = 2; static int msm_tert_tdm_rx_4_ch; static int msm_tert_tdm_tx_0_ch = 6; /* EC_REF1-EC_REF6(6 CHAN) */ static int msm_tert_tdm_tx_1_ch = 1; Loading @@ -95,6 +96,7 @@ static int msm_tert_tdm_rx_0_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_1_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_2_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_3_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_tx_0_bit_format = SNDRV_PCM_FORMAT_S16_LE; static int msm_tert_tdm_tx_1_bit_format = SNDRV_PCM_FORMAT_S16_LE; Loading Loading @@ -778,6 +780,24 @@ static int msm_tert_tdm_rx_3_ch_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_tert_tdm_rx_4_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { pr_debug("%s: msm_tert_tdm_rx_4_ch = %d\n", __func__, msm_tert_tdm_rx_4_ch); ucontrol->value.integer.value[0] = msm_tert_tdm_rx_4_ch - 1; return 0; } static int msm_tert_tdm_rx_4_ch_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { msm_tert_tdm_rx_4_ch = ucontrol->value.integer.value[0] + 1; pr_debug("%s: msm_tert_tdm_rx_4_ch = %d\n", __func__, msm_tert_tdm_rx_4_ch); return 0; } static int msm_tert_tdm_tx_0_ch_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1266,6 +1286,40 @@ static int msm_tert_tdm_rx_3_bit_format_put(struct snd_kcontrol *kcontrol, return 0; } static int msm_tert_tdm_rx_4_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (msm_tert_tdm_rx_4_bit_format) { case SNDRV_PCM_FORMAT_S24_LE: ucontrol->value.integer.value[0] = 1; break; case SNDRV_PCM_FORMAT_S16_LE: default: ucontrol->value.integer.value[0] = 0; break; } pr_debug("%s: msm_tert_tdm_rx_4_bit_format = %ld\n", __func__, ucontrol->value.integer.value[0]); return 0; } static int msm_tert_tdm_rx_4_bit_format_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { switch (ucontrol->value.integer.value[0]) { case 1: msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S24_LE; break; case 0: default: msm_tert_tdm_rx_4_bit_format = SNDRV_PCM_FORMAT_S16_LE; break; } pr_debug("%s: msm_tert_tdm_rx_4_bit_format = %d\n", __func__, msm_tert_tdm_rx_4_bit_format); return 0; } static int msm_tert_tdm_tx_0_bit_format_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { Loading Loading @@ -1962,6 +2016,11 @@ static int msm_tdm_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, msm_tert_tdm_rx_3_bit_format); break; case AFE_PORT_ID_TERTIARY_TDM_RX_4: channels->min = channels->max = msm_tert_tdm_rx_4_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, msm_tert_tdm_rx_4_bit_format); break; case AFE_PORT_ID_TERTIARY_TDM_TX: channels->min = channels->max = msm_tert_tdm_tx_0_ch; param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, Loading Loading @@ -2548,6 +2607,8 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { msm_tert_tdm_rx_2_ch_get, msm_tert_tdm_rx_2_ch_put), SOC_ENUM_EXT("TERT_TDM_RX_3 Channels", msm_snd_enum[5], msm_tert_tdm_rx_3_ch_get, msm_tert_tdm_rx_3_ch_put), SOC_ENUM_EXT("TERT_TDM_RX_4 Channels", msm_snd_enum[5], msm_tert_tdm_rx_4_ch_get, msm_tert_tdm_rx_4_ch_put), SOC_ENUM_EXT("TERT_TDM_TX_0 Channels", msm_snd_enum[5], msm_tert_tdm_tx_0_ch_get, msm_tert_tdm_tx_0_ch_put), SOC_ENUM_EXT("TERT_TDM_TX_1 Channels", msm_snd_enum[5], Loading Loading @@ -2596,6 +2657,9 @@ static const struct snd_kcontrol_new msm_snd_controls[] = { SOC_ENUM_EXT("TERT_TDM_RX_3 Bit Format", msm_snd_enum[6], msm_tert_tdm_rx_3_bit_format_get, msm_tert_tdm_rx_3_bit_format_put), SOC_ENUM_EXT("TERT_TDM_RX_4 Bit Format", msm_snd_enum[6], msm_tert_tdm_rx_4_bit_format_get, msm_tert_tdm_rx_4_bit_format_put), SOC_ENUM_EXT("TERT_TDM_TX_0 Bit Format", msm_snd_enum[6], msm_tert_tdm_tx_0_bit_format_get, msm_tert_tdm_tx_0_bit_format_put), Loading Loading @@ -3921,6 +3985,20 @@ static struct snd_soc_dai_link apq8096_auto_be_dai_links[] = { .ops = &apq8096_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_TERT_TDM_RX_4, .stream_name = "Tertiary TDM4 Playback", .cpu_dai_name = "msm-dai-q6-tdm.36904", .platform_name = "msm-pcm-routing", .codec_name = "msm-stub-codec.1", .codec_dai_name = "msm-stub-rx", .no_pcm = 1, .dpcm_playback = 1, .be_id = MSM_BACKEND_DAI_TERT_TDM_RX_4, .be_hw_params_fixup = msm_tdm_be_hw_params_fixup, .ops = &apq8096_tdm_be_ops, .ignore_suspend = 1, }, { .name = LPASS_BE_TERT_TDM_TX_0, .stream_name = "Tertiary TDM0 Capture", Loading