xref: /linux/arch/arm64/boot/dts/qcom/sc7280-herobrine-audio-wcd9385.dtsi (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * sc7280 device tree source for boards using Max98360 and wcd9385 codec
4 *
5 * Copyright (c) 2022, The Linux Foundation. All rights reserved.
6 */
7
8/ {
9	/* BOARD-SPECIFIC TOP LEVEL NODES */
10	sound: sound {
11		compatible = "google,sc7280-herobrine";
12		model = "sc7280-wcd938x-max98360a-1mic";
13
14		audio-routing =
15			"IN1_HPHL", "HPHL_OUT",
16			"IN2_HPHR", "HPHR_OUT",
17			"AMIC1", "MIC BIAS1",
18			"AMIC2", "MIC BIAS2",
19			"VA DMIC0", "MIC BIAS1",
20			"VA DMIC1", "MIC BIAS1",
21			"VA DMIC2", "MIC BIAS3",
22			"VA DMIC3", "MIC BIAS3",
23			"TX SWR_ADC0", "ADC1_OUTPUT",
24			"TX SWR_ADC1", "ADC2_OUTPUT",
25			"TX SWR_ADC2", "ADC3_OUTPUT",
26			"TX SWR_DMIC0", "DMIC1_OUTPUT",
27			"TX SWR_DMIC1", "DMIC2_OUTPUT",
28			"TX SWR_DMIC2", "DMIC3_OUTPUT",
29			"TX SWR_DMIC3", "DMIC4_OUTPUT",
30			"TX SWR_DMIC4", "DMIC5_OUTPUT",
31			"TX SWR_DMIC5", "DMIC6_OUTPUT",
32			"TX SWR_DMIC6", "DMIC7_OUTPUT",
33			"TX SWR_DMIC7", "DMIC8_OUTPUT";
34
35		#address-cells = <1>;
36		#size-cells = <0>;
37
38		dai-link@0 {
39			link-name = "MAX98360A";
40			reg = <0>;
41
42			cpu {
43				sound-dai = <&lpass_cpu MI2S_SECONDARY>;
44			};
45
46			codec {
47				sound-dai = <&max98360a>;
48			};
49		};
50
51		dai-link@1 {
52			link-name = "DisplayPort";
53			reg = <1>;
54
55			cpu {
56				sound-dai = <&lpass_cpu LPASS_DP_RX>;
57			};
58
59			codec {
60				sound-dai = <&mdss_dp>;
61			};
62		};
63
64		dai-link@2 {
65			link-name = "WCD9385 Playback";
66			reg = <2>;
67
68			cpu {
69				sound-dai = <&lpass_cpu LPASS_CDC_DMA_RX0>;
70			};
71
72			codec {
73				sound-dai = <&wcd9385 0>, <&swr0 0>, <&lpass_rx_macro 0>;
74			};
75		};
76
77		dai-link@3 {
78			link-name = "WCD9385 Capture";
79			reg = <3>;
80
81			cpu {
82				sound-dai = <&lpass_cpu LPASS_CDC_DMA_TX3>;
83			};
84
85			codec {
86				sound-dai = <&wcd9385 1>, <&swr1 0>, <&lpass_tx_macro 0>;
87			};
88		};
89
90		dai-link@4 {
91			link-name = "DMIC";
92			reg = <4>;
93
94			cpu {
95				sound-dai = <&lpass_cpu LPASS_CDC_DMA_VA_TX0>;
96			};
97
98			codec {
99				sound-dai = <&lpass_va_macro 0>;
100			};
101		};
102	};
103};
104
105/* ADDITIONS TO NODES DEFINED IN PARENT DEVICE TREE FILES */
106
107&lpass_cpu {
108	status = "okay";
109
110	pinctrl-names = "default";
111	pinctrl-0 = <&mi2s1_data0>, <&mi2s1_sclk>, <&mi2s1_ws>;
112
113	dai-link@1 {
114		reg = <MI2S_SECONDARY>;
115		qcom,playback-sd-lines = <0>;
116	};
117
118	dai-link@5 {
119		reg = <LPASS_DP_RX>;
120	};
121
122	dai-link@6 {
123		reg = <LPASS_CDC_DMA_RX0>;
124	};
125
126	dai-link@19 {
127		reg = <LPASS_CDC_DMA_TX3>;
128	};
129
130	dai-link@25 {
131		reg = <LPASS_CDC_DMA_VA_TX0>;
132	};
133};
134
135&lpass_rx_macro {
136	status = "okay";
137};
138
139&lpass_tx_macro {
140	status = "okay";
141};
142
143&lpass_va_macro {
144	pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>;
145	pinctrl-names = "default";
146
147	status = "okay";
148};
149
150&swr0 {
151	status = "okay";
152};
153
154&swr1 {
155	status = "okay";
156};
157
158&wcd9385 {
159	status = "okay";
160};
161
162/* PINCTRL */
163
164&lpass_dmic01_clk {
165	drive-strength = <8>;
166	bias-disable;
167};
168
169&lpass_dmic01_data {
170	bias-pull-down;
171};
172
173&lpass_dmic23_clk {
174	drive-strength = <8>;
175	bias-disable;
176};
177
178&lpass_dmic23_data {
179	bias-pull-down;
180};
181
182&lpass_rx_swr_clk {
183	drive-strength = <2>;
184	slew-rate = <1>;
185	bias-disable;
186};
187
188&lpass_rx_swr_data {
189	drive-strength = <2>;
190	slew-rate = <1>;
191	bias-bus-hold;
192};
193
194&lpass_tx_swr_clk {
195	drive-strength = <2>;
196	slew-rate = <1>;
197	bias-disable;
198};
199
200&lpass_tx_swr_data {
201	drive-strength = <2>;
202	slew-rate = <1>;
203	bias-bus-hold;
204};
205
206&mi2s1_data0 {
207	drive-strength = <6>;
208	bias-disable;
209};
210
211&mi2s1_sclk {
212	drive-strength = <6>;
213	bias-disable;
214};
215
216&mi2s1_ws {
217	drive-strength = <6>;
218};
219