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	status = "okay";
145};
146
147&swr0 {
148	status = "okay";
149};
150
151&swr1 {
152	status = "okay";
153};
154
155&wcd9385 {
156	status = "okay";
157};
158
159/* PINCTRL */
160
161&lpass_dmic01_clk {
162	drive-strength = <8>;
163	bias-disable;
164};
165
166&lpass_dmic01_data {
167	bias-pull-down;
168};
169
170&lpass_dmic23_clk {
171	drive-strength = <8>;
172	bias-disable;
173};
174
175&lpass_dmic23_data {
176	bias-pull-down;
177};
178
179&lpass_rx_swr_clk {
180	drive-strength = <2>;
181	slew-rate = <1>;
182	bias-disable;
183};
184
185&lpass_rx_swr_data {
186	drive-strength = <2>;
187	slew-rate = <1>;
188	bias-bus-hold;
189};
190
191&lpass_tx_swr_clk {
192	drive-strength = <2>;
193	slew-rate = <1>;
194	bias-disable;
195};
196
197&lpass_tx_swr_data {
198	drive-strength = <2>;
199	slew-rate = <1>;
200	bias-bus-hold;
201};
202
203&mi2s1_data0 {
204	drive-strength = <6>;
205	bias-disable;
206};
207
208&mi2s1_sclk {
209	drive-strength = <6>;
210	bias-disable;
211};
212
213&mi2s1_ws {
214	drive-strength = <6>;
215};
216