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
45e299e6ddSMaxime Ripard		led-0 {
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
51e299e6ddSMaxime Ripard		led-1 {
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
115*531fdbeeSSamuel Holland&r_ir {
116*531fdbeeSSamuel Holland	status = "okay";
117*531fdbeeSSamuel Holland};
118*531fdbeeSSamuel Holland
119*531fdbeeSSamuel Holland&r_pio {
120*531fdbeeSSamuel Holland	vcc-pm-supply = <&reg_bldo3>;
121*531fdbeeSSamuel Holland};
122*531fdbeeSSamuel Holland
123*531fdbeeSSamuel Holland&r_rsb {
124f0c083b8SJagan Teki	status = "okay";
125f0c083b8SJagan Teki
126*531fdbeeSSamuel Holland	axp805: pmic@745 {
127f0c083b8SJagan Teki		compatible = "x-powers,axp805", "x-powers,axp806";
128*531fdbeeSSamuel Holland		reg = <0x745>;
129f0c083b8SJagan Teki		interrupt-parent = <&r_intc>;
13073088dfeSSamuel Holland		interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
131f0c083b8SJagan Teki		interrupt-controller;
132f0c083b8SJagan Teki		#interrupt-cells = <1>;
133f0c083b8SJagan Teki		x-powers,self-working-mode;
134919d2514SChen-Yu Tsai		vina-supply = <&reg_vcc5v>;
135919d2514SChen-Yu Tsai		vinb-supply = <&reg_vcc5v>;
136919d2514SChen-Yu Tsai		vinc-supply = <&reg_vcc5v>;
137919d2514SChen-Yu Tsai		vind-supply = <&reg_vcc5v>;
138919d2514SChen-Yu Tsai		vine-supply = <&reg_vcc5v>;
139919d2514SChen-Yu Tsai		aldoin-supply = <&reg_vcc5v>;
140919d2514SChen-Yu Tsai		bldoin-supply = <&reg_vcc5v>;
141919d2514SChen-Yu Tsai		cldoin-supply = <&reg_vcc5v>;
142f0c083b8SJagan Teki
143f0c083b8SJagan Teki		regulators {
144f0c083b8SJagan Teki			reg_aldo1: aldo1 {
145f0c083b8SJagan Teki				regulator-always-on;
146f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
147f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
148f0c083b8SJagan Teki				regulator-name = "vcc-pl";
149f0c083b8SJagan Teki			};
150f0c083b8SJagan Teki
151f0c083b8SJagan Teki			reg_aldo2: aldo2 {
152f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
153f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
154f0c083b8SJagan Teki				regulator-name = "vcc-ac200";
155f0c083b8SJagan Teki			};
156f0c083b8SJagan Teki
157f0c083b8SJagan Teki			reg_aldo3: aldo3 {
158f0c083b8SJagan Teki				regulator-always-on;
159f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
160f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
161f0c083b8SJagan Teki				regulator-name = "vcc25-dram";
162f0c083b8SJagan Teki			};
163f0c083b8SJagan Teki
164f0c083b8SJagan Teki			reg_bldo1: bldo1 {
165f0c083b8SJagan Teki				regulator-always-on;
166f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
167f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
168f0c083b8SJagan Teki				regulator-name = "vcc-bias-pll";
169f0c083b8SJagan Teki			};
170f0c083b8SJagan Teki
171f0c083b8SJagan Teki			reg_bldo2: bldo2 {
172f0c083b8SJagan Teki				regulator-always-on;
173f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
174f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
175f0c083b8SJagan Teki				regulator-name = "vcc-efuse-pcie-hdmi-io";
176f0c083b8SJagan Teki			};
177f0c083b8SJagan Teki
178f0c083b8SJagan Teki			reg_bldo3: bldo3 {
179f0c083b8SJagan Teki				regulator-always-on;
180f0c083b8SJagan Teki				regulator-min-microvolt = <1800000>;
181f0c083b8SJagan Teki				regulator-max-microvolt = <1800000>;
182f0c083b8SJagan Teki				regulator-name = "vcc-dcxoio";
183f0c083b8SJagan Teki			};
184f0c083b8SJagan Teki
185f0c083b8SJagan Teki			bldo4 {
186f0c083b8SJagan Teki				/* unused */
187f0c083b8SJagan Teki			};
188f0c083b8SJagan Teki
189f0c083b8SJagan Teki			reg_cldo1: cldo1 {
190f0c083b8SJagan Teki				regulator-always-on;
191f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
192f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
193f0c083b8SJagan Teki				regulator-name = "vcc-3v3";
194f0c083b8SJagan Teki			};
195f0c083b8SJagan Teki
196f0c083b8SJagan Teki			reg_cldo2: cldo2 {
197f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
198f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
199f0c083b8SJagan Teki				regulator-name = "vcc-wifi-1";
200f0c083b8SJagan Teki			};
201f0c083b8SJagan Teki
202f0c083b8SJagan Teki			reg_cldo3: cldo3 {
203f0c083b8SJagan Teki				regulator-min-microvolt = <3300000>;
204f0c083b8SJagan Teki				regulator-max-microvolt = <3300000>;
205f0c083b8SJagan Teki				regulator-name = "vcc-wifi-2";
206f0c083b8SJagan Teki			};
207f0c083b8SJagan Teki
208f0c083b8SJagan Teki			reg_dcdca: dcdca {
209f0c083b8SJagan Teki				regulator-always-on;
210f0c083b8SJagan Teki				regulator-min-microvolt = <810000>;
211f0c083b8SJagan Teki				regulator-max-microvolt = <1080000>;
212f0c083b8SJagan Teki				regulator-name = "vdd-cpu";
213f0c083b8SJagan Teki			};
214f0c083b8SJagan Teki
215f0c083b8SJagan Teki			reg_dcdcc: dcdcc {
2168abc4c4aSClément Péron				regulator-enable-ramp-delay = <32000>;
217f0c083b8SJagan Teki				regulator-min-microvolt = <810000>;
218f0c083b8SJagan Teki				regulator-max-microvolt = <1080000>;
219f0c083b8SJagan Teki				regulator-name = "vdd-gpu";
220f0c083b8SJagan Teki			};
221f0c083b8SJagan Teki
222f0c083b8SJagan Teki			reg_dcdcd: dcdcd {
223f0c083b8SJagan Teki				regulator-always-on;
224f0c083b8SJagan Teki				regulator-min-microvolt = <960000>;
225f0c083b8SJagan Teki				regulator-max-microvolt = <960000>;
226f0c083b8SJagan Teki				regulator-name = "vdd-sys";
227f0c083b8SJagan Teki			};
228f0c083b8SJagan Teki
229f0c083b8SJagan Teki			reg_dcdce: dcdce {
230f0c083b8SJagan Teki				regulator-always-on;
231f0c083b8SJagan Teki				regulator-min-microvolt = <1200000>;
232f0c083b8SJagan Teki				regulator-max-microvolt = <1200000>;
233f0c083b8SJagan Teki				regulator-name = "vcc-dram";
234f0c083b8SJagan Teki			};
235f0c083b8SJagan Teki
236f0c083b8SJagan Teki			sw {
237f0c083b8SJagan Teki				/* unused */
238f0c083b8SJagan Teki			};
239f0c083b8SJagan Teki		};
240f0c083b8SJagan Teki	};
241f0c083b8SJagan Teki};
242f0c083b8SJagan Teki
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