xref: /linux/arch/arm/boot/dts/rockchip/rk3128-xpi-3128.dts (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3/dts-v1/;
4
5#include <dt-bindings/input/input.h>
6#include <dt-bindings/leds/common.h>
7#include "rk3128.dtsi"
8
9/ {
10	model = "Geniatech XPI-3128";
11	compatible = "geniatech,xpi-3128", "rockchip,rk3128";
12
13	aliases {
14		ethernet0 = &gmac;
15		mmc0 = &emmc;
16		mmc1 = &sdmmc;
17	};
18
19	memory@60000000 {
20		device_type = "memory";
21		reg = <0x60000000 0x40000000>;
22	};
23
24	chosen {
25		stdout-path = &uart1;
26	};
27
28	adc-keys {
29		compatible = "adc-keys";
30		io-channels = <&saradc 1>;
31		io-channel-names = "buttons";
32		keyup-threshold-microvolt = <3300000>;
33
34		button-recovery {
35			label = "Recovery";
36			linux,code = <KEY_VENDOR>;
37			press-threshold-microvolt = <0>;
38		};
39	};
40
41	dc_5v: dc-5v-regulator {
42		compatible = "regulator-fixed";
43		regulator-name = "DC_5V";
44		regulator-min-microvolt = <5000000>;
45		regulator-max-microvolt = <5000000>;
46		regulator-always-on;
47		regulator-boot-on;
48	};
49
50	hdmi-connnector {
51		compatible = "hdmi-connector";
52		type = "a";
53
54		port {
55			hdmi_connector_in: endpoint {
56				remote-endpoint = <&hdmi_connector_out>;
57			};
58		};
59	};
60
61	/*
62	 * This is a vbus-supply, which also supplies the GL852G usb hub,
63	 * thus has to be always-on
64	 */
65	host_pwr_5v: host-pwr-5v-regulator {
66		compatible = "regulator-fixed";
67		gpio = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
68		startup-delay-us = <1500>;
69		regulator-name = "HOST_PWR_5V";
70		regulator-min-microvolt = <5000000>;
71		regulator-max-microvolt = <5000000>;
72		vin-supply = <&dc_5v>;
73		pinctrl-names = "default";
74		pinctrl-0 = <&host_drv>;
75		enable-active-high;
76		regulator-always-on;
77	};
78
79	ir-receiver {
80		compatible = "gpio-ir-receiver";
81		gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>;
82		pinctrl-names = "default";
83		pinctrl-0 = <&ir_int>;
84	};
85
86	leds {
87		compatible = "gpio-leds";
88
89		led-power {
90			gpios = <&gpio0 RK_PD2 GPIO_ACTIVE_HIGH>;
91			function = LED_FUNCTION_POWER;
92			color = <LED_COLOR_ID_BLUE>;
93			default-state = "on";
94			pinctrl-names = "default";
95			pinctrl-0 = <&power_led>;
96		};
97
98		led-spd {
99			gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
100			function = LED_FUNCTION_LAN;
101			color = <LED_COLOR_ID_GREEN>;
102			/*
103			 * currently not allowed to be set as per
104			 * https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/common.yaml
105			 * and needs to set in userspace:
106			 *
107			 * linux,default-trigger = "netdev";
108			 */
109			pinctrl-names = "default";
110			pinctrl-0 = <&spd_led>;
111		};
112	};
113
114	mcu3v3: mcu3v3-regulator {
115		compatible = "regulator-fixed";
116		regulator-name = "MCU3V3";
117		regulator-min-microvolt = <3300000>;
118		regulator-max-microvolt = <3300000>;
119		vin-supply = <&vcc_io>;
120		regulator-always-on;
121		regulator-boot-on;
122	};
123
124	vcc_ddr: vcc-ddr-regulator {
125		compatible = "regulator-fixed";
126		regulator-name = "VCC_DDR";
127		regulator-min-microvolt = <1500000>;
128		regulator-max-microvolt = <1500000>;
129		vin-supply = <&vcc_sys>;
130		regulator-always-on;
131		regulator-boot-on;
132	};
133
134	vcc_io: vcc-io-regulator {
135		compatible = "regulator-fixed";
136		regulator-name = "VCC_IO";
137		regulator-min-microvolt = <3300000>;
138		regulator-max-microvolt = <3300000>;
139		vin-supply = <&vcc_sys>;
140		regulator-always-on;
141		regulator-boot-on;
142	};
143
144	vcc_lan: vcc-lan-regulator {
145		compatible = "regulator-fixed";
146		regulator-name = "VCC_LAN";
147		regulator-min-microvolt = <3300000>;
148		regulator-max-microvolt = <3300000>;
149		vin-supply = <&vcc_io>;
150		regulator-always-on;
151		regulator-boot-on;
152	};
153
154	vcc_sd: vcc-sd-regulator {
155		compatible = "regulator-fixed";
156		gpio = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>;
157		startup-delay-us = <500>;
158		regulator-name = "VCC_SD";
159		regulator-min-microvolt = <3300000>;
160		regulator-max-microvolt = <3300000>;
161		vin-supply = <&vcc_io>;
162		pinctrl-names = "default";
163		pinctrl-0 = <&sdmmc_pwren>;
164	};
165
166	vcc_sys: vcc-sys-regulator {
167		compatible = "regulator-fixed";
168		regulator-name = "VCC_SYS";
169		regulator-min-microvolt = <5000000>;
170		regulator-max-microvolt = <5000000>;
171		vin-supply = <&dc_5v>;
172		regulator-always-on;
173		regulator-boot-on;
174	};
175
176	vcc33_hdmi: vcc33-hdmi-regulator {
177		compatible = "regulator-fixed";
178		regulator-name = "VCC33_HDMI";
179		regulator-min-microvolt = <3300000>;
180		regulator-max-microvolt = <3300000>;
181		vin-supply = <&vcca_33>;
182		regulator-always-on;
183		regulator-boot-on;
184	};
185
186	vcca_33: vcca-33-regulator {
187		compatible = "regulator-fixed";
188		regulator-name = "VCCA_33";
189		regulator-min-microvolt = <3300000>;
190		regulator-max-microvolt = <3300000>;
191		vin-supply = <&vcc_sys>;
192		regulator-always-on;
193		regulator-boot-on;
194	};
195
196	vdd_11: vdd-11-regulator {
197		compatible = "regulator-fixed";
198		regulator-name = "VDD_11";
199		regulator-min-microvolt = <1100000>;
200		regulator-max-microvolt = <1100000>;
201		vin-supply = <&vcc_sys>;
202		regulator-always-on;
203		regulator-boot-on;
204	};
205
206	vdd11_hdmi: vdd11-hdmi-regulator {
207		compatible = "regulator-fixed";
208		regulator-name = "VDD11_HDMI";
209		regulator-min-microvolt = <1100000>;
210		regulator-max-microvolt = <1100000>;
211		vin-supply = <&vdd_11>;
212		regulator-always-on;
213		regulator-boot-on;
214	};
215
216	vdd_arm: vdd-arm-regulator {
217		compatible = "pwm-regulator";
218		regulator-name = "VDD_ARM";
219		pwms = <&pwm1 0 25000 1>;
220		pwm-supply = <&vcc_sys>;
221		regulator-min-microvolt = <900000>;
222		regulator-max-microvolt = <1400000>;
223		regulator-always-on;
224		regulator-boot-on;
225	};
226
227	/*
228	 * As per schematics vdd_log is minimum 900 mV, maximum 1400 mV.
229	 * Since there are HW blocks in PD_LOGIC (which are all driven by
230	 * this supply), that either do not have a driver at all or the
231	 * driver does not implement regulator support we have to make
232	 * sure here that the voltage never drops below 1050 mV.
233	 */
234	vdd_log: vdd-log-regulator {
235		compatible = "pwm-regulator";
236		regulator-name = "VDD_LOG";
237		pwms = <&pwm2 0 25000 1>;
238		pwm-dutycycle-range = <30 100>;
239		pwm-supply = <&vcc_sys>;
240		regulator-min-microvolt = <1050000>;
241		regulator-max-microvolt = <1400000>;
242		regulator-ramp-delay = <4000>;
243		regulator-always-on;
244		regulator-boot-on;
245	};
246
247};
248
249&cpu0 {
250	cpu-supply = <&vdd_arm>;
251};
252
253&display_subsystem {
254	status = "okay";
255};
256
257&emmc {
258	bus-width = <8>;
259	vmmc-supply = <&vcc_io>;
260	pinctrl-names = "default";
261	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
262	cap-mmc-highspeed;
263	mmc-ddr-3_3v;
264	no-sd;
265	no-sdio;
266	status = "okay";
267};
268
269&gmac {
270	clock_in_out = "output";
271	phy-supply = <&vcc_lan>;
272	phy-mode = "rmii";
273	phy-handle = <&phy0>;
274	assigned-clocks = <&cru SCLK_MAC_SRC>;
275	assigned-clock-rates= <50000000>;
276	pinctrl-names = "default";
277	pinctrl-0 = <&rmii_pins>;
278	status = "okay";
279};
280
281&gpio0 {
282	gpio-line-names = /* GPIO0 A0-A7 */
283			  "", "", "HEADER_5", "HEADER_3",
284			  "", "", "", "",
285			  /* GPIO0 B0-B7 */
286			  "HEADER_22", "HEADER_23", "", "HEADER_19",
287			  "HEADER_26", "HEADER_21", "HEADER_24", "",
288			  /* GPIO0 C0-C7 */
289			  "", "HEADER_18", "", "",
290			  "", "", "", "",
291			  /* GPIO0 D0-D7 */
292			  "HEADER_36", "", "", "",
293			  "", "", "HEADER_13", "";
294};
295
296&gpio1 {
297	gpio-line-names = /* GPIO1 A0-A7 */
298			  "HEADER_7", "HEADER_35", "HEADER_33", "HEADER_37",
299			  "HEADER_40", "HEADER_38", "", "",
300			  /* GPIO1 B0-B7 */
301			  "HEADER_11", "", "", "HEADER_29",
302			  "HEADER_31", "", "", "",
303			  /* GPIO1 C0-C7 */
304			  "", "", "", "",
305			  "", "", "", "",
306			  /* GPIO1 D0-D7 */
307			  "", "", "", "",
308			  "", "", "", "";
309};
310
311&gpio2 {
312	gpio-line-names = /* GPIO2 A0-A7 */
313			  "", "", "", "",
314			  "", "", "", "",
315			  /* GPIO2 B0-B7 */
316			  "", "", "", "",
317			  "", "", "", "",
318			  /* GPIO2 C0-C7 */
319			  "", "", "", "",
320			  "HEADER_27", "", "", "",
321			  /* GPIO2 D0-D7 */
322			  "", "", "HEADER_8", "HEADER_10",
323			  "", "", "", "";
324};
325
326&gpio3 {
327	gpio-line-names = /* GPIO3 A0-A7 */
328			  "", "", "", "",
329			  "", "", "", "",
330			  /* GPIO3 B0-B7 */
331			  "", "", "", "",
332			  "", "", "", "",
333			  /* GPIO3 C0-C7 */
334			  "", "HEADER_32", "", "",
335			  "", "", "", "HEADER_12",
336			  /* GPIO3 D0-D7 */
337			  "", "", "", "HEADER_15",
338			  "", "", "", "";
339};
340
341&gpu {
342	mali-supply = <&vdd_log>;
343	status = "okay";
344};
345
346&hdmi {
347	status = "okay";
348};
349
350&hdmi_out {
351	hdmi_connector_out: endpoint {
352		remote-endpoint = <&hdmi_connector_in>;
353	};
354};
355
356&mdio {
357	phy0: ethernet-phy@1 {
358		compatible = "ethernet-phy-ieee802.3-c22";
359		reg = <1>;
360		max-speed = <100>;
361		/* T2.2.4 min. 1 us */
362		reset-assert-us = <10>;
363		/* T2.2.1 + T2.2.2 + T2.2.3 min. 6.05 us */
364		reset-deassert-us = <20>;
365		reset-gpios = <&gpio2 RK_PD0 GPIO_ACTIVE_LOW>;
366		pinctrl-names = "default";
367		pinctrl-0 = <&dp83848c_rst>;
368	};
369};
370
371&pinctrl {
372	dp83848c {
373		dp83848c_rst: dp83848c-rst {
374			rockchip,pins = <2 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
375		};
376	};
377
378	ir-receiver {
379		ir_int: ir-int {
380			rockchip,pins = <3 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
381		};
382	};
383
384	leds {
385		power_led: power-led {
386			rockchip,pins = <0 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
387		};
388
389		spd_led: spd-led {
390			rockchip,pins = <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
391		};
392	};
393
394	usb2 {
395		host_drv: host-drv {
396			rockchip,pins = <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
397		};
398	};
399};
400
401&pwm1 {
402	status = "okay";
403};
404
405&pwm2 {
406	status = "okay";
407};
408
409&saradc {
410	vref-supply = <&vcc_io>;
411	status = "okay";
412};
413
414&sdmmc {
415	bus-width = <4>;
416	vmmc-supply = <&vcc_sd>;
417	pinctrl-names = "default";
418	pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>;
419	disable-wp;
420	cap-sd-highspeed;
421	no-mmc;
422	no-sdio;
423	status = "okay";
424};
425
426&uart1 {
427	status = "okay";
428};
429
430&usb_host_ehci {
431	status = "okay";
432};
433
434&usb_otg {
435	vusb_a-supply = <&vcc_io>;
436	vusb_d-supply = <&vdd_11>;
437	status = "okay";
438};
439
440&usb2phy {
441	status = "okay";
442};
443
444&usb2phy_host {
445	status = "okay";
446};
447
448&usb2phy_otg {
449	status = "okay";
450};
451
452&vop {
453	status = "okay";
454};
455