hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/sound/soc/qcom/qdsp6/q6routing.c
....@@ -113,7 +113,19 @@
113113 { mix_name, "QUIN_TDM_TX_4", "QUIN_TDM_TX_4"}, \
114114 { mix_name, "QUIN_TDM_TX_5", "QUIN_TDM_TX_5"}, \
115115 { mix_name, "QUIN_TDM_TX_6", "QUIN_TDM_TX_6"}, \
116
- { mix_name, "QUIN_TDM_TX_7", "QUIN_TDM_TX_7"}
116
+ { mix_name, "QUIN_TDM_TX_7", "QUIN_TDM_TX_7"}, \
117
+ { mix_name, "WSA_CODEC_DMA_TX_0", "WSA_CODEC_DMA_TX_0"}, \
118
+ { mix_name, "WSA_CODEC_DMA_TX_1", "WSA_CODEC_DMA_TX_1"}, \
119
+ { mix_name, "WSA_CODEC_DMA_TX_2", "WSA_CODEC_DMA_TX_2"}, \
120
+ { mix_name, "VA_CODEC_DMA_TX_0", "VA_CODEC_DMA_TX_0"}, \
121
+ { mix_name, "VA_CODEC_DMA_TX_1", "VA_CODEC_DMA_TX_1"}, \
122
+ { mix_name, "VA_CODEC_DMA_TX_2", "VA_CODEC_DMA_TX_2"}, \
123
+ { mix_name, "TX_CODEC_DMA_TX_0", "TX_CODEC_DMA_TX_0"}, \
124
+ { mix_name, "TX_CODEC_DMA_TX_1", "TX_CODEC_DMA_TX_1"}, \
125
+ { mix_name, "TX_CODEC_DMA_TX_2", "TX_CODEC_DMA_TX_2"}, \
126
+ { mix_name, "TX_CODEC_DMA_TX_3", "TX_CODEC_DMA_TX_3"}, \
127
+ { mix_name, "TX_CODEC_DMA_TX_4", "TX_CODEC_DMA_TX_4"}, \
128
+ { mix_name, "TX_CODEC_DMA_TX_5", "TX_CODEC_DMA_TX_5"}
117129
118130 #define Q6ROUTING_TX_MIXERS(id) \
119131 SOC_SINGLE_EXT("PRI_MI2S_TX", PRIMARY_MI2S_TX, \
....@@ -267,6 +279,42 @@
267279 id, 1, 0, msm_routing_get_audio_mixer, \
268280 msm_routing_put_audio_mixer), \
269281 SOC_SINGLE_EXT("QUIN_TDM_TX_7", QUINARY_TDM_TX_7, \
282
+ id, 1, 0, msm_routing_get_audio_mixer, \
283
+ msm_routing_put_audio_mixer), \
284
+ SOC_SINGLE_EXT("WSA_CODEC_DMA_TX_0", WSA_CODEC_DMA_TX_0, \
285
+ id, 1, 0, msm_routing_get_audio_mixer, \
286
+ msm_routing_put_audio_mixer), \
287
+ SOC_SINGLE_EXT("WSA_CODEC_DMA_TX_1", WSA_CODEC_DMA_TX_1, \
288
+ id, 1, 0, msm_routing_get_audio_mixer, \
289
+ msm_routing_put_audio_mixer), \
290
+ SOC_SINGLE_EXT("WSA_CODEC_DMA_TX_2", WSA_CODEC_DMA_TX_2, \
291
+ id, 1, 0, msm_routing_get_audio_mixer, \
292
+ msm_routing_put_audio_mixer), \
293
+ SOC_SINGLE_EXT("VA_CODEC_DMA_TX_0", VA_CODEC_DMA_TX_0, \
294
+ id, 1, 0, msm_routing_get_audio_mixer, \
295
+ msm_routing_put_audio_mixer), \
296
+ SOC_SINGLE_EXT("VA_CODEC_DMA_TX_1", VA_CODEC_DMA_TX_1, \
297
+ id, 1, 0, msm_routing_get_audio_mixer, \
298
+ msm_routing_put_audio_mixer), \
299
+ SOC_SINGLE_EXT("VA_CODEC_DMA_TX_2", VA_CODEC_DMA_TX_2, \
300
+ id, 1, 0, msm_routing_get_audio_mixer, \
301
+ msm_routing_put_audio_mixer), \
302
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_0", TX_CODEC_DMA_TX_0, \
303
+ id, 1, 0, msm_routing_get_audio_mixer, \
304
+ msm_routing_put_audio_mixer), \
305
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_1", TX_CODEC_DMA_TX_1, \
306
+ id, 1, 0, msm_routing_get_audio_mixer, \
307
+ msm_routing_put_audio_mixer), \
308
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_2", TX_CODEC_DMA_TX_2, \
309
+ id, 1, 0, msm_routing_get_audio_mixer, \
310
+ msm_routing_put_audio_mixer), \
311
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_3", TX_CODEC_DMA_TX_3, \
312
+ id, 1, 0, msm_routing_get_audio_mixer, \
313
+ msm_routing_put_audio_mixer), \
314
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_4", TX_CODEC_DMA_TX_4, \
315
+ id, 1, 0, msm_routing_get_audio_mixer, \
316
+ msm_routing_put_audio_mixer), \
317
+ SOC_SINGLE_EXT("TX_CODEC_DMA_TX_5", TX_CODEC_DMA_TX_5, \
270318 id, 1, 0, msm_routing_get_audio_mixer, \
271319 msm_routing_put_audio_mixer),
272320
....@@ -459,6 +507,9 @@
459507 static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
460508 Q6ROUTING_RX_MIXERS(HDMI_RX) };
461509
510
+static const struct snd_kcontrol_new display_port_mixer_controls[] = {
511
+ Q6ROUTING_RX_MIXERS(DISPLAY_PORT_RX) };
512
+
462513 static const struct snd_kcontrol_new primary_mi2s_rx_mixer_controls[] = {
463514 Q6ROUTING_RX_MIXERS(PRIMARY_MI2S_RX) };
464515
....@@ -612,6 +663,36 @@
612663 static const struct snd_kcontrol_new quin_tdm_rx_7_mixer_controls[] = {
613664 Q6ROUTING_RX_MIXERS(QUINARY_TDM_RX_7) };
614665
666
+static const struct snd_kcontrol_new wsa_codec_dma_rx_0_mixer_controls[] = {
667
+ Q6ROUTING_RX_MIXERS(WSA_CODEC_DMA_RX_0) };
668
+
669
+static const struct snd_kcontrol_new wsa_codec_dma_rx_1_mixer_controls[] = {
670
+ Q6ROUTING_RX_MIXERS(WSA_CODEC_DMA_RX_1) };
671
+
672
+static const struct snd_kcontrol_new rx_codec_dma_rx_0_mixer_controls[] = {
673
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_0) };
674
+
675
+static const struct snd_kcontrol_new rx_codec_dma_rx_1_mixer_controls[] = {
676
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_1) };
677
+
678
+static const struct snd_kcontrol_new rx_codec_dma_rx_2_mixer_controls[] = {
679
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_2) };
680
+
681
+static const struct snd_kcontrol_new rx_codec_dma_rx_3_mixer_controls[] = {
682
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_3) };
683
+
684
+static const struct snd_kcontrol_new rx_codec_dma_rx_4_mixer_controls[] = {
685
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_4) };
686
+
687
+static const struct snd_kcontrol_new rx_codec_dma_rx_5_mixer_controls[] = {
688
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_5) };
689
+
690
+static const struct snd_kcontrol_new rxcodec_dma_rx_6_mixer_controls[] = {
691
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_6) };
692
+
693
+static const struct snd_kcontrol_new rx_codec_dma_rx_7_mixer_controls[] = {
694
+ Q6ROUTING_RX_MIXERS(RX_CODEC_DMA_RX_7) };
695
+
615696
616697 static const struct snd_kcontrol_new mmul1_mixer_controls[] = {
617698 Q6ROUTING_TX_MIXERS(MSM_FRONTEND_DAI_MULTIMEDIA1) };
....@@ -638,28 +719,14 @@
638719 Q6ROUTING_TX_MIXERS(MSM_FRONTEND_DAI_MULTIMEDIA8) };
639720
640721 static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
641
- /* Frontend AIF */
642
- SND_SOC_DAPM_AIF_IN("MM_DL1", "MultiMedia1 Playback", 0, 0, 0, 0),
643
- SND_SOC_DAPM_AIF_IN("MM_DL2", "MultiMedia2 Playback", 0, 0, 0, 0),
644
- SND_SOC_DAPM_AIF_IN("MM_DL3", "MultiMedia3 Playback", 0, 0, 0, 0),
645
- SND_SOC_DAPM_AIF_IN("MM_DL4", "MultiMedia4 Playback", 0, 0, 0, 0),
646
- SND_SOC_DAPM_AIF_IN("MM_DL5", "MultiMedia5 Playback", 0, 0, 0, 0),
647
- SND_SOC_DAPM_AIF_IN("MM_DL6", "MultiMedia6 Playback", 0, 0, 0, 0),
648
- SND_SOC_DAPM_AIF_IN("MM_DL7", "MultiMedia7 Playback", 0, 0, 0, 0),
649
- SND_SOC_DAPM_AIF_IN("MM_DL8", "MultiMedia8 Playback", 0, 0, 0, 0),
650
- SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0),
651
- SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0),
652
- SND_SOC_DAPM_AIF_OUT("MM_UL3", "MultiMedia3 Capture", 0, 0, 0, 0),
653
- SND_SOC_DAPM_AIF_OUT("MM_UL4", "MultiMedia4 Capture", 0, 0, 0, 0),
654
- SND_SOC_DAPM_AIF_OUT("MM_UL5", "MultiMedia5 Capture", 0, 0, 0, 0),
655
- SND_SOC_DAPM_AIF_OUT("MM_UL6", "MultiMedia6 Capture", 0, 0, 0, 0),
656
- SND_SOC_DAPM_AIF_OUT("MM_UL7", "MultiMedia7 Capture", 0, 0, 0, 0),
657
- SND_SOC_DAPM_AIF_OUT("MM_UL8", "MultiMedia8 Capture", 0, 0, 0, 0),
658
-
659722 /* Mixer definitions */
660723 SND_SOC_DAPM_MIXER("HDMI Mixer", SND_SOC_NOPM, 0, 0,
661724 hdmi_mixer_controls,
662725 ARRAY_SIZE(hdmi_mixer_controls)),
726
+
727
+ SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
728
+ display_port_mixer_controls,
729
+ ARRAY_SIZE(display_port_mixer_controls)),
663730
664731 SND_SOC_DAPM_MIXER("SLIMBUS_0_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
665732 slimbus_rx_mixer_controls,
....@@ -818,6 +885,37 @@
818885 SND_SOC_DAPM_MIXER("QUIN_TDM_RX_7 Audio Mixer", SND_SOC_NOPM, 0, 0,
819886 quin_tdm_rx_7_mixer_controls,
820887 ARRAY_SIZE(quin_tdm_rx_7_mixer_controls)),
888
+
889
+ SND_SOC_DAPM_MIXER("WSA_CODEC_DMA_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
890
+ wsa_codec_dma_rx_0_mixer_controls,
891
+ ARRAY_SIZE(wsa_codec_dma_rx_0_mixer_controls)),
892
+ SND_SOC_DAPM_MIXER("WSA_CODEC_DMA_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
893
+ wsa_codec_dma_rx_1_mixer_controls,
894
+ ARRAY_SIZE(wsa_codec_dma_rx_1_mixer_controls)),
895
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
896
+ rx_codec_dma_rx_0_mixer_controls,
897
+ ARRAY_SIZE(rx_codec_dma_rx_0_mixer_controls)),
898
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0,
899
+ rx_codec_dma_rx_1_mixer_controls,
900
+ ARRAY_SIZE(rx_codec_dma_rx_1_mixer_controls)),
901
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_2 Audio Mixer", SND_SOC_NOPM, 0, 0,
902
+ rx_codec_dma_rx_2_mixer_controls,
903
+ ARRAY_SIZE(rx_codec_dma_rx_2_mixer_controls)),
904
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
905
+ rx_codec_dma_rx_3_mixer_controls,
906
+ ARRAY_SIZE(rx_codec_dma_rx_3_mixer_controls)),
907
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_4 Audio Mixer", SND_SOC_NOPM, 0, 0,
908
+ rx_codec_dma_rx_4_mixer_controls,
909
+ ARRAY_SIZE(rx_codec_dma_rx_4_mixer_controls)),
910
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_5 Audio Mixer", SND_SOC_NOPM, 0, 0,
911
+ rx_codec_dma_rx_5_mixer_controls,
912
+ ARRAY_SIZE(rx_codec_dma_rx_5_mixer_controls)),
913
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_6 Audio Mixer", SND_SOC_NOPM, 0, 0,
914
+ rxcodec_dma_rx_6_mixer_controls,
915
+ ARRAY_SIZE(rxcodec_dma_rx_6_mixer_controls)),
916
+ SND_SOC_DAPM_MIXER("RX_CODEC_DMA_RX_7 Audio Mixer", SND_SOC_NOPM, 0, 0,
917
+ rx_codec_dma_rx_7_mixer_controls,
918
+ ARRAY_SIZE(rx_codec_dma_rx_7_mixer_controls)),
821919 SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0,
822920 mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)),
823921 SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0,
....@@ -839,6 +937,8 @@
839937
840938 static const struct snd_soc_dapm_route intercon[] = {
841939 Q6ROUTING_RX_DAPM_ROUTE("HDMI Mixer", "HDMI_RX"),
940
+ Q6ROUTING_RX_DAPM_ROUTE("DISPLAY_PORT_RX Audio Mixer",
941
+ "DISPLAY_PORT_RX"),
842942 Q6ROUTING_RX_DAPM_ROUTE("SLIMBUS_0_RX Audio Mixer", "SLIMBUS_0_RX"),
843943 Q6ROUTING_RX_DAPM_ROUTE("SLIMBUS_1_RX Audio Mixer", "SLIMBUS_1_RX"),
844944 Q6ROUTING_RX_DAPM_ROUTE("SLIMBUS_2_RX Audio Mixer", "SLIMBUS_2_RX"),
....@@ -898,6 +998,16 @@
898998 Q6ROUTING_RX_DAPM_ROUTE("QUIN_TDM_RX_5 Audio Mixer", "QUIN_TDM_RX_5"),
899999 Q6ROUTING_RX_DAPM_ROUTE("QUIN_TDM_RX_6 Audio Mixer", "QUIN_TDM_RX_6"),
9001000 Q6ROUTING_RX_DAPM_ROUTE("QUIN_TDM_RX_7 Audio Mixer", "QUIN_TDM_RX_7"),
1001
+ Q6ROUTING_RX_DAPM_ROUTE("WSA_CODEC_DMA_RX_0 Audio Mixer", "WSA_CODEC_DMA_RX_0"),
1002
+ Q6ROUTING_RX_DAPM_ROUTE("WSA_CODEC_DMA_RX_1 Audio Mixer", "WSA_CODEC_DMA_RX_1"),
1003
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_0 Audio Mixer", "RX_CODEC_DMA_RX_0"),
1004
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_1 Audio Mixer", "RX_CODEC_DMA_RX_1"),
1005
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_2 Audio Mixer", "RX_CODEC_DMA_RX_2"),
1006
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_3 Audio Mixer", "RX_CODEC_DMA_RX_3"),
1007
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_4 Audio Mixer", "RX_CODEC_DMA_RX_4"),
1008
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_5 Audio Mixer", "RX_CODEC_DMA_RX_5"),
1009
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_6 Audio Mixer", "RX_CODEC_DMA_RX_6"),
1010
+ Q6ROUTING_RX_DAPM_ROUTE("RX_CODEC_DMA_RX_7 Audio Mixer", "RX_CODEC_DMA_RX_7"),
9011011 Q6ROUTING_TX_DAPM_ROUTE("MultiMedia1 Mixer"),
9021012 Q6ROUTING_TX_DAPM_ROUTE("MultiMedia2 Mixer"),
9031013 Q6ROUTING_TX_DAPM_ROUTE("MultiMedia3 Mixer"),
....@@ -917,13 +1027,13 @@
9171027 {"MM_UL8", NULL, "MultiMedia8 Mixer"},
9181028 };
9191029
920
-static int routing_hw_params(struct snd_pcm_substream *substream,
921
- struct snd_pcm_hw_params *params)
1030
+static int routing_hw_params(struct snd_soc_component *component,
1031
+ struct snd_pcm_substream *substream,
1032
+ struct snd_pcm_hw_params *params)
9221033 {
923
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
924
- struct snd_soc_component *c = snd_soc_rtdcom_lookup(rtd, DRV_NAME);
925
- struct msm_routing_data *data = dev_get_drvdata(c->dev);
926
- unsigned int be_id = rtd->cpu_dai->id;
1034
+ struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
1035
+ struct msm_routing_data *data = dev_get_drvdata(component->dev);
1036
+ unsigned int be_id = asoc_rtd_to_cpu(rtd, 0)->id;
9271037 struct session_data *session;
9281038 int path_type;
9291039
....@@ -958,10 +1068,6 @@
9581068 return 0;
9591069 }
9601070
961
-static struct snd_pcm_ops q6pcm_routing_ops = {
962
- .hw_params = routing_hw_params,
963
-};
964
-
9651071 static int msm_routing_probe(struct snd_soc_component *c)
9661072 {
9671073 int i;
....@@ -989,9 +1095,9 @@
9891095 }
9901096
9911097 static const struct snd_soc_component_driver msm_soc_routing_component = {
992
- .ops = &q6pcm_routing_ops,
9931098 .probe = msm_routing_probe,
9941099 .name = DRV_NAME,
1100
+ .hw_params = routing_hw_params,
9951101 .dapm_widgets = msm_qdsp6_widgets,
9961102 .num_dapm_widgets = ARRAY_SIZE(msm_qdsp6_widgets),
9971103 .dapm_routes = intercon,
....@@ -1025,11 +1131,13 @@
10251131 return 0;
10261132 }
10271133
1134
+#ifdef CONFIG_OF
10281135 static const struct of_device_id q6pcm_routing_device_id[] = {
10291136 { .compatible = "qcom,q6adm-routing" },
10301137 {},
10311138 };
10321139 MODULE_DEVICE_TABLE(of, q6pcm_routing_device_id);
1140
+#endif
10331141
10341142 static struct platform_driver q6pcm_routing_platform_driver = {
10351143 .driver = {