1b4b8f2c9SClément Péron// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2cabbaed7SClément Péron// Copyright (C) 2017 Antony Antony <antony@phenome.org>
3cabbaed7SClément Péron// Copyright (C) 2016 ARM Ltd.
4d7341305SAntony Antony
5d7341305SAntony Antony/dts-v1/;
6d7341305SAntony Antony#include "sun50i-h5.dtsi"
7d7341305SAntony Antony
8d7341305SAntony Antony#include <dt-bindings/gpio/gpio.h>
9d7341305SAntony Antony#include <dt-bindings/input/input.h>
10d7341305SAntony Antony#include <dt-bindings/pinctrl/sun4i-a10.h>
11d7341305SAntony Antony
12d7341305SAntony Antony/ {
13d7341305SAntony Antony	model = "FriendlyARM NanoPi NEO Plus2";
14d7341305SAntony Antony	compatible = "friendlyarm,nanopi-neo-plus2", "allwinner,sun50i-h5";
15d7341305SAntony Antony
16d7341305SAntony Antony	aliases {
1727d7f929SAntony Antony		ethernet0 = &emac;
18d7341305SAntony Antony		serial0 = &uart0;
19d7341305SAntony Antony	};
20d7341305SAntony Antony
21d7341305SAntony Antony	chosen {
22d7341305SAntony Antony		stdout-path = "serial0:115200n8";
23d7341305SAntony Antony	};
24d7341305SAntony Antony
25d7341305SAntony Antony	leds {
26d7341305SAntony Antony		compatible = "gpio-leds";
27d7341305SAntony Antony
28*e299e6ddSMaxime Ripard		led-0 {
29d7341305SAntony Antony			label = "nanopi:green:pwr";
30d7341305SAntony Antony			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>;
31d7341305SAntony Antony			default-state = "on";
32d7341305SAntony Antony		};
33d7341305SAntony Antony
34*e299e6ddSMaxime Ripard		led-1 {
35d7341305SAntony Antony			label = "nanopi:red:status";
36d7341305SAntony Antony			gpios = <&pio 0 20 GPIO_ACTIVE_HIGH>;
37d7341305SAntony Antony		};
38d7341305SAntony Antony	};
39d7341305SAntony Antony
40d7341305SAntony Antony	reg_gmac_3v3: gmac-3v3 {
41d7341305SAntony Antony		compatible = "regulator-fixed";
42d7341305SAntony Antony		regulator-name = "gmac-3v3";
43d7341305SAntony Antony		regulator-min-microvolt = <3300000>;
44d7341305SAntony Antony		regulator-max-microvolt = <3300000>;
45d7341305SAntony Antony		startup-delay-us = <100000>;
46d7341305SAntony Antony		enable-active-high;
47d7341305SAntony Antony		gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>;
48d7341305SAntony Antony	};
49d7341305SAntony Antony
50d7341305SAntony Antony	reg_vcc3v3: vcc3v3 {
51d7341305SAntony Antony		compatible = "regulator-fixed";
52d7341305SAntony Antony		regulator-name = "vcc3v3";
53d7341305SAntony Antony		regulator-min-microvolt = <3300000>;
54d7341305SAntony Antony		regulator-max-microvolt = <3300000>;
55d7341305SAntony Antony	};
56d7341305SAntony Antony
57d7341305SAntony Antony	vdd_cpux: gpio-regulator {
58d7341305SAntony Antony		compatible = "regulator-gpio";
59d7341305SAntony Antony		regulator-name = "vdd-cpux";
60d7341305SAntony Antony		regulator-type = "voltage";
61d7341305SAntony Antony		regulator-boot-on;
62d7341305SAntony Antony		regulator-always-on;
63d7341305SAntony Antony		regulator-min-microvolt = <1100000>;
64d7341305SAntony Antony		regulator-max-microvolt = <1300000>;
65d7341305SAntony Antony		regulator-ramp-delay = <50>; /* 4ms */
66d7341305SAntony Antony		gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>;
67d7341305SAntony Antony		gpios-states = <0x1>;
689fbbbb7bSMaxime Ripard		states = <1100000 0>, <1300000 1>;
69d7341305SAntony Antony	};
70d7341305SAntony Antony
71d7341305SAntony Antony	wifi_pwrseq: wifi_pwrseq {
72d7341305SAntony Antony		compatible = "mmc-pwrseq-simple";
73d7341305SAntony Antony		reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
74d7341305SAntony Antony		post-power-on-delay-ms = <200>;
75d7341305SAntony Antony	};
76d7341305SAntony Antony};
77d7341305SAntony Antony
78d7341305SAntony Antony&codec {
79d7341305SAntony Antony	allwinner,audio-routing =
80d7341305SAntony Antony		"Line Out", "LINEOUT",
81d7341305SAntony Antony		"MIC1", "Mic",
82d7341305SAntony Antony		"Mic",  "MBIAS";
83d7341305SAntony Antony	status = "okay";
84d7341305SAntony Antony};
85d7341305SAntony Antony
86d7341305SAntony Antony&ehci0 {
87d7341305SAntony Antony	status = "okay";
88d7341305SAntony Antony};
89d7341305SAntony Antony
90d7341305SAntony Antony&ehci3 {
91d7341305SAntony Antony	status = "okay";
92d7341305SAntony Antony};
93d7341305SAntony Antony
9427d7f929SAntony Antony&emac {
9527d7f929SAntony Antony	pinctrl-names = "default";
9627d7f929SAntony Antony	pinctrl-0 = <&emac_rgmii_pins>;
9727d7f929SAntony Antony	phy-supply = <&reg_gmac_3v3>;
9827d7f929SAntony Antony	phy-handle = <&ext_rgmii_phy>;
99d0c6707cSHeinrich Schuchardt	phy-mode = "rgmii-id";
10027d7f929SAntony Antony	status = "okay";
10127d7f929SAntony Antony};
10227d7f929SAntony Antony
10327d7f929SAntony Antony&external_mdio {
10427d7f929SAntony Antony	ext_rgmii_phy: ethernet-phy@7 {
10527d7f929SAntony Antony		compatible = "ethernet-phy-ieee802.3-c22";
10627d7f929SAntony Antony		reg = <7>;
10727d7f929SAntony Antony	};
10827d7f929SAntony Antony};
10927d7f929SAntony Antony
110d7341305SAntony Antony&mmc0 {
111d7341305SAntony Antony	vmmc-supply = <&reg_vcc3v3>;
112d7341305SAntony Antony	bus-width = <4>;
113d7341305SAntony Antony	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
114d7341305SAntony Antony	status = "okay";
115d7341305SAntony Antony};
116d7341305SAntony Antony
117d7341305SAntony Antony&mmc1 {
118d7341305SAntony Antony	vmmc-supply = <&reg_vcc3v3>;
119d7341305SAntony Antony	vqmmc-supply = <&reg_vcc3v3>;
120d7341305SAntony Antony	mmc-pwrseq = <&wifi_pwrseq>;
121d7341305SAntony Antony	bus-width = <4>;
122d7341305SAntony Antony	non-removable;
123d7341305SAntony Antony	status = "okay";
124d7341305SAntony Antony
125d7341305SAntony Antony	brcmf: wifi@1 {
126d7341305SAntony Antony		reg = <1>;
127d7341305SAntony Antony		compatible = "brcm,bcm4329-fmac";
128d7341305SAntony Antony	};
129d7341305SAntony Antony};
130d7341305SAntony Antony
131d7341305SAntony Antony&mmc2 {
132d7341305SAntony Antony	pinctrl-names = "default";
133d7341305SAntony Antony	pinctrl-0 = <&mmc2_8bit_pins>;
134d7341305SAntony Antony	vmmc-supply = <&reg_vcc3v3>;
135d7341305SAntony Antony	bus-width = <8>;
136d7341305SAntony Antony	non-removable;
137d7341305SAntony Antony	cap-mmc-hw-reset;
138d7341305SAntony Antony	status = "okay";
139d7341305SAntony Antony};
140d7341305SAntony Antony
141d7341305SAntony Antony&ohci0 {
142d7341305SAntony Antony	status = "okay";
143d7341305SAntony Antony};
144d7341305SAntony Antony
145d7341305SAntony Antony&ohci3 {
146d7341305SAntony Antony	status = "okay";
147d7341305SAntony Antony};
148d7341305SAntony Antony
149d7341305SAntony Antony&uart0 {
150d7341305SAntony Antony	pinctrl-names = "default";
151a4dc7919SMaxime Ripard	pinctrl-0 = <&uart0_pa_pins>;
152d7341305SAntony Antony	status = "okay";
153d7341305SAntony Antony};
154d7341305SAntony Antony
155d7341305SAntony Antony&usb_otg {
156d7341305SAntony Antony	dr_mode = "host";
157d7341305SAntony Antony	status = "okay";
158d7341305SAntony Antony};
159d7341305SAntony Antony
160d7341305SAntony Antony&usbphy {
161d7341305SAntony Antony	/* USB Type-A ports' VBUS is always on */
162d7341305SAntony Antony	status = "okay";
163d7341305SAntony Antony};
164