1*88ea6989SSamuel Holland// SPDX-License-Identifier: (GPL-2.0+ or MIT)
2*88ea6989SSamuel Holland// Copyright (C) 2021-2022 Samuel Holland <samuel@sholland.org>
3*88ea6989SSamuel Holland
4*88ea6989SSamuel Holland#include <dt-bindings/gpio/gpio.h>
5*88ea6989SSamuel Holland#include <dt-bindings/input/input.h>
6*88ea6989SSamuel Holland
7*88ea6989SSamuel Holland/dts-v1/;
8*88ea6989SSamuel Holland
9*88ea6989SSamuel Holland#include "sun20i-d1.dtsi"
10*88ea6989SSamuel Holland#include "sun20i-common-regulators.dtsi"
11*88ea6989SSamuel Holland
12*88ea6989SSamuel Holland/ {
13*88ea6989SSamuel Holland	model = "Allwinner D1 Nezha";
14*88ea6989SSamuel Holland	compatible = "allwinner,d1-nezha", "allwinner,sun20i-d1";
15*88ea6989SSamuel Holland
16*88ea6989SSamuel Holland	aliases {
17*88ea6989SSamuel Holland		ethernet0 = &emac;
18*88ea6989SSamuel Holland		ethernet1 = &xr829;
19*88ea6989SSamuel Holland		serial0 = &uart0;
20*88ea6989SSamuel Holland	};
21*88ea6989SSamuel Holland
22*88ea6989SSamuel Holland	chosen {
23*88ea6989SSamuel Holland		stdout-path = "serial0:115200n8";
24*88ea6989SSamuel Holland	};
25*88ea6989SSamuel Holland
26*88ea6989SSamuel Holland	reg_usbvbus: usbvbus {
27*88ea6989SSamuel Holland		compatible = "regulator-fixed";
28*88ea6989SSamuel Holland		regulator-name = "usbvbus";
29*88ea6989SSamuel Holland		regulator-min-microvolt = <5000000>;
30*88ea6989SSamuel Holland		regulator-max-microvolt = <5000000>;
31*88ea6989SSamuel Holland		gpio = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */
32*88ea6989SSamuel Holland		enable-active-high;
33*88ea6989SSamuel Holland		vin-supply = <&reg_vcc>;
34*88ea6989SSamuel Holland	};
35*88ea6989SSamuel Holland
36*88ea6989SSamuel Holland	/*
37*88ea6989SSamuel Holland	 * This regulator is PWM-controlled, but the PWM controller is not
38*88ea6989SSamuel Holland	 * yet supported, so fix the regulator to its default voltage.
39*88ea6989SSamuel Holland	 */
40*88ea6989SSamuel Holland	reg_vdd_cpu: vdd-cpu {
41*88ea6989SSamuel Holland		compatible = "regulator-fixed";
42*88ea6989SSamuel Holland		regulator-name = "vdd-cpu";
43*88ea6989SSamuel Holland		regulator-min-microvolt = <1100000>;
44*88ea6989SSamuel Holland		regulator-max-microvolt = <1100000>;
45*88ea6989SSamuel Holland		vin-supply = <&reg_vcc>;
46*88ea6989SSamuel Holland	};
47*88ea6989SSamuel Holland
48*88ea6989SSamuel Holland	wifi_pwrseq: wifi-pwrseq {
49*88ea6989SSamuel Holland		compatible = "mmc-pwrseq-simple";
50*88ea6989SSamuel Holland		reset-gpios = <&pio 6 12 GPIO_ACTIVE_LOW>; /* PG12 */
51*88ea6989SSamuel Holland	};
52*88ea6989SSamuel Holland};
53*88ea6989SSamuel Holland
54*88ea6989SSamuel Holland&cpu0 {
55*88ea6989SSamuel Holland	cpu-supply = <&reg_vdd_cpu>;
56*88ea6989SSamuel Holland};
57*88ea6989SSamuel Holland
58*88ea6989SSamuel Holland&dcxo {
59*88ea6989SSamuel Holland	clock-frequency = <24000000>;
60*88ea6989SSamuel Holland};
61*88ea6989SSamuel Holland
62*88ea6989SSamuel Holland&ehci0 {
63*88ea6989SSamuel Holland	status = "okay";
64*88ea6989SSamuel Holland};
65*88ea6989SSamuel Holland
66*88ea6989SSamuel Holland&ehci1 {
67*88ea6989SSamuel Holland	status = "okay";
68*88ea6989SSamuel Holland};
69*88ea6989SSamuel Holland
70*88ea6989SSamuel Holland&emac {
71*88ea6989SSamuel Holland	pinctrl-0 = <&rgmii_pe_pins>;
72*88ea6989SSamuel Holland	pinctrl-names = "default";
73*88ea6989SSamuel Holland	phy-handle = <&ext_rgmii_phy>;
74*88ea6989SSamuel Holland	phy-mode = "rgmii-id";
75*88ea6989SSamuel Holland	phy-supply = <&reg_vcc_3v3>;
76*88ea6989SSamuel Holland	status = "okay";
77*88ea6989SSamuel Holland};
78*88ea6989SSamuel Holland
79*88ea6989SSamuel Holland&i2c2 {
80*88ea6989SSamuel Holland	pinctrl-0 = <&i2c2_pb0_pins>;
81*88ea6989SSamuel Holland	pinctrl-names = "default";
82*88ea6989SSamuel Holland	status = "okay";
83*88ea6989SSamuel Holland
84*88ea6989SSamuel Holland	pcf8574a: gpio@38 {
85*88ea6989SSamuel Holland		compatible = "nxp,pcf8574a";
86*88ea6989SSamuel Holland		reg = <0x38>;
87*88ea6989SSamuel Holland		interrupt-parent = <&pio>;
88*88ea6989SSamuel Holland		interrupts = <1 2 IRQ_TYPE_LEVEL_LOW>; /* PB2 */
89*88ea6989SSamuel Holland		interrupt-controller;
90*88ea6989SSamuel Holland		gpio-controller;
91*88ea6989SSamuel Holland		#gpio-cells = <2>;
92*88ea6989SSamuel Holland		#interrupt-cells = <2>;
93*88ea6989SSamuel Holland	};
94*88ea6989SSamuel Holland};
95*88ea6989SSamuel Holland
96*88ea6989SSamuel Holland&mdio {
97*88ea6989SSamuel Holland	ext_rgmii_phy: ethernet-phy@1 {
98*88ea6989SSamuel Holland		compatible = "ethernet-phy-ieee802.3-c22";
99*88ea6989SSamuel Holland		reg = <1>;
100*88ea6989SSamuel Holland	};
101*88ea6989SSamuel Holland};
102*88ea6989SSamuel Holland
103*88ea6989SSamuel Holland&mmc0 {
104*88ea6989SSamuel Holland	bus-width = <4>;
105*88ea6989SSamuel Holland	cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
106*88ea6989SSamuel Holland	disable-wp;
107*88ea6989SSamuel Holland	vmmc-supply = <&reg_vcc_3v3>;
108*88ea6989SSamuel Holland	vqmmc-supply = <&reg_vcc_3v3>;
109*88ea6989SSamuel Holland	pinctrl-0 = <&mmc0_pins>;
110*88ea6989SSamuel Holland	pinctrl-names = "default";
111*88ea6989SSamuel Holland	status = "okay";
112*88ea6989SSamuel Holland};
113*88ea6989SSamuel Holland
114*88ea6989SSamuel Holland&mmc1 {
115*88ea6989SSamuel Holland	bus-width = <4>;
116*88ea6989SSamuel Holland	mmc-pwrseq = <&wifi_pwrseq>;
117*88ea6989SSamuel Holland	non-removable;
118*88ea6989SSamuel Holland	vmmc-supply = <&reg_vcc_3v3>;
119*88ea6989SSamuel Holland	vqmmc-supply = <&reg_vcc_3v3>;
120*88ea6989SSamuel Holland	pinctrl-0 = <&mmc1_pins>;
121*88ea6989SSamuel Holland	pinctrl-names = "default";
122*88ea6989SSamuel Holland	status = "okay";
123*88ea6989SSamuel Holland
124*88ea6989SSamuel Holland	xr829: wifi@1 {
125*88ea6989SSamuel Holland		reg = <1>;
126*88ea6989SSamuel Holland		interrupt-parent = <&pio>;
127*88ea6989SSamuel Holland		interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 */
128*88ea6989SSamuel Holland		interrupt-names = "host-wake";
129*88ea6989SSamuel Holland	};
130*88ea6989SSamuel Holland};
131*88ea6989SSamuel Holland
132*88ea6989SSamuel Holland&ohci0 {
133*88ea6989SSamuel Holland	status = "okay";
134*88ea6989SSamuel Holland};
135*88ea6989SSamuel Holland
136*88ea6989SSamuel Holland&ohci1 {
137*88ea6989SSamuel Holland	status = "okay";
138*88ea6989SSamuel Holland};
139*88ea6989SSamuel Holland
140*88ea6989SSamuel Holland&uart0 {
141*88ea6989SSamuel Holland	pinctrl-0 = <&uart0_pb8_pins>;
142*88ea6989SSamuel Holland	pinctrl-names = "default";
143*88ea6989SSamuel Holland	status = "okay";
144*88ea6989SSamuel Holland};
145*88ea6989SSamuel Holland
146*88ea6989SSamuel Holland&uart1 {
147*88ea6989SSamuel Holland	uart-has-rtscts;
148*88ea6989SSamuel Holland	pinctrl-0 = <&uart1_pg6_pins>, <&uart1_pg8_rts_cts_pins>;
149*88ea6989SSamuel Holland	pinctrl-names = "default";
150*88ea6989SSamuel Holland	status = "okay";
151*88ea6989SSamuel Holland
152*88ea6989SSamuel Holland	/* XR829 bluetooth is connected here */
153*88ea6989SSamuel Holland};
154*88ea6989SSamuel Holland
155*88ea6989SSamuel Holland&usb_otg {
156*88ea6989SSamuel Holland	dr_mode = "otg";
157*88ea6989SSamuel Holland	status = "okay";
158*88ea6989SSamuel Holland};
159*88ea6989SSamuel Holland
160*88ea6989SSamuel Holland&usbphy {
161*88ea6989SSamuel Holland	usb0_id_det-gpios = <&pio 3 21 GPIO_ACTIVE_HIGH>; /* PD21 */
162*88ea6989SSamuel Holland	usb0_vbus_det-gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; /* PD20 */
163*88ea6989SSamuel Holland	usb0_vbus-supply = <&reg_usbvbus>;
164*88ea6989SSamuel Holland	usb1_vbus-supply = <&reg_vcc>;
165*88ea6989SSamuel Holland	status = "okay";
166*88ea6989SSamuel Holland};
167