Merge tag 'soc-drivers-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-block.git] / arch / arm64 / boot / dts / amlogic / meson-g12a-radxa-zero.dts
CommitLineData
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};