xref: /linux/arch/arm64/boot/dts/allwinner/sun50i-h64-remix-mini-pc.dts (revision 4d39a8eb07eb672911a8144672eeaeb759d16484)
1*4d39a8ebSAndre Przywara// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*4d39a8ebSAndre Przywara// Copyright (c) 2023 ARM Ltd.
3*4d39a8ebSAndre Przywara
4*4d39a8ebSAndre Przywara/dts-v1/;
5*4d39a8ebSAndre Przywara
6*4d39a8ebSAndre Przywara#include "sun50i-a64.dtsi"
7*4d39a8ebSAndre Przywara#include "sun50i-a64-cpu-opp.dtsi"
8*4d39a8ebSAndre Przywara
9*4d39a8ebSAndre Przywara#include <dt-bindings/gpio/gpio.h>
10*4d39a8ebSAndre Przywara
11*4d39a8ebSAndre Przywara/ {
12*4d39a8ebSAndre Przywara	model = "Remix Mini PC";
13*4d39a8ebSAndre Przywara	compatible = "jide,remix-mini-pc", "allwinner,sun50i-h64",
14*4d39a8ebSAndre Przywara		     "allwinner,sun50i-a64";
15*4d39a8ebSAndre Przywara
16*4d39a8ebSAndre Przywara	aliases {
17*4d39a8ebSAndre Przywara		ethernet1 = &rtl8723bs;
18*4d39a8ebSAndre Przywara		serial0 = &uart0;
19*4d39a8ebSAndre Przywara	};
20*4d39a8ebSAndre Przywara
21*4d39a8ebSAndre Przywara	chosen {
22*4d39a8ebSAndre Przywara		stdout-path = "serial0:115200n8";
23*4d39a8ebSAndre Przywara	};
24*4d39a8ebSAndre Przywara
25*4d39a8ebSAndre Przywara	hdmi-connector {
26*4d39a8ebSAndre Przywara		compatible = "hdmi-connector";
27*4d39a8ebSAndre Przywara		type = "a";
28*4d39a8ebSAndre Przywara
29*4d39a8ebSAndre Przywara		port {
30*4d39a8ebSAndre Przywara			hdmi_con_in: endpoint {
31*4d39a8ebSAndre Przywara				remote-endpoint = <&hdmi_out_con>;
32*4d39a8ebSAndre Przywara			};
33*4d39a8ebSAndre Przywara		};
34*4d39a8ebSAndre Przywara	};
35*4d39a8ebSAndre Przywara
36*4d39a8ebSAndre Przywara	reg_vcc5v: regulator-5v {
37*4d39a8ebSAndre Przywara		/* board wide 5V supply directly from the DC input */
38*4d39a8ebSAndre Przywara		compatible = "regulator-fixed";
39*4d39a8ebSAndre Przywara		regulator-name = "vcc-5v";
40*4d39a8ebSAndre Przywara		regulator-min-microvolt = <5000000>;
41*4d39a8ebSAndre Przywara		regulator-max-microvolt = <5000000>;
42*4d39a8ebSAndre Przywara		regulator-always-on;
43*4d39a8ebSAndre Przywara	};
44*4d39a8ebSAndre Przywara
45*4d39a8ebSAndre Przywara	wifi_pwrseq: wifi_pwrseq {
46*4d39a8ebSAndre Przywara		compatible = "mmc-pwrseq-simple";
47*4d39a8ebSAndre Przywara		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
48*4d39a8ebSAndre Przywara		post-power-on-delay-ms = <200>;
49*4d39a8ebSAndre Przywara	};
50*4d39a8ebSAndre Przywara};
51*4d39a8ebSAndre Przywara
52*4d39a8ebSAndre Przywara&codec {
53*4d39a8ebSAndre Przywara	status = "okay";
54*4d39a8ebSAndre Przywara};
55*4d39a8ebSAndre Przywara
56*4d39a8ebSAndre Przywara&codec_analog {
57*4d39a8ebSAndre Przywara	cpvdd-supply = <&reg_eldo1>;
58*4d39a8ebSAndre Przywara	status = "okay";
59*4d39a8ebSAndre Przywara};
60*4d39a8ebSAndre Przywara
61*4d39a8ebSAndre Przywara&cpu0 {
62*4d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
63*4d39a8ebSAndre Przywara};
64*4d39a8ebSAndre Przywara
65*4d39a8ebSAndre Przywara&cpu1 {
66*4d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
67*4d39a8ebSAndre Przywara};
68*4d39a8ebSAndre Przywara
69*4d39a8ebSAndre Przywara&cpu2 {
70*4d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
71*4d39a8ebSAndre Przywara};
72*4d39a8ebSAndre Przywara
73*4d39a8ebSAndre Przywara&cpu3 {
74*4d39a8ebSAndre Przywara	cpu-supply = <&reg_dcdc2>;
75*4d39a8ebSAndre Przywara};
76*4d39a8ebSAndre Przywara
77*4d39a8ebSAndre Przywara&dai {
78*4d39a8ebSAndre Przywara	status = "okay";
79*4d39a8ebSAndre Przywara};
80*4d39a8ebSAndre Przywara
81*4d39a8ebSAndre Przywara&de {
82*4d39a8ebSAndre Przywara	status = "okay";
83*4d39a8ebSAndre Przywara};
84*4d39a8ebSAndre Przywara
85*4d39a8ebSAndre Przywara&ehci0 {
86*4d39a8ebSAndre Przywara	status = "okay";
87*4d39a8ebSAndre Przywara};
88*4d39a8ebSAndre Przywara
89*4d39a8ebSAndre Przywara&ehci1 {
90*4d39a8ebSAndre Przywara	status = "okay";
91*4d39a8ebSAndre Przywara};
92*4d39a8ebSAndre Przywara
93*4d39a8ebSAndre Przywara&hdmi {
94*4d39a8ebSAndre Przywara	hvcc-supply = <&reg_dldo1>;
95*4d39a8ebSAndre Przywara	status = "okay";
96*4d39a8ebSAndre Przywara};
97*4d39a8ebSAndre Przywara
98*4d39a8ebSAndre Przywara&hdmi_out {
99*4d39a8ebSAndre Przywara	hdmi_out_con: endpoint {
100*4d39a8ebSAndre Przywara		remote-endpoint = <&hdmi_con_in>;
101*4d39a8ebSAndre Przywara	};
102*4d39a8ebSAndre Przywara};
103*4d39a8ebSAndre Przywara
104*4d39a8ebSAndre Przywara/* Connects to the AC200 chip */
105*4d39a8ebSAndre Przywara&i2c0 {
106*4d39a8ebSAndre Przywara	pinctrl-names = "default";
107*4d39a8ebSAndre Przywara	pinctrl-0 = <&i2c0_pins>;
108*4d39a8ebSAndre Przywara	status = "okay";
109*4d39a8ebSAndre Przywara};
110*4d39a8ebSAndre Przywara
111*4d39a8ebSAndre Przywara&i2c0_pins {
112*4d39a8ebSAndre Przywara	bias-pull-up;
113*4d39a8ebSAndre Przywara};
114*4d39a8ebSAndre Przywara
115*4d39a8ebSAndre Przywara&mmc0 {
116*4d39a8ebSAndre Przywara	pinctrl-names = "default";
117*4d39a8ebSAndre Przywara	pinctrl-0 = <&mmc0_pins>;
118*4d39a8ebSAndre Przywara	vmmc-supply = <&reg_dcdc1>;
119*4d39a8ebSAndre Przywara	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
120*4d39a8ebSAndre Przywara	disable-wp;
121*4d39a8ebSAndre Przywara	bus-width = <4>;
122*4d39a8ebSAndre Przywara	status = "okay";
123*4d39a8ebSAndre Przywara};
124*4d39a8ebSAndre Przywara
125*4d39a8ebSAndre Przywara&mmc1 {
126*4d39a8ebSAndre Przywara	pinctrl-names = "default";
127*4d39a8ebSAndre Przywara	pinctrl-0 = <&mmc1_pins>;
128*4d39a8ebSAndre Przywara	vmmc-supply = <&reg_aldo1>;
129*4d39a8ebSAndre Przywara	vqmmc-supply = <&reg_dldo4>;
130*4d39a8ebSAndre Przywara	mmc-pwrseq = <&wifi_pwrseq>;
131*4d39a8ebSAndre Przywara	bus-width = <4>;
132*4d39a8ebSAndre Przywara	non-removable;
133*4d39a8ebSAndre Przywara	status = "okay";
134*4d39a8ebSAndre Przywara
135*4d39a8ebSAndre Przywara	rtl8723bs: wifi@1 {
136*4d39a8ebSAndre Przywara		reg = <1>;
137*4d39a8ebSAndre Przywara		interrupt-parent = <&r_pio>;
138*4d39a8ebSAndre Przywara		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
139*4d39a8ebSAndre Przywara		interrupt-names = "host-wake";
140*4d39a8ebSAndre Przywara	};
141*4d39a8ebSAndre Przywara};
142*4d39a8ebSAndre Przywara
143*4d39a8ebSAndre Przywara&mmc2 {
144*4d39a8ebSAndre Przywara	pinctrl-names = "default";
145*4d39a8ebSAndre Przywara	pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
146*4d39a8ebSAndre Przywara	vmmc-supply = <&reg_dcdc1>;
147*4d39a8ebSAndre Przywara	vqmmc-supply = <&reg_eldo1>;
148*4d39a8ebSAndre Przywara	bus-width = <8>;
149*4d39a8ebSAndre Przywara	non-removable;
150*4d39a8ebSAndre Przywara	mmc-hs200-1_8v;
151*4d39a8ebSAndre Przywara	mmc-hs400-1_8v;
152*4d39a8ebSAndre Przywara	cap-mmc-hw-reset;
153*4d39a8ebSAndre Przywara	status = "okay";
154*4d39a8ebSAndre Przywara};
155*4d39a8ebSAndre Przywara
156*4d39a8ebSAndre Przywara&ohci0 {
157*4d39a8ebSAndre Przywara	status = "okay";
158*4d39a8ebSAndre Przywara};
159*4d39a8ebSAndre Przywara
160*4d39a8ebSAndre Przywara&ohci1 {
161*4d39a8ebSAndre Przywara	status = "okay";
162*4d39a8ebSAndre Przywara};
163*4d39a8ebSAndre Przywara
164*4d39a8ebSAndre Przywara&pio {
165*4d39a8ebSAndre Przywara	vcc-pb-supply = <&reg_dcdc1>;
166*4d39a8ebSAndre Przywara	vcc-pc-supply = <&reg_dcdc1>;
167*4d39a8ebSAndre Przywara	vcc-pd-supply = <&reg_dcdc1>;
168*4d39a8ebSAndre Przywara	vcc-pe-supply = <&reg_dcdc1>;
169*4d39a8ebSAndre Przywara	vcc-pf-supply = <&reg_dcdc1>;
170*4d39a8ebSAndre Przywara	vcc-pg-supply = <&reg_dldo4>;
171*4d39a8ebSAndre Przywara	vcc-ph-supply = <&reg_dcdc1>;
172*4d39a8ebSAndre Przywara};
173*4d39a8ebSAndre Przywara
174*4d39a8ebSAndre Przywara&r_ir {
175*4d39a8ebSAndre Przywara	status = "okay";
176*4d39a8ebSAndre Przywara};
177*4d39a8ebSAndre Przywara
178*4d39a8ebSAndre Przywara&r_pio {
179*4d39a8ebSAndre Przywara	/*
180*4d39a8ebSAndre Przywara	 * We cannot add that supply for now since it would create a circular
181*4d39a8ebSAndre Przywara	 * dependency between pinctrl, the regulator and the RSB Bus.
182*4d39a8ebSAndre Przywara	 *
183*4d39a8ebSAndre Przywara	 * vcc-pl-supply = <&reg_aldo2>;
184*4d39a8ebSAndre Przywara	 */
185*4d39a8ebSAndre Przywara};
186*4d39a8ebSAndre Przywara
187*4d39a8ebSAndre Przywara&r_rsb {
188*4d39a8ebSAndre Przywara	status = "okay";
189*4d39a8ebSAndre Przywara
190*4d39a8ebSAndre Przywara	axp803: pmic@3a3 {
191*4d39a8ebSAndre Przywara		compatible = "x-powers,axp803";
192*4d39a8ebSAndre Przywara		reg = <0x3a3>;
193*4d39a8ebSAndre Przywara		interrupt-parent = <&r_intc>;
194*4d39a8ebSAndre Przywara		interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_LOW>;
195*4d39a8ebSAndre Przywara		x-powers,drive-vbus-en;
196*4d39a8ebSAndre Przywara
197*4d39a8ebSAndre Przywara		vin1-supply = <&reg_vcc5v>;
198*4d39a8ebSAndre Przywara		vin2-supply = <&reg_vcc5v>;
199*4d39a8ebSAndre Przywara		vin3-supply = <&reg_vcc5v>;
200*4d39a8ebSAndre Przywara		vin5-supply = <&reg_vcc5v>;
201*4d39a8ebSAndre Przywara		vin6-supply = <&reg_vcc5v>;
202*4d39a8ebSAndre Przywara		aldoin-supply = <&reg_vcc5v>;
203*4d39a8ebSAndre Przywara		dldoin-supply = <&reg_vcc5v>;
204*4d39a8ebSAndre Przywara		eldoin-supply = <&reg_vcc5v>;
205*4d39a8ebSAndre Przywara		fldoin-supply = <&reg_vcc5v>;
206*4d39a8ebSAndre Przywara		drivevbus-supply = <&reg_vcc5v>;
207*4d39a8ebSAndre Przywara		ips-supply = <&reg_vcc5v>;
208*4d39a8ebSAndre Przywara
209*4d39a8ebSAndre Przywara		status = "okay";
210*4d39a8ebSAndre Przywara	};
211*4d39a8ebSAndre Przywara};
212*4d39a8ebSAndre Przywara
213*4d39a8ebSAndre Przywara#include "axp803.dtsi"
214*4d39a8ebSAndre Przywara
215*4d39a8ebSAndre Przywara&ac_power_supply {
216*4d39a8ebSAndre Przywara	status = "okay";
217*4d39a8ebSAndre Przywara};
218*4d39a8ebSAndre Przywara
219*4d39a8ebSAndre Przywara&reg_dcdc1 {
220*4d39a8ebSAndre Przywara	regulator-always-on;
221*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
222*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
223*4d39a8ebSAndre Przywara	regulator-name = "vcc-3v3";
224*4d39a8ebSAndre Przywara};
225*4d39a8ebSAndre Przywara
226*4d39a8ebSAndre Przywara&reg_dcdc2 {
227*4d39a8ebSAndre Przywara	regulator-always-on;
228*4d39a8ebSAndre Przywara	regulator-min-microvolt = <1040000>;
229*4d39a8ebSAndre Przywara	regulator-max-microvolt = <1300000>;
230*4d39a8ebSAndre Przywara	regulator-name = "vdd-cpux";
231*4d39a8ebSAndre Przywara};
232*4d39a8ebSAndre Przywara
233*4d39a8ebSAndre Przywara/* DCDC3 is polyphased with DCDC2 */
234*4d39a8ebSAndre Przywara
235*4d39a8ebSAndre Przywara&reg_dcdc5 {
236*4d39a8ebSAndre Przywara	regulator-always-on;
237*4d39a8ebSAndre Przywara	regulator-min-microvolt = <1500000>;
238*4d39a8ebSAndre Przywara	regulator-max-microvolt = <1500000>;
239*4d39a8ebSAndre Przywara	regulator-name = "vcc-dram";
240*4d39a8ebSAndre Przywara};
241*4d39a8ebSAndre Przywara
242*4d39a8ebSAndre Przywara/* Deviates from the reset default of 1.1V. */
243*4d39a8ebSAndre Przywara&reg_dcdc6 {
244*4d39a8ebSAndre Przywara	regulator-always-on;
245*4d39a8ebSAndre Przywara	regulator-min-microvolt = <1200000>;
246*4d39a8ebSAndre Przywara	regulator-max-microvolt = <1200000>;
247*4d39a8ebSAndre Przywara	regulator-name = "vdd-sys";
248*4d39a8ebSAndre Przywara};
249*4d39a8ebSAndre Przywara
250*4d39a8ebSAndre Przywara&reg_aldo1 {
251*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
252*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
253*4d39a8ebSAndre Przywara	regulator-name = "vcc-wifi";
254*4d39a8ebSAndre Przywara};
255*4d39a8ebSAndre Przywara
256*4d39a8ebSAndre Przywara&reg_aldo2 {
257*4d39a8ebSAndre Przywara	/* Specifying R_PIO consumer would create circular dependency. */
258*4d39a8ebSAndre Przywara	regulator-always-on;
259*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
260*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
261*4d39a8ebSAndre Przywara	regulator-name = "vcc-pl";
262*4d39a8ebSAndre Przywara};
263*4d39a8ebSAndre Przywara
264*4d39a8ebSAndre Przywara&reg_aldo3 {
265*4d39a8ebSAndre Przywara	regulator-always-on;
266*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3000000>;
267*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3000000>;
268*4d39a8ebSAndre Przywara	regulator-name = "vcc-pll-avcc";
269*4d39a8ebSAndre Przywara};
270*4d39a8ebSAndre Przywara
271*4d39a8ebSAndre Przywara/* AC200 power supply */
272*4d39a8ebSAndre Przywara&reg_dldo1 {
273*4d39a8ebSAndre Przywara	regulator-always-on;
274*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
275*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
276*4d39a8ebSAndre Przywara	regulator-name = "vcc-ave-33";
277*4d39a8ebSAndre Przywara};
278*4d39a8ebSAndre Przywara
279*4d39a8ebSAndre Przywara&reg_dldo4 {
280*4d39a8ebSAndre Przywara	regulator-min-microvolt = <3300000>;
281*4d39a8ebSAndre Przywara	regulator-max-microvolt = <3300000>;
282*4d39a8ebSAndre Przywara	regulator-name = "vcc-wifi-io";
283*4d39a8ebSAndre Przywara};
284*4d39a8ebSAndre Przywara
285*4d39a8ebSAndre Przywara&reg_drivevbus {
286*4d39a8ebSAndre Przywara	regulator-name = "usb0-vbus";
287*4d39a8ebSAndre Przywara	status = "okay";
288*4d39a8ebSAndre Przywara};
289*4d39a8ebSAndre Przywara
290*4d39a8ebSAndre Przywara&reg_eldo1 {
291*4d39a8ebSAndre Przywara	regulator-always-on;
292*4d39a8ebSAndre Przywara	regulator-min-microvolt = <1800000>;
293*4d39a8ebSAndre Przywara	regulator-max-microvolt = <1800000>;
294*4d39a8ebSAndre Przywara	regulator-name = "vcc-cpvdd-dram-emmc";
295*4d39a8ebSAndre Przywara};
296*4d39a8ebSAndre Przywara
297*4d39a8ebSAndre Przywara/* Supplies the arisc management core, needed by TF-A to power off cores. */
298*4d39a8ebSAndre Przywara&reg_fldo2 {
299*4d39a8ebSAndre Przywara	regulator-always-on;
300*4d39a8ebSAndre Przywara	regulator-min-microvolt = <1100000>;
301*4d39a8ebSAndre Przywara	regulator-max-microvolt = <1100000>;
302*4d39a8ebSAndre Przywara	regulator-name = "vdd-cpus";
303*4d39a8ebSAndre Przywara};
304*4d39a8ebSAndre Przywara
305*4d39a8ebSAndre Przywara&reg_rtc_ldo {
306*4d39a8ebSAndre Przywara	regulator-name = "vcc-rtc";
307*4d39a8ebSAndre Przywara};
308*4d39a8ebSAndre Przywara
309*4d39a8ebSAndre Przywara&simplefb_hdmi {
310*4d39a8ebSAndre Przywara	vcc-hdmi-supply = <&reg_dcdc1>;
311*4d39a8ebSAndre Przywara};
312*4d39a8ebSAndre Przywara
313*4d39a8ebSAndre Przywara&sound {
314*4d39a8ebSAndre Przywara	simple-audio-card,aux-devs = <&codec_analog>;
315*4d39a8ebSAndre Przywara	simple-audio-card,widgets = "Microphone", "Microphone Jack",
316*4d39a8ebSAndre Przywara				    "Headphone", "Headphone Jack";
317*4d39a8ebSAndre Przywara	simple-audio-card,routing =
318*4d39a8ebSAndre Przywara			"Left DAC", "DACL",
319*4d39a8ebSAndre Przywara			"Right DAC", "DACR",
320*4d39a8ebSAndre Przywara			"Headphone Jack", "HP",
321*4d39a8ebSAndre Przywara			"ADCL", "Left ADC",
322*4d39a8ebSAndre Przywara			"ADCR", "Right ADC",
323*4d39a8ebSAndre Przywara			"MIC2", "Microphone Jack";
324*4d39a8ebSAndre Przywara	status = "okay";
325*4d39a8ebSAndre Przywara};
326*4d39a8ebSAndre Przywara
327*4d39a8ebSAndre Przywara/* On the (unpopulated) UART pads. */
328*4d39a8ebSAndre Przywara&uart0 {
329*4d39a8ebSAndre Przywara	pinctrl-names = "default";
330*4d39a8ebSAndre Przywara	pinctrl-0 = <&uart0_pb_pins>;
331*4d39a8ebSAndre Przywara	status = "okay";
332*4d39a8ebSAndre Przywara};
333*4d39a8ebSAndre Przywara
334*4d39a8ebSAndre Przywara&uart1 {
335*4d39a8ebSAndre Przywara	pinctrl-names = "default";
336*4d39a8ebSAndre Przywara	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
337*4d39a8ebSAndre Przywara	uart-has-rtscts;
338*4d39a8ebSAndre Przywara	status = "okay";
339*4d39a8ebSAndre Przywara
340*4d39a8ebSAndre Przywara	bluetooth {
341*4d39a8ebSAndre Przywara		compatible = "realtek,rtl8723bs-bt";
342*4d39a8ebSAndre Przywara		enable-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
343*4d39a8ebSAndre Przywara		max-speed = <1500000>;
344*4d39a8ebSAndre Przywara	};
345*4d39a8ebSAndre Przywara};
346*4d39a8ebSAndre Przywara
347*4d39a8ebSAndre Przywara&usb_otg {
348*4d39a8ebSAndre Przywara	dr_mode = "host";
349*4d39a8ebSAndre Przywara	status = "okay";
350*4d39a8ebSAndre Przywara};
351*4d39a8ebSAndre Przywara
352*4d39a8ebSAndre Przywara&usbphy {
353*4d39a8ebSAndre Przywara	usb0_vbus-supply = <&reg_drivevbus>;
354*4d39a8ebSAndre Przywara	usb1_vbus-supply = <&reg_drivevbus>;
355*4d39a8ebSAndre Przywara	status = "okay";
356*4d39a8ebSAndre Przywara};
357