1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (C) 2019 Igor Pecovnik <igor@armbian.com>
4 * Copyright (C) 2020 Jayantajit Gogoi <jayanta.gogoi525@gmail.com>
5 * Copyright (C) 2020 Yu-Tung Chang <mtwget@gmail.com>
6*/
7
8#include "sun8i-h3-nanopi.dtsi"
9#include <dt-bindings/leds/common.h>
10
11/ {
12	model = "FriendlyARM NanoPi R1";
13	compatible = "friendlyarm,nanopi-r1", "allwinner,sun8i-h3";
14
15	aliases {
16		serial1 = &uart1;
17		ethernet0 = &emac;
18		ethernet1 = &wifi;
19	};
20
21	reg_gmac_3v3: gmac-3v3 {
22		compatible = "regulator-fixed";
23		regulator-name = "gmac-3v3";
24		regulator-min-microvolt = <3300000>;
25		regulator-max-microvolt = <3300000>;
26		startup-delay-us = <100000>;
27		enable-active-high;
28		gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
29	};
30
31	reg_vdd_cpux: gpio-regulator {
32		compatible = "regulator-gpio";
33		regulator-name = "vdd-cpux";
34		regulator-type = "voltage";
35		regulator-boot-on;
36		regulator-always-on;
37		regulator-min-microvolt = <1100000>;
38		regulator-max-microvolt = <1300000>;
39		regulator-ramp-delay = <50>;
40		gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
41		gpios-states = <0x1>;
42		states = <1100000 0x0>,
43			 <1300000 0x1>;
44	};
45
46	wifi_pwrseq: wifi_pwrseq {
47		compatible = "mmc-pwrseq-simple";
48		reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
49		clocks = <&rtc CLK_OSC32K_FANOUT>;
50		clock-names = "ext_clock";
51	};
52
53	leds {
54		led-2 {
55			function = LED_FUNCTION_WAN;
56			color = <LED_COLOR_ID_GREEN>;
57			gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
58		};
59
60		led-3 {
61			function = LED_FUNCTION_LAN;
62			color = <LED_COLOR_ID_GREEN>;
63			gpios = <&pio 0 9 GPIO_ACTIVE_HIGH>; /* PA9 */
64		};
65	};
66};
67
68&cpu0 {
69	cpu-supply = <&reg_vdd_cpux>;
70};
71
72&ehci1 {
73	status = "okay";
74};
75
76&ehci2 {
77	status = "okay";
78};
79
80&emac {
81	pinctrl-names = "default";
82	pinctrl-0 = <&emac_rgmii_pins>;
83	phy-supply = <&reg_gmac_3v3>;
84	phy-handle = <&ext_rgmii_phy>;
85	phy-mode = "rgmii-id";
86	status = "okay";
87};
88
89&external_mdio {
90	ext_rgmii_phy: ethernet-phy@7 {
91		compatible = "ethernet-phy-ieee802.3-c22";
92		reg = <7>;
93	};
94};
95
96&mmc1 {
97	vmmc-supply = <&reg_vcc3v3>;
98	vqmmc-supply = <&reg_vcc3v3>;
99	mmc-pwrseq = <&wifi_pwrseq>;
100	bus-width = <4>;
101	non-removable;
102	status = "okay";
103
104	wifi: wifi@1 {
105		reg = <1>;
106		compatible = "brcm,bcm4329-fmac";
107		interrupt-parent = <&pio>;
108		interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
109		interrupt-names = "host-wake";
110	};
111};
112
113&mmc2 {
114	pinctrl-names = "default";
115	pinctrl-0 = <&mmc2_8bit_pins>;
116	vmmc-supply = <&reg_vcc3v3>;
117	vqmmc-supply = <&reg_vcc3v3>;
118	bus-width = <8>;
119	non-removable;
120	status = "okay";
121};
122
123&ohci1 {
124	status = "okay";
125};
126
127&ohci2 {
128	status = "okay";
129};
130
131&reg_usb0_vbus {
132	gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
133	status = "okay";
134};
135
136&uart1 {
137	pinctrl-names = "default";
138	pinctrl-0 = <&uart1_pins>;
139	status = "okay";
140};
141
142&uart3 {
143	pinctrl-names = "default";
144	pinctrl-0 = <&uart3_pins>, <&uart3_rts_cts_pins>;
145	uart-has-rtscts;
146	status = "okay";
147
148	bluetooth {
149		compatible = "brcm,bcm43438-bt";
150		clocks = <&rtc CLK_OSC32K_FANOUT>;
151		clock-names = "lpo";
152		vbat-supply = <&reg_vcc3v3>;
153		vddio-supply = <&reg_vcc3v3>;
154		device-wakeup-gpios = <&pio 0 8 GPIO_ACTIVE_HIGH>; /* PA8 */
155		host-wakeup-gpios = <&pio 0 7 GPIO_ACTIVE_HIGH>; /* PA7 */
156		shutdown-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
157	};
158};
159
160&usb_otg {
161	status = "okay";
162	dr_mode = "otg";
163};
164
165&usbphy {
166	usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
167	usb0_vbus-supply = <&reg_usb0_vbus>;
168	status = "okay";
169};
170