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