1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
4 *
5 * Based on sun8i-h3-bananapi-m2-plus.dts, which is:
6 *   Copyright (C) 2016 Chen-Yu Tsai <wens@csie.org>
7 */
8
9/dts-v1/;
10#include "sun8i-h3.dtsi"
11#include "sunxi-common-regulators.dtsi"
12
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h>
15
16/ {
17	model = "Banana Pi BPI-M2-Zero";
18	compatible = "sinovoip,bpi-m2-zero", "allwinner,sun8i-h2-plus";
19
20	aliases {
21		serial0 = &uart0;
22		serial1 = &uart1;
23	};
24
25	chosen {
26		stdout-path = "serial0:115200n8";
27	};
28
29	leds {
30		compatible = "gpio-leds";
31		pinctrl-names = "default";
32
33		pwr_led {
34			label = "bananapi-m2-zero:red:pwr";
35			gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
36			default-state = "on";
37		};
38	};
39
40	gpio_keys {
41		compatible = "gpio-keys";
42		pinctrl-names = "default";
43
44		sw4 {
45			label = "power";
46			linux,code = <BTN_0>;
47			gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
48		};
49	};
50
51	wifi_pwrseq: wifi_pwrseq {
52		compatible = "mmc-pwrseq-simple";
53		pinctrl-names = "default";
54		reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
55	};
56};
57
58&ehci0 {
59	status = "okay";
60};
61
62&mmc0 {
63	vmmc-supply = <&reg_vcc3v3>;
64	bus-width = <4>;
65	/*
66	 * On the production batch of this board the card detect GPIO is
67	 * high active (card inserted), although on the early samples it's
68	 * low active.
69	 */
70	cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
71	status = "okay";
72};
73
74&mmc1 {
75	vmmc-supply = <&reg_vcc3v3>;
76	vqmmc-supply = <&reg_vcc3v3>;
77	mmc-pwrseq = <&wifi_pwrseq>;
78	bus-width = <4>;
79	non-removable;
80	status = "okay";
81
82	brcmf: wifi@1 {
83		reg = <1>;
84		compatible = "brcm,bcm4329-fmac";
85		interrupt-parent = <&pio>;
86		interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
87		interrupt-names = "host-wake";
88	};
89};
90
91&ohci0 {
92	status = "okay";
93};
94
95&uart0 {
96	pinctrl-names = "default";
97	pinctrl-0 = <&uart0_pins_a>;
98	status = "okay";
99};
100
101&uart1 {
102	pinctrl-names = "default";
103	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
104	status = "okay";
105};
106
107&usb_otg {
108	dr_mode = "otg";
109	status = "okay";
110};
111
112&usbphy {
113	usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
114	/*
115	 * There're two micro-USB connectors, one is power-only and another is
116	 * OTG. The Vbus of these two connectors are connected together, so
117	 * the external USB device will be powered just by the power input
118	 * from the power-only USB port.
119	 */
120	status = "okay";
121};
122