1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2022 Vyacheslav Bocharov <adeep@lexina.in>
4 * Copyright (c) 2022 JetHome
5 * Author: Vyacheslav Bocharov <adeep@lexina.in>
6 * Author: Aleksandr Kazantsev <ak@tvip.ru>
7 * Author: Alexey Shevelkin <ash@tvip.ru>
8 */
9
10/dts-v1/;
11
12#include "meson-axg.dtsi"
13#include <dt-bindings/input/input.h>
14#include <dt-bindings/thermal/thermal.h>
15
16/ {
17	aliases {
18		serial0 = &uart_AO;   /* Console */
19		serial2 = &uart_AO_B; /* External UART (Wireless Module) */
20		ethernet0 = &ethmac;
21	};
22
23	chosen {
24		stdout-path = "serial0:115200n8";
25	};
26
27	reserved-memory {
28		linux,cma {
29			size = <0x0 0x400000>;
30		};
31	};
32
33	emmc_pwrseq: emmc-pwrseq {
34		compatible = "mmc-pwrseq-emmc";
35		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
36	};
37
38	vcc_3v3: regulator-vcc_3v3 {
39		compatible = "regulator-fixed";
40		regulator-name = "VCC_3V3";
41		regulator-min-microvolt = <3300000>;
42		regulator-max-microvolt = <3300000>;
43		vin-supply = <&vddao_3v3>;
44		regulator-always-on;
45	};
46
47	vcc_5v: regulator-vcc_5v {
48		compatible = "regulator-fixed";
49		regulator-name = "VCC5V";
50		regulator-min-microvolt = <5000000>;
51		regulator-max-microvolt = <5000000>;
52		regulator-always-on;
53	};
54
55	vddao_3v3: regulator-vddao_3v3 {
56		compatible = "regulator-fixed";
57		regulator-name = "VDDAO_3V3";
58		regulator-min-microvolt = <3300000>;
59		regulator-max-microvolt = <3300000>;
60		vin-supply = <&vcc_5v>;
61		regulator-always-on;
62	};
63
64	vddio_ao18: regulator-vddio_ao18 {
65		compatible = "regulator-fixed";
66		regulator-name = "VDDIO_AO18";
67		regulator-min-microvolt = <1800000>;
68		regulator-max-microvolt = <1800000>;
69		vin-supply = <&vddao_3v3>;
70		regulator-always-on;
71	};
72
73	vddio_boot: regulator-vddio_boot {
74		compatible = "regulator-fixed";
75		regulator-name = "VDDIO_BOOT";
76		regulator-min-microvolt = <3300000>;
77		regulator-max-microvolt = <3300000>;
78		vin-supply = <&vddao_3v3>;
79		regulator-always-on;
80	};
81
82	vccq_1v8: regulator-vccq_1v8 {
83		compatible = "regulator-fixed";
84		regulator-name = "VCCQ_1V8";
85		regulator-min-microvolt = <1800000>;
86		regulator-max-microvolt = <1800000>;
87		vin-supply = <&vddao_3v3>;
88		regulator-always-on;
89	};
90
91	usb_pwr: regulator-usb_pwr {
92		compatible = "regulator-fixed";
93		regulator-name = "USB_PWR";
94		regulator-min-microvolt = <5000000>;
95		regulator-max-microvolt = <5000000>;
96		vin-supply = <&vcc_5v>;
97		regulator-always-on;
98	};
99
100	sdio_pwrseq: sdio-pwrseq {
101		compatible = "mmc-pwrseq-simple";
102		reset-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
103		clocks = <&wifi32k>;
104		clock-names = "ext_clock";
105	};
106
107	wifi32k: wifi32k {
108		compatible = "pwm-clock";
109		#clock-cells = <0>;
110		clock-frequency = <32768>;
111		pwms = <&pwm_ab 0 30518 0>; /* PWM_A at 32.768KHz */
112	};
113
114	thermal-zones {
115		cpu_thermal: cpu-thermal {
116			polling-delay-passive = <250>;
117			polling-delay = <1000>;
118			thermal-sensors = <&scpi_sensors 0>;
119			trips {
120				cpu_passive: cpu-passive {
121					temperature = <70000>; /* millicelsius */
122					hysteresis = <2000>; /* millicelsius */
123					type = "passive";
124				};
125
126				cpu_hot: cpu-hot {
127					temperature = <80000>; /* millicelsius */
128					hysteresis = <2000>; /* millicelsius */
129					type = "hot";
130				};
131
132				cpu_critical: cpu-critical {
133					temperature = <100000>; /* millicelsius */
134					hysteresis = <2000>; /* millicelsius */
135					type = "critical";
136				};
137			};
138
139			cpu_cooling_maps: cooling-maps {
140				map0 {
141					trip = <&cpu_passive>;
142					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
143							<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
144							<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
145							<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
146				};
147
148				map1 {
149					trip = <&cpu_hot>;
150					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
151							<&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
152							<&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
153							<&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
154				};
155			};
156		};
157	};
158
159	onewire {
160		compatible = "w1-gpio";
161		gpios = <&gpio GPIOA_14 GPIO_ACTIVE_HIGH>;
162		#gpio-cells = <1>;
163	};
164};
165
166&efuse {
167	sn: sn@32 {
168		reg = <0x32 0x20>;
169	};
170
171	eth_mac: eth_mac@0 {
172		reg = <0x0 0x6>;
173	};
174
175	bt_mac: bt_mac@6 {
176		reg = <0x6 0x6>;
177	};
178
179	wifi_mac: wifi_mac@c {
180		reg = <0xc 0x6>;
181	};
182
183	bid: bid@12 {
184		reg = <0x12 0x20>;
185	};
186};
187
188&ethmac {
189	status = "okay";
190	pinctrl-0 = <&eth_rmii_x_pins>;
191	pinctrl-names = "default";
192	phy-handle = <&eth_phy0>;
193	phy-mode = "rmii";
194
195	mdio {
196		compatible = "snps,dwmac-mdio";
197		#address-cells = <1>;
198		#size-cells = <0>;
199
200		/* ICPlus IP101A/G Ethernet PHY (vendor_id=0x0243, model_id=0x0c54) */
201		eth_phy0: ethernet-phy@0 {
202			/* compatible = "ethernet-phy-id0243.0c54";*/
203			max-speed = <100>;
204			reg = <0>;
205
206			reset-assert-us = <10000>;
207			reset-deassert-us = <10000>;
208			reset-gpios = <&gpio GPIOZ_5 GPIO_ACTIVE_LOW>;
209		};
210	};
211};
212
213/* Internal I2C bus (on CPU module) */
214&i2c1 {
215	status = "okay";
216	pinctrl-0 = <&i2c1_z_pins>;
217	pinctrl-names = "default";
218
219	/* RTC */
220	pcf8563: pcf8563@51 {
221		compatible = "nxp,pcf8563";
222		reg = <0x51>;
223		status = "okay";
224	};
225};
226
227/* Peripheral I2C bus (on motherboard) */
228&i2c_AO {
229	status = "okay";
230	pinctrl-0 = <&i2c_ao_sck_10_pins>, <&i2c_ao_sda_11_pins>;
231	pinctrl-names = "default";
232};
233
234&pwm_ab {
235	status = "okay";
236	pinctrl-0 = <&pwm_a_x20_pins>;
237	pinctrl-names = "default";
238};
239
240/* wifi module */
241&sd_emmc_b {
242	status = "okay";
243	#address-cells = <1>;
244	#size-cells = <0>;
245
246	pinctrl-0 = <&sdio_pins>;
247	pinctrl-1 = <&sdio_clk_gate_pins>;
248	pinctrl-names = "default", "clk-gate";
249
250	bus-width = <4>;
251	cap-sd-highspeed;
252	max-frequency = <50000000>;
253	disable-wp;
254
255	mmc-pwrseq = <&sdio_pwrseq>;
256
257	vmmc-supply = <&vddao_3v3>;
258	vqmmc-supply = <&vddio_boot>;
259};
260
261/* emmc storage */
262&sd_emmc_c {
263	status = "okay";
264	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
265	pinctrl-1 = <&emmc_clk_gate_pins>;
266	pinctrl-names = "default", "clk-gate";
267
268	bus-width = <8>;
269	cap-mmc-highspeed;
270	max-frequency = <200000000>;
271	non-removable;
272	disable-wp;
273	mmc-ddr-1_8v;
274	mmc-hs200-1_8v;
275
276	mmc-pwrseq = <&emmc_pwrseq>;
277
278	vmmc-supply = <&vcc_3v3>;
279	vqmmc-supply = <&vccq_1v8>;
280};
281
282/* UART Bluetooth */
283&uart_B {
284	status = "okay";
285	pinctrl-0 = <&uart_b_z_pins>, <&uart_b_z_cts_rts_pins>;
286	pinctrl-names = "default";
287	uart-has-rtscts;
288};
289
290/* UART Console */
291&uart_AO {
292	status = "okay";
293	pinctrl-0 = <&uart_ao_a_pins>;
294	pinctrl-names = "default";
295};
296
297/* UART Wireless module */
298&uart_AO_B {
299	status = "okay";
300	pinctrl-0 = <&uart_ao_b_pins>;
301	pinctrl-names = "default";
302};
303
304&usb {
305	status = "okay";
306	phy-supply = <&usb_pwr>;
307};
308
309&spicc1 {
310	status = "okay";
311	pinctrl-0 = <&spi1_x_pins>, <&spi1_ss0_x_pins>;
312	pinctrl-names = "default";
313};
314
315&gpio {
316	gpio-line-names =
317		"", "", "", "", "", // 0 - 4
318		"", "", "", "", "", // 5 - 9
319		"UserButton", "", "", "", "", // 10 - 14
320		"", "", "", "", "", // 15 - 19
321		"", "", "", "", "", // 20 - 24
322		"", "LedRed", "LedGreen", "Output3", "Output2", // 25 - 29
323		"Output1", "", "", "", "", // 30 - 34
324		"", "ZigBeeBOOT", "", "", "", // 35 - 39
325		"1Wire", "ZigBeeRESET", "", "Input4", "Input3", // 40 - 44
326		"Input2", "Input1", "", "", "", // 45 - 49
327		"", "", "", "", "", // 50 - 54
328		"", "", "", "", "", // 55 - 59
329		"", "", "", "", "", // 60 - 64
330		"", "", "", "", "", // 65 - 69
331		"", "", "", "", "", // 70 - 74
332		"", "", "", "", "", // 75 - 79
333		"", "", "", "", "", // 80 - 84
334		"", ""; // 85-86
335};
336
337&cpu0 {
338	#cooling-cells = <2>;
339};
340
341&cpu1 {
342	#cooling-cells = <2>;
343};
344
345&cpu2 {
346	#cooling-cells = <2>;
347};
348
349&cpu3 {
350	#cooling-cells = <2>;
351};
352