Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / amlogic / meson-g12a-radxa-zero.dts
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
63         ao_5v: regulator-ao_5v {
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
71         vcc_1v8: regulator-vcc_1v8 {
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
80         vcc_3v3: regulator-vcc_3v3 {
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
89         hdmi_pw: regulator-hdmi_pw {
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
98         vddao_1v8: regulator-vddao_1v8 {
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
107         vddao_3v3: regulator-vddao_3v3 {
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>;
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";
403 };