1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2c66ec88fSEmmanuel Vadot// Copyright (C) 2017 Jagan Teki <jteki@openedev.com>
3c66ec88fSEmmanuel Vadot
4c66ec88fSEmmanuel Vadot/dts-v1/;
5c66ec88fSEmmanuel Vadot
6c66ec88fSEmmanuel Vadot#include "sun50i-a64.dtsi"
7c66ec88fSEmmanuel Vadot#include "sun50i-a64-cpu-opp.dtsi"
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
10c66ec88fSEmmanuel Vadot
11c66ec88fSEmmanuel Vadot/ {
12c66ec88fSEmmanuel Vadot	model = "FriendlyARM NanoPi A64";
13c66ec88fSEmmanuel Vadot	compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64";
14c66ec88fSEmmanuel Vadot
15c66ec88fSEmmanuel Vadot	aliases {
16c66ec88fSEmmanuel Vadot		ethernet0 = &emac;
17c66ec88fSEmmanuel Vadot		serial0 = &uart0;
18c66ec88fSEmmanuel Vadot	};
19c66ec88fSEmmanuel Vadot
20c66ec88fSEmmanuel Vadot	chosen {
21c66ec88fSEmmanuel Vadot		stdout-path = "serial0:115200n8";
22c66ec88fSEmmanuel Vadot	};
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel Vadot	hdmi-connector {
25c66ec88fSEmmanuel Vadot		compatible = "hdmi-connector";
26c66ec88fSEmmanuel Vadot		type = "a";
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot		port {
29c66ec88fSEmmanuel Vadot			hdmi_con_in: endpoint {
30c66ec88fSEmmanuel Vadot				remote-endpoint = <&hdmi_out_con>;
31c66ec88fSEmmanuel Vadot			};
32c66ec88fSEmmanuel Vadot		};
33c66ec88fSEmmanuel Vadot	};
34c66ec88fSEmmanuel Vadot
35c66ec88fSEmmanuel Vadot	leds {
36c66ec88fSEmmanuel Vadot		compatible = "gpio-leds";
37c66ec88fSEmmanuel Vadot
385def4c47SEmmanuel Vadot		led {
39c66ec88fSEmmanuel Vadot			label = "nanopi-a64:blue:status";
40c66ec88fSEmmanuel Vadot			gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
41c66ec88fSEmmanuel Vadot		};
42c66ec88fSEmmanuel Vadot	};
43c66ec88fSEmmanuel Vadot
44c66ec88fSEmmanuel Vadot	wifi_pwrseq: wifi_pwrseq {
45c66ec88fSEmmanuel Vadot		compatible = "mmc-pwrseq-simple";
46*b97ee269SEmmanuel Vadot		clocks = <&rtc CLK_OSC32K_FANOUT>;
47c66ec88fSEmmanuel Vadot		clock-names = "ext_clock";
48c66ec88fSEmmanuel Vadot		reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
49c66ec88fSEmmanuel Vadot	};
50c66ec88fSEmmanuel Vadot};
51c66ec88fSEmmanuel Vadot
52c66ec88fSEmmanuel Vadot&cpu0 {
53c66ec88fSEmmanuel Vadot	cpu-supply = <&reg_dcdc2>;
54c66ec88fSEmmanuel Vadot};
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadot&cpu1 {
57c66ec88fSEmmanuel Vadot	cpu-supply = <&reg_dcdc2>;
58c66ec88fSEmmanuel Vadot};
59c66ec88fSEmmanuel Vadot
60c66ec88fSEmmanuel Vadot&cpu2 {
61c66ec88fSEmmanuel Vadot	cpu-supply = <&reg_dcdc2>;
62c66ec88fSEmmanuel Vadot};
63c66ec88fSEmmanuel Vadot
64c66ec88fSEmmanuel Vadot&cpu3 {
65c66ec88fSEmmanuel Vadot	cpu-supply = <&reg_dcdc2>;
66c66ec88fSEmmanuel Vadot};
67c66ec88fSEmmanuel Vadot
68c66ec88fSEmmanuel Vadot&de {
69c66ec88fSEmmanuel Vadot	status = "okay";
70c66ec88fSEmmanuel Vadot};
71c66ec88fSEmmanuel Vadot
72c66ec88fSEmmanuel Vadot&ehci0 {
73c66ec88fSEmmanuel Vadot	status = "okay";
74c66ec88fSEmmanuel Vadot};
75c66ec88fSEmmanuel Vadot
76c66ec88fSEmmanuel Vadot&ehci1 {
77c66ec88fSEmmanuel Vadot	status = "okay";
78c66ec88fSEmmanuel Vadot};
79c66ec88fSEmmanuel Vadot
80c66ec88fSEmmanuel Vadot&emac {
81c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
82c66ec88fSEmmanuel Vadot	pinctrl-0 = <&rgmii_pins>;
83c66ec88fSEmmanuel Vadot	phy-mode = "rgmii";
84c66ec88fSEmmanuel Vadot	phy-handle = <&ext_rgmii_phy>;
85c66ec88fSEmmanuel Vadot	phy-supply = <&reg_dcdc1>;
86c66ec88fSEmmanuel Vadot	status = "okay";
87c66ec88fSEmmanuel Vadot};
88c66ec88fSEmmanuel Vadot
89c66ec88fSEmmanuel Vadot&hdmi {
90c66ec88fSEmmanuel Vadot	hvcc-supply = <&reg_dldo1>;
91c66ec88fSEmmanuel Vadot	status = "okay";
92c66ec88fSEmmanuel Vadot};
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot&hdmi_out {
95c66ec88fSEmmanuel Vadot	hdmi_out_con: endpoint {
96c66ec88fSEmmanuel Vadot		remote-endpoint = <&hdmi_con_in>;
97c66ec88fSEmmanuel Vadot	};
98c66ec88fSEmmanuel Vadot};
99c66ec88fSEmmanuel Vadot
100c66ec88fSEmmanuel Vadot/* i2c1 connected with gpio headers like pine64, bananapi */
101c66ec88fSEmmanuel Vadot&i2c1_pins {
102c66ec88fSEmmanuel Vadot	bias-pull-up;
103c66ec88fSEmmanuel Vadot};
104c66ec88fSEmmanuel Vadot
105c66ec88fSEmmanuel Vadot&mdio {
106c66ec88fSEmmanuel Vadot	ext_rgmii_phy: ethernet-phy@1 {
107c66ec88fSEmmanuel Vadot		compatible = "ethernet-phy-ieee802.3-c22";
108c66ec88fSEmmanuel Vadot		reg = <7>;
109c66ec88fSEmmanuel Vadot	};
110c66ec88fSEmmanuel Vadot};
111c66ec88fSEmmanuel Vadot
112c66ec88fSEmmanuel Vadot&mmc0 {
113c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
114c66ec88fSEmmanuel Vadot	pinctrl-0 = <&mmc0_pins>;
115c66ec88fSEmmanuel Vadot	vmmc-supply = <&reg_dcdc1>;
116c66ec88fSEmmanuel Vadot	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
117c66ec88fSEmmanuel Vadot	disable-wp;
118c66ec88fSEmmanuel Vadot	bus-width = <4>;
119c66ec88fSEmmanuel Vadot	status = "okay";
120c66ec88fSEmmanuel Vadot};
121c66ec88fSEmmanuel Vadot
122c66ec88fSEmmanuel Vadot&mmc1 {
123c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
124c66ec88fSEmmanuel Vadot	pinctrl-0 = <&mmc1_pins>;
125c66ec88fSEmmanuel Vadot	vmmc-supply = <&reg_dcdc1>;
126c66ec88fSEmmanuel Vadot	vqmmc-supply = <&reg_dldo4>;
127c66ec88fSEmmanuel Vadot	mmc-pwrseq = <&wifi_pwrseq>;
128c66ec88fSEmmanuel Vadot	bus-width = <4>;
129c66ec88fSEmmanuel Vadot	non-removable;
130c66ec88fSEmmanuel Vadot	status = "okay";
131c66ec88fSEmmanuel Vadot
132c66ec88fSEmmanuel Vadot	rtl8189etv: wifi@1 {
133c66ec88fSEmmanuel Vadot		reg = <1>;
134c66ec88fSEmmanuel Vadot		interrupt-parent = <&r_pio>;
135c66ec88fSEmmanuel Vadot		interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */
136c66ec88fSEmmanuel Vadot		interrupt-names = "host-wake";
137c66ec88fSEmmanuel Vadot	};
138c66ec88fSEmmanuel Vadot};
139c66ec88fSEmmanuel Vadot
140c66ec88fSEmmanuel Vadot&ohci0 {
141c66ec88fSEmmanuel Vadot	status = "okay";
142c66ec88fSEmmanuel Vadot};
143c66ec88fSEmmanuel Vadot
144c66ec88fSEmmanuel Vadot&ohci1 {
145c66ec88fSEmmanuel Vadot	status = "okay";
146c66ec88fSEmmanuel Vadot};
147c66ec88fSEmmanuel Vadot
148c66ec88fSEmmanuel Vadot&r_rsb {
149c66ec88fSEmmanuel Vadot	status = "okay";
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot	axp803: pmic@3a3 {
152c66ec88fSEmmanuel Vadot		compatible = "x-powers,axp803";
153c66ec88fSEmmanuel Vadot		reg = <0x3a3>;
154c66ec88fSEmmanuel Vadot		interrupt-parent = <&r_intc>;
1552eb4d8dcSEmmanuel Vadot		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
156c66ec88fSEmmanuel Vadot	};
157c66ec88fSEmmanuel Vadot};
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot#include "axp803.dtsi"
160c66ec88fSEmmanuel Vadot
161c66ec88fSEmmanuel Vadot&ac_power_supply {
162c66ec88fSEmmanuel Vadot	status = "okay";
163c66ec88fSEmmanuel Vadot};
164c66ec88fSEmmanuel Vadot
165c66ec88fSEmmanuel Vadot&reg_aldo2 {
166c66ec88fSEmmanuel Vadot	regulator-always-on;
167c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1800000>;
168c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <3300000>;
169c66ec88fSEmmanuel Vadot	regulator-name = "vcc-pl";
170c66ec88fSEmmanuel Vadot};
171c66ec88fSEmmanuel Vadot
172c66ec88fSEmmanuel Vadot&reg_aldo3 {
173c66ec88fSEmmanuel Vadot	regulator-always-on;
174c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <3000000>;
175c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <3000000>;
176c66ec88fSEmmanuel Vadot	regulator-name = "vcc-pll-avcc";
177c66ec88fSEmmanuel Vadot};
178c66ec88fSEmmanuel Vadot
179c66ec88fSEmmanuel Vadot&reg_dcdc1 {
180c66ec88fSEmmanuel Vadot	regulator-always-on;
181c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <3300000>;
182c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <3300000>;
183c66ec88fSEmmanuel Vadot	regulator-name = "vcc-3v3";
184c66ec88fSEmmanuel Vadot};
185c66ec88fSEmmanuel Vadot
186c66ec88fSEmmanuel Vadot&reg_dcdc2 {
187c66ec88fSEmmanuel Vadot	regulator-always-on;
188c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1040000>;
189c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1300000>;
190c66ec88fSEmmanuel Vadot	regulator-name = "vdd-cpux";
191c66ec88fSEmmanuel Vadot};
192c66ec88fSEmmanuel Vadot
193c66ec88fSEmmanuel Vadot/* DCDC3 is polyphased with DCDC2 */
194c66ec88fSEmmanuel Vadot
195c66ec88fSEmmanuel Vadot&reg_dcdc5 {
196c66ec88fSEmmanuel Vadot	regulator-always-on;
197c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1500000>;
198c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1500000>;
199c66ec88fSEmmanuel Vadot	regulator-name = "vcc-dram";
200c66ec88fSEmmanuel Vadot};
201c66ec88fSEmmanuel Vadot
202c66ec88fSEmmanuel Vadot&reg_dcdc6 {
203c66ec88fSEmmanuel Vadot	regulator-always-on;
204c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1100000>;
205c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1100000>;
206c66ec88fSEmmanuel Vadot	regulator-name = "vdd-sys";
207c66ec88fSEmmanuel Vadot};
208c66ec88fSEmmanuel Vadot
209c66ec88fSEmmanuel Vadot&reg_dldo1 {
210c66ec88fSEmmanuel Vadot	regulator-always-on;
211c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <3300000>;
212c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <3300000>;
213c66ec88fSEmmanuel Vadot	regulator-name = "vcc-hdmi-dsi";
214c66ec88fSEmmanuel Vadot};
215c66ec88fSEmmanuel Vadot
216c66ec88fSEmmanuel Vadot&reg_dldo4 {
217c66ec88fSEmmanuel Vadot	regulator-always-on;
218c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <3000000>;
219c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <3000000>;
220c66ec88fSEmmanuel Vadot	regulator-name = "vcc-pg-wifi-io";
221c66ec88fSEmmanuel Vadot};
222c66ec88fSEmmanuel Vadot
223c66ec88fSEmmanuel Vadot&reg_eldo1 {
224c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1800000>;
225c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1800000>;
226c66ec88fSEmmanuel Vadot	regulator-name = "cpvdd";
227c66ec88fSEmmanuel Vadot};
228c66ec88fSEmmanuel Vadot
229c66ec88fSEmmanuel Vadot&reg_fldo1 {
230c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1200000>;
231c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1200000>;
232c66ec88fSEmmanuel Vadot	regulator-name = "vcc-1v2-hsic";
233c66ec88fSEmmanuel Vadot};
234c66ec88fSEmmanuel Vadot
235c66ec88fSEmmanuel Vadot/*
236c66ec88fSEmmanuel Vadot * The A64 chip cannot work without this regulator off, although
237c66ec88fSEmmanuel Vadot * it seems to be only driving the AR100 core.
238c66ec88fSEmmanuel Vadot * Maybe we don't still know well about CPUs domain.
239c66ec88fSEmmanuel Vadot */
240c66ec88fSEmmanuel Vadot&reg_fldo2 {
241c66ec88fSEmmanuel Vadot	regulator-always-on;
242c66ec88fSEmmanuel Vadot	regulator-min-microvolt = <1100000>;
243c66ec88fSEmmanuel Vadot	regulator-max-microvolt = <1100000>;
244c66ec88fSEmmanuel Vadot	regulator-name = "vdd-cpus";
245c66ec88fSEmmanuel Vadot};
246c66ec88fSEmmanuel Vadot
247c66ec88fSEmmanuel Vadot&reg_rtc_ldo {
248c66ec88fSEmmanuel Vadot	regulator-name = "vcc-rtc";
249c66ec88fSEmmanuel Vadot};
250c66ec88fSEmmanuel Vadot
251c66ec88fSEmmanuel Vadot&simplefb_hdmi {
252c66ec88fSEmmanuel Vadot	vcc-hdmi-supply = <&reg_dldo1>;
253c66ec88fSEmmanuel Vadot};
254c66ec88fSEmmanuel Vadot
255c66ec88fSEmmanuel Vadot&uart0 {
256c66ec88fSEmmanuel Vadot	pinctrl-names = "default";
257c66ec88fSEmmanuel Vadot	pinctrl-0 = <&uart0_pb_pins>;
258c66ec88fSEmmanuel Vadot	status = "okay";
259c66ec88fSEmmanuel Vadot};
260c66ec88fSEmmanuel Vadot
261c66ec88fSEmmanuel Vadot&usbphy {
262c66ec88fSEmmanuel Vadot	status = "okay";
263c66ec88fSEmmanuel Vadot};
264