1012af553SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2cabbaed7SClément Péron// Copyright (C) 2018 Amarula Solutions
3cabbaed7SClément Péron// Author: Jagan Teki <jagan@amarulasolutions.com>
4f0c083b8SJagan Teki
5f0c083b8SJagan Teki/dts-v1/;
6f0c083b8SJagan Teki
7f0c083b8SJagan Teki#include "sun50i-h6.dtsi"
8f0c083b8SJagan Teki
9f0c083b8SJagan Teki#include <dt-bindings/gpio/gpio.h>
10f0c083b8SJagan Teki
11f0c083b8SJagan Teki/ {
12f0c083b8SJagan Teki	model = "OrangePi One Plus";
13f0c083b8SJagan Teki	compatible = "xunlong,orangepi-one-plus", "allwinner,sun50i-h6";
14f0c083b8SJagan Teki
15f0c083b8SJagan Teki	aliases {
16f0c083b8SJagan Teki		serial0 = &uart0;
17f0c083b8SJagan Teki	};
18f0c083b8SJagan Teki
19f0c083b8SJagan Teki	chosen {
20f0c083b8SJagan Teki		stdout-path = "serial0:115200n8";
21f0c083b8SJagan Teki	};
22919d2514SChen-Yu Tsai
232345b744SMarcus Cooper	connector {
242345b744SMarcus Cooper		compatible = "hdmi-connector";
252345b744SMarcus Cooper		type = "a";
262345b744SMarcus Cooper		ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
272345b744SMarcus Cooper
282345b744SMarcus Cooper		port {
292345b744SMarcus Cooper			hdmi_con_in: endpoint {
302345b744SMarcus Cooper				remote-endpoint = <&hdmi_out_con>;
312345b744SMarcus Cooper			};
322345b744SMarcus Cooper		};
332345b744SMarcus Cooper	};
342345b744SMarcus Cooper
3532507b86SJernej Skrabec	ext_osc32k: ext_osc32k_clk {
3632507b86SJernej Skrabec		#clock-cells = <0>;
3732507b86SJernej Skrabec		compatible = "fixed-clock";
3832507b86SJernej Skrabec		clock-frequency = <32768>;
3932507b86SJernej Skrabec		clock-output-names = "ext_osc32k";
4032507b86SJernej Skrabec	};
4132507b86SJernej Skrabec
421e33e0dbSChen-Yu Tsai	leds {
431e33e0dbSChen-Yu Tsai		compatible = "gpio-leds";
441e33e0dbSChen-Yu Tsai
451e33e0dbSChen-Yu Tsai		power {
461e33e0dbSChen-Yu Tsai			label = "orangepi:red:power";
471e33e0dbSChen-Yu Tsai			gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
481e33e0dbSChen-Yu Tsai			default-state = "on";
491e33e0dbSChen-Yu Tsai		};
501e33e0dbSChen-Yu Tsai
511e33e0dbSChen-Yu Tsai		status {
521e33e0dbSChen-Yu Tsai			label = "orangepi:green:status";
531e33e0dbSChen-Yu Tsai			gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
541e33e0dbSChen-Yu Tsai		};
551e33e0dbSChen-Yu Tsai	};
561e33e0dbSChen-Yu Tsai
57919d2514SChen-Yu Tsai	reg_vcc5v: vcc5v {
58919d2514SChen-Yu Tsai		/* board wide 5V supply directly from the DC jack */
59919d2514SChen-Yu Tsai		compatible = "regulator-fixed";
60919d2514SChen-Yu Tsai		regulator-name = "vcc-5v";
61919d2514SChen-Yu Tsai		regulator-min-microvolt = <5000000>;
62919d2514SChen-Yu Tsai		regulator-max-microvolt = <5000000>;
63919d2514SChen-Yu Tsai		regulator-always-on;
64919d2514SChen-Yu Tsai	};
65f0c083b8SJagan Teki};
66f0c083b8SJagan Teki
672345b744SMarcus Cooper&de {
682345b744SMarcus Cooper	status = "okay";
692345b744SMarcus Cooper};
702345b744SMarcus Cooper
719b8d1ccdSChen-Yu Tsai&ehci0 {
729b8d1ccdSChen-Yu Tsai	status = "okay";
739b8d1ccdSChen-Yu Tsai};
749b8d1ccdSChen-Yu Tsai
759b8d1ccdSChen-Yu Tsai&ehci3 {
769b8d1ccdSChen-Yu Tsai	status = "okay";
779b8d1ccdSChen-Yu Tsai};
789b8d1ccdSChen-Yu Tsai
798abc4c4aSClément Péron&gpu {
808abc4c4aSClément Péron	mali-supply = <&reg_dcdcc>;
818abc4c4aSClément Péron	status = "okay";
828abc4c4aSClément Péron};
838abc4c4aSClément Péron
842345b744SMarcus Cooper&hdmi {
852345b744SMarcus Cooper	status = "okay";
862345b744SMarcus Cooper};
872345b744SMarcus Cooper
882345b744SMarcus Cooper&hdmi_out {
892345b744SMarcus Cooper	hdmi_out_con: endpoint {
902345b744SMarcus Cooper		remote-endpoint = <&hdmi_con_in>;
912345b744SMarcus Cooper	};
922345b744SMarcus Cooper};
932345b744SMarcus Cooper
94f0c083b8SJagan Teki&mmc0 {
95f0c083b8SJagan Teki	vmmc-supply = <&reg_cldo1>;
96f0c083b8SJagan Teki	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
97f0c083b8SJagan Teki	bus-width = <4>;
98f0c083b8SJagan Teki	status = "okay";
99f0c083b8SJagan Teki};
100f0c083b8SJagan Teki
1019b8d1ccdSChen-Yu Tsai&ohci0 {
1029b8d1ccdSChen-Yu Tsai	status = "okay";
1039b8d1ccdSChen-Yu Tsai};
1049b8d1ccdSChen-Yu Tsai
1059b8d1ccdSChen-Yu Tsai&ohci3 {
1069b8d1ccdSChen-Yu Tsai	status = "okay";
1079b8d1ccdSChen-Yu Tsai};
1089b8d1ccdSChen-Yu Tsai
109b928fd46SJernej Skrabec&pio {
110b928fd46SJernej Skrabec	vcc-pc-supply = <&reg_bldo2>;
111b928fd46SJernej Skrabec	vcc-pd-supply = <&reg_cldo1>;
112b928fd46SJernej Skrabec	vcc-pg-supply = <&reg_aldo1>;
113b928fd46SJernej Skrabec};
114b928fd46SJernej Skrabec
115f0c083b8SJagan Teki&r_i2c {
116f0c083b8SJagan Teki	status = "okay";
117f0c083b8SJagan Teki
118f0c083b8SJagan Teki	axp805: pmic@36 {
119f0c083b8SJagan Teki		compatible = "x-powers,axp805", "x-powers,axp806";
120f0c083b8SJagan Teki		reg = <0x36>;
121f0c083b8SJagan Teki		interrupt-parent = <&r_intc>;
122f0c083b8SJagan Teki		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
123f0c083b8SJagan Teki		interrupt-controller;
124f0c083b8SJagan Teki		#interrupt-cells = <1>;
125f0c083b8SJagan Teki		x-powers,self-working-mode;
126919d2514SChen-Yu Tsai		vina-supply = <&reg_vcc5v>;
127919d2514SChen-Yu Tsai		vinb-supply = <&reg_vcc5v>;
128919d2514SChen-Yu Tsai		vinc-supply = <&reg_vcc5v>;
129919d2514SChen-Yu Tsai		vind-supply = <&reg_vcc5v>;
130919d2514SChen-Yu Tsai		vine-supply = <&reg_vcc5v>;
131919d2514SChen-Yu Tsai		aldoin-supply = <&reg_vcc5v>;
132919d2514SChen-Yu Tsai		bldoin-supply = <&reg_vcc5v>;
133919d2514SChen-Yu Tsai		cldoin-supply = <&reg_vcc5v>;
134f0c083b8SJagan Teki
135f0c083b8SJagan Teki		regulators {
136f0c083b8SJagan Teki			reg_aldo1: aldo1 {
137f0c083b8SJagan Teki				regulator-always-on;
138f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
139f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
140f0c083b8SJagan Teki				regulator-name = "vcc-pl";
141f0c083b8SJagan Teki			};
142f0c083b8SJagan Teki
143f0c083b8SJagan Teki			reg_aldo2: aldo2 {
144f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
145f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
146f0c083b8SJagan Teki				regulator-name = "vcc-ac200";
147f0c083b8SJagan Teki			};
148f0c083b8SJagan Teki
149f0c083b8SJagan Teki			reg_aldo3: aldo3 {
150f0c083b8SJagan Teki				regulator-always-on;
151f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
152f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
153f0c083b8SJagan Teki				regulator-name = "vcc25-dram";
154f0c083b8SJagan Teki			};
155f0c083b8SJagan Teki
156f0c083b8SJagan Teki			reg_bldo1: bldo1 {
157f0c083b8SJagan Teki				regulator-always-on;
158f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
159f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
160f0c083b8SJagan Teki				regulator-name = "vcc-bias-pll";
161f0c083b8SJagan Teki			};
162f0c083b8SJagan Teki
163f0c083b8SJagan Teki			reg_bldo2: bldo2 {
164f0c083b8SJagan Teki				regulator-always-on;
165f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
166f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
167f0c083b8SJagan Teki				regulator-name = "vcc-efuse-pcie-hdmi-io";
168f0c083b8SJagan Teki			};
169f0c083b8SJagan Teki
170f0c083b8SJagan Teki			reg_bldo3: bldo3 {
171f0c083b8SJagan Teki				regulator-always-on;
172f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
173f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
174f0c083b8SJagan Teki				regulator-name = "vcc-dcxoio";
175f0c083b8SJagan Teki			};
176f0c083b8SJagan Teki
177f0c083b8SJagan Teki			bldo4 {
178f0c083b8SJagan Teki				/* unused */
179f0c083b8SJagan Teki			};
180f0c083b8SJagan Teki
181f0c083b8SJagan Teki			reg_cldo1: cldo1 {
182f0c083b8SJagan Teki				regulator-always-on;
183f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
184f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
185f0c083b8SJagan Teki				regulator-name = "vcc-3v3";
186f0c083b8SJagan Teki			};
187f0c083b8SJagan Teki
188f0c083b8SJagan Teki			reg_cldo2: cldo2 {
189f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
190f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
191f0c083b8SJagan Teki				regulator-name = "vcc-wifi-1";
192f0c083b8SJagan Teki			};
193f0c083b8SJagan Teki
194f0c083b8SJagan Teki			reg_cldo3: cldo3 {
195f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
196f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
197f0c083b8SJagan Teki				regulator-name = "vcc-wifi-2";
198f0c083b8SJagan Teki			};
199f0c083b8SJagan Teki
200f0c083b8SJagan Teki			reg_dcdca: dcdca {
201f0c083b8SJagan Teki				regulator-always-on;
202f0c083b8SJagan Teki				regulator-min-microvolt = <810000>;
203f0c083b8SJagan Teki				regulator-max-microvolt = <1080000>;
204f0c083b8SJagan Teki				regulator-name = "vdd-cpu";
205f0c083b8SJagan Teki			};
206f0c083b8SJagan Teki
207f0c083b8SJagan Teki			reg_dcdcc: dcdcc {
2088abc4c4aSClément Péron				regulator-enable-ramp-delay = <32000>;
209f0c083b8SJagan Teki				regulator-min-microvolt = <810000>;
210f0c083b8SJagan Teki				regulator-max-microvolt = <1080000>;
211f0c083b8SJagan Teki				regulator-name = "vdd-gpu";
212f0c083b8SJagan Teki			};
213f0c083b8SJagan Teki
214f0c083b8SJagan Teki			reg_dcdcd: dcdcd {
215f0c083b8SJagan Teki				regulator-always-on;
216f0c083b8SJagan Teki				regulator-min-microvolt = <960000>;
217f0c083b8SJagan Teki				regulator-max-microvolt = <960000>;
218f0c083b8SJagan Teki				regulator-name = "vdd-sys";
219f0c083b8SJagan Teki			};
220f0c083b8SJagan Teki
221f0c083b8SJagan Teki			reg_dcdce: dcdce {
222f0c083b8SJagan Teki				regulator-always-on;
223f0c083b8SJagan Teki				regulator-min-microvolt = <1200000>;
224f0c083b8SJagan Teki				regulator-max-microvolt = <1200000>;
225f0c083b8SJagan Teki				regulator-name = "vcc-dram";
226f0c083b8SJagan Teki			};
227f0c083b8SJagan Teki
228f0c083b8SJagan Teki			sw {
229f0c083b8SJagan Teki				/* unused */
230f0c083b8SJagan Teki			};
231f0c083b8SJagan Teki		};
232f0c083b8SJagan Teki	};
233f0c083b8SJagan Teki};
234f0c083b8SJagan Teki
23586be7408SClément Péron&r_ir {
23686be7408SClément Péron	status = "okay";
23786be7408SClément Péron};
23886be7408SClément Péron
239b928fd46SJernej Skrabec&r_pio {
240b928fd46SJernej Skrabec	vcc-pm-supply = <&reg_bldo3>;
241b928fd46SJernej Skrabec};
242b928fd46SJernej Skrabec
24332507b86SJernej Skrabec&rtc {
24432507b86SJernej Skrabec	clocks = <&ext_osc32k>;
24532507b86SJernej Skrabec};
24632507b86SJernej Skrabec
247f0c083b8SJagan Teki&uart0 {
248f0c083b8SJagan Teki	pinctrl-names = "default";
249f0c083b8SJagan Teki	pinctrl-0 = <&uart0_ph_pins>;
250f0c083b8SJagan Teki	status = "okay";
251f0c083b8SJagan Teki};
2529b8d1ccdSChen-Yu Tsai
2539b8d1ccdSChen-Yu Tsai&usb2otg {
25427c9f2a0SJernej Skrabec	/*
25527c9f2a0SJernej Skrabec	 * OrangePi Lite 2 and One Plus, where this DT is used, don't
25627c9f2a0SJernej Skrabec	 * have a controllable VBUS even though they do have an ID pin.
25727c9f2a0SJernej Skrabec	 * Using it as anything but a USB host is unsafe.
25827c9f2a0SJernej Skrabec	 */
25927c9f2a0SJernej Skrabec	dr_mode = "host";
2609b8d1ccdSChen-Yu Tsai	status = "okay";
2619b8d1ccdSChen-Yu Tsai};
2629b8d1ccdSChen-Yu Tsai
2639b8d1ccdSChen-Yu Tsai&usb2phy {
2649b8d1ccdSChen-Yu Tsai	usb0_id_det-gpios = <&pio 2 6 GPIO_ACTIVE_HIGH>; /* PC6 */
2659b8d1ccdSChen-Yu Tsai	usb0_vbus-supply = <&reg_vcc5v>;
2669b8d1ccdSChen-Yu Tsai	usb3_vbus-supply = <&reg_vcc5v>;
2679b8d1ccdSChen-Yu Tsai	status = "okay";
2689b8d1ccdSChen-Yu Tsai};
269