Commit | Line | Data |
---|---|---|
26d1400f CH |
1 | // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
2 | /* | |
3 | * Copyright (c) 2018 BayLibre SAS. All rights reserved. | |
4 | */ | |
5 | ||
6 | /dts-v1/; | |
7 | ||
8 | #include "meson-g12a.dtsi" | |
9 | #include <dt-bindings/gpio/meson-g12a-gpio.h> | |
10 | #include <dt-bindings/sound/meson-g12a-tohdmitx.h> | |
11 | ||
12 | / { | |
13 | compatible = "radxa,zero", "amlogic,g12a"; | |
14 | model = "Radxa Zero"; | |
15 | ||
16 | aliases { | |
17 | serial0 = &uart_AO; | |
18 | }; | |
19 | ||
20 | chosen { | |
21 | stdout-path = "serial0:115200n8"; | |
22 | }; | |
23 | ||
24 | memory@0 { | |
25 | device_type = "memory"; | |
26 | reg = <0x0 0x0 0x0 0x40000000>; | |
27 | }; | |
28 | ||
29 | cvbs-connector { | |
30 | status = "disabled"; | |
31 | compatible = "composite-video-connector"; | |
32 | ||
33 | port { | |
34 | cvbs_connector_in: endpoint { | |
35 | remote-endpoint = <&cvbs_vdac_out>; | |
36 | }; | |
37 | }; | |
38 | }; | |
39 | ||
40 | hdmi-connector { | |
41 | compatible = "hdmi-connector"; | |
42 | type = "a"; | |
43 | ||
44 | port { | |
45 | hdmi_connector_in: endpoint { | |
46 | remote-endpoint = <&hdmi_tx_tmds_out>; | |
47 | }; | |
48 | }; | |
49 | }; | |
50 | ||
51 | emmc_pwrseq: emmc-pwrseq { | |
52 | compatible = "mmc-pwrseq-emmc"; | |
53 | reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | |
54 | }; | |
55 | ||
56 | sdio_pwrseq: sdio-pwrseq { | |
57 | compatible = "mmc-pwrseq-simple"; | |
58 | reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | |
59 | clocks = <&wifi32k>; | |
60 | clock-names = "ext_clock"; | |
61 | }; | |
62 | ||
f0ed445e | 63 | ao_5v: regulator-ao-5v { |
26d1400f CH |
64 | compatible = "regulator-fixed"; |
65 | regulator-name = "AO_5V"; | |
66 | regulator-min-microvolt = <5000000>; | |
67 | regulator-max-microvolt = <5000000>; | |
68 | regulator-always-on; | |
69 | }; | |
70 | ||
f0ed445e | 71 | vcc_1v8: regulator-vcc-1v8 { |
26d1400f CH |
72 | compatible = "regulator-fixed"; |
73 | regulator-name = "VCC_1V8"; | |
74 | regulator-min-microvolt = <1800000>; | |
75 | regulator-max-microvolt = <1800000>; | |
76 | vin-supply = <&vcc_3v3>; | |
77 | regulator-always-on; | |
78 | }; | |
79 | ||
f0ed445e | 80 | vcc_3v3: regulator-vcc-3v3 { |
26d1400f CH |
81 | compatible = "regulator-fixed"; |
82 | regulator-name = "VCC_3V3"; | |
83 | regulator-min-microvolt = <3300000>; | |
84 | regulator-max-microvolt = <3300000>; | |
85 | vin-supply = <&vddao_3v3>; | |
86 | regulator-always-on; | |
87 | }; | |
88 | ||
f0ed445e | 89 | hdmi_pw: regulator-hdmi-pw { |
26d1400f CH |
90 | compatible = "regulator-fixed"; |
91 | regulator-name = "HDMI_PW"; | |
92 | regulator-min-microvolt = <5000000>; | |
93 | regulator-max-microvolt = <5000000>; | |
94 | vin-supply = <&ao_5v>; | |
95 | regulator-always-on; | |
96 | }; | |
97 | ||
f0ed445e | 98 | vddao_1v8: regulator-vddao-1v8 { |
26d1400f CH |
99 | compatible = "regulator-fixed"; |
100 | regulator-name = "VDDAO_1V8"; | |
101 | regulator-min-microvolt = <1800000>; | |
102 | regulator-max-microvolt = <1800000>; | |
103 | vin-supply = <&vddao_3v3>; | |
104 | regulator-always-on; | |
105 | }; | |
106 | ||
f0ed445e | 107 | vddao_3v3: regulator-vddao-3v3 { |
26d1400f CH |
108 | compatible = "regulator-fixed"; |
109 | regulator-name = "VDDAO_3V3"; | |
110 | regulator-min-microvolt = <3300000>; | |
111 | regulator-max-microvolt = <3300000>; | |
112 | vin-supply = <&ao_5v>; | |
113 | regulator-always-on; | |
114 | }; | |
115 | ||
116 | vddcpu: regulator-vddcpu { | |
117 | compatible = "pwm-regulator"; | |
118 | ||
119 | regulator-name = "VDDCPU"; | |
120 | regulator-min-microvolt = <721000>; | |
121 | regulator-max-microvolt = <1022000>; | |
122 | ||
123 | vin-supply = <&ao_5v>; | |
124 | ||
125 | pwms = <&pwm_AO_cd 1 1250 0>; | |
126 | pwm-dutycycle-range = <100 0>; | |
127 | ||
128 | regulator-boot-on; | |
129 | regulator-always-on; | |
130 | }; | |
131 | ||
132 | sound { | |
133 | compatible = "amlogic,axg-sound-card"; | |
134 | model = "RADXA-ZERO"; | |
135 | audio-aux-devs = <&tdmout_b>; | |
136 | audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", | |
137 | "TDMOUT_B IN 1", "FRDDR_B OUT 1", | |
138 | "TDMOUT_B IN 2", "FRDDR_C OUT 1", | |
139 | "TDM_B Playback", "TDMOUT_B OUT"; | |
140 | ||
141 | assigned-clocks = <&clkc CLKID_MPLL2>, | |
142 | <&clkc CLKID_MPLL0>, | |
143 | <&clkc CLKID_MPLL1>; | |
144 | assigned-clock-parents = <0>, <0>, <0>; | |
145 | assigned-clock-rates = <294912000>, | |
146 | <270950400>, | |
147 | <393216000>; | |
26d1400f CH |
148 | |
149 | dai-link-0 { | |
150 | sound-dai = <&frddr_a>; | |
151 | }; | |
152 | ||
153 | dai-link-1 { | |
154 | sound-dai = <&frddr_b>; | |
155 | }; | |
156 | ||
157 | dai-link-2 { | |
158 | sound-dai = <&frddr_c>; | |
159 | }; | |
160 | ||
161 | /* 8ch hdmi interface */ | |
162 | dai-link-3 { | |
163 | sound-dai = <&tdmif_b>; | |
164 | dai-format = "i2s"; | |
165 | dai-tdm-slot-tx-mask-0 = <1 1>; | |
166 | dai-tdm-slot-tx-mask-1 = <1 1>; | |
167 | dai-tdm-slot-tx-mask-2 = <1 1>; | |
168 | dai-tdm-slot-tx-mask-3 = <1 1>; | |
169 | mclk-fs = <256>; | |
170 | ||
171 | codec { | |
172 | sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; | |
173 | }; | |
174 | }; | |
175 | ||
176 | dai-link-4 { | |
177 | sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | |
178 | ||
179 | codec { | |
180 | sound-dai = <&hdmi_tx>; | |
181 | }; | |
182 | }; | |
183 | }; | |
184 | ||
185 | wifi32k: wifi32k { | |
186 | compatible = "pwm-clock"; | |
187 | #clock-cells = <0>; | |
188 | clock-frequency = <32768>; | |
189 | pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | |
190 | }; | |
191 | }; | |
192 | ||
193 | &arb { | |
194 | status = "okay"; | |
195 | }; | |
196 | ||
197 | &cec_AO { | |
198 | pinctrl-0 = <&cec_ao_a_h_pins>; | |
199 | pinctrl-names = "default"; | |
200 | status = "disabled"; | |
201 | hdmi-phandle = <&hdmi_tx>; | |
202 | }; | |
203 | ||
204 | &cecb_AO { | |
205 | pinctrl-0 = <&cec_ao_b_h_pins>; | |
206 | pinctrl-names = "default"; | |
207 | status = "okay"; | |
208 | hdmi-phandle = <&hdmi_tx>; | |
209 | }; | |
210 | ||
211 | &clkc_audio { | |
212 | status = "okay"; | |
213 | }; | |
214 | ||
215 | &cpu0 { | |
216 | cpu-supply = <&vddcpu>; | |
217 | operating-points-v2 = <&cpu_opp_table>; | |
218 | clocks = <&clkc CLKID_CPU_CLK>; | |
219 | clock-latency = <50000>; | |
220 | }; | |
221 | ||
222 | &cpu1 { | |
223 | cpu-supply = <&vddcpu>; | |
224 | operating-points-v2 = <&cpu_opp_table>; | |
225 | clocks = <&clkc CLKID_CPU_CLK>; | |
226 | clock-latency = <50000>; | |
227 | }; | |
228 | ||
229 | &cpu2 { | |
230 | cpu-supply = <&vddcpu>; | |
231 | operating-points-v2 = <&cpu_opp_table>; | |
232 | clocks = <&clkc CLKID_CPU_CLK>; | |
233 | clock-latency = <50000>; | |
234 | }; | |
235 | ||
236 | &cpu3 { | |
237 | cpu-supply = <&vddcpu>; | |
238 | operating-points-v2 = <&cpu_opp_table>; | |
239 | clocks = <&clkc CLKID_CPU_CLK>; | |
240 | clock-latency = <50000>; | |
241 | }; | |
242 | ||
243 | &cvbs_vdac_port { | |
244 | cvbs_vdac_out: endpoint { | |
245 | remote-endpoint = <&cvbs_connector_in>; | |
246 | }; | |
247 | }; | |
248 | ||
249 | &frddr_a { | |
250 | status = "okay"; | |
251 | }; | |
252 | ||
253 | &frddr_b { | |
254 | status = "okay"; | |
255 | }; | |
256 | ||
257 | &frddr_c { | |
258 | status = "okay"; | |
259 | }; | |
260 | ||
261 | &hdmi_tx { | |
262 | status = "okay"; | |
263 | pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; | |
264 | pinctrl-names = "default"; | |
265 | hdmi-supply = <&hdmi_pw>; | |
266 | }; | |
267 | ||
268 | &hdmi_tx_tmds_port { | |
269 | hdmi_tx_tmds_out: endpoint { | |
270 | remote-endpoint = <&hdmi_connector_in>; | |
271 | }; | |
272 | }; | |
273 | ||
274 | &ir { | |
275 | status = "disabled"; | |
276 | pinctrl-0 = <&remote_input_ao_pins>; | |
277 | pinctrl-names = "default"; | |
278 | }; | |
279 | ||
280 | &pwm_AO_cd { | |
281 | pinctrl-0 = <&pwm_ao_d_e_pins>; | |
282 | pinctrl-names = "default"; | |
283 | clocks = <&xtal>; | |
284 | clock-names = "clkin1"; | |
285 | status = "okay"; | |
286 | }; | |
287 | ||
288 | &pwm_ef { | |
289 | status = "okay"; | |
290 | pinctrl-0 = <&pwm_e_pins>; | |
291 | pinctrl-names = "default"; | |
292 | clocks = <&xtal>; | |
293 | clock-names = "clkin0"; | |
294 | }; | |
295 | ||
296 | &saradc { | |
297 | status = "okay"; | |
298 | vref-supply = <&vddao_1v8>; | |
299 | }; | |
300 | ||
301 | /* SDIO */ | |
302 | &sd_emmc_a { | |
303 | status = "okay"; | |
304 | pinctrl-0 = <&sdio_pins>; | |
305 | pinctrl-1 = <&sdio_clk_gate_pins>; | |
306 | pinctrl-names = "default", "clk-gate"; | |
307 | #address-cells = <1>; | |
308 | #size-cells = <0>; | |
309 | ||
310 | bus-width = <4>; | |
311 | cap-sd-highspeed; | |
312 | sd-uhs-sdr50; | |
313 | max-frequency = <100000000>; | |
314 | ||
315 | non-removable; | |
316 | disable-wp; | |
317 | ||
318 | /* WiFi firmware requires power to be kept while in suspend */ | |
319 | keep-power-in-suspend; | |
320 | ||
321 | mmc-pwrseq = <&sdio_pwrseq>; | |
322 | ||
323 | vmmc-supply = <&vddao_3v3>; | |
324 | vqmmc-supply = <&vddao_1v8>; | |
325 | ||
326 | brcmf: wifi@1 { | |
327 | reg = <1>; | |
328 | compatible = "brcm,bcm4329-fmac"; | |
329 | }; | |
330 | }; | |
331 | ||
332 | /* SD card */ | |
333 | &sd_emmc_b { | |
334 | status = "okay"; | |
335 | pinctrl-0 = <&sdcard_c_pins>; | |
336 | pinctrl-1 = <&sdcard_clk_gate_c_pins>; | |
337 | pinctrl-names = "default", "clk-gate"; | |
338 | ||
339 | bus-width = <4>; | |
340 | cap-sd-highspeed; | |
341 | max-frequency = <100000000>; | |
342 | disable-wp; | |
343 | ||
344 | cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | |
345 | vmmc-supply = <&vddao_3v3>; | |
346 | vqmmc-supply = <&vddao_3v3>; | |
347 | }; | |
348 | ||
349 | /* eMMC */ | |
350 | &sd_emmc_c { | |
351 | status = "okay"; | |
352 | pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>; | |
353 | pinctrl-1 = <&emmc_clk_gate_pins>; | |
354 | pinctrl-names = "default", "clk-gate"; | |
355 | ||
356 | bus-width = <8>; | |
357 | cap-mmc-highspeed; | |
358 | mmc-ddr-1_8v; | |
359 | mmc-hs200-1_8v; | |
360 | max-frequency = <200000000>; | |
361 | disable-wp; | |
362 | ||
363 | mmc-pwrseq = <&emmc_pwrseq>; | |
364 | vmmc-supply = <&vcc_3v3>; | |
365 | vqmmc-supply = <&vcc_1v8>; | |
366 | }; | |
367 | ||
368 | &tdmif_b { | |
369 | status = "okay"; | |
370 | }; | |
371 | ||
372 | &tdmout_b { | |
373 | status = "okay"; | |
374 | }; | |
375 | ||
376 | &tohdmitx { | |
377 | status = "okay"; | |
378 | }; | |
379 | ||
380 | &uart_A { | |
381 | status = "okay"; | |
382 | pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | |
383 | pinctrl-names = "default"; | |
384 | uart-has-rtscts; | |
385 | ||
386 | bluetooth { | |
387 | compatible = "brcm,bcm43438-bt"; | |
388 | shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | |
389 | max-speed = <2000000>; | |
390 | clocks = <&wifi32k>; | |
391 | clock-names = "lpo"; | |
392 | }; | |
393 | }; | |
394 | ||
395 | &uart_AO { | |
396 | status = "okay"; | |
397 | pinctrl-0 = <&uart_ao_a_pins>; | |
398 | pinctrl-names = "default"; | |
399 | }; | |
400 | ||
401 | &usb { | |
402 | status = "okay"; | |
26d1400f | 403 | }; |