Merge tag 'usb-5.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[linux/fpc-iii.git] / arch / arm / boot / dts / sun8i-h2-plus-bananapi-m2-zero.dts
blobe76d56a3df9cbcbf46ddb92ead2bc5510fb16425
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  */
9 /dts-v1/;
10 #include "sun8i-h3.dtsi"
11 #include "sunxi-common-regulators.dtsi"
13 #include <dt-bindings/gpio/gpio.h>
14 #include <dt-bindings/input/input.h>
16 / {
17         model = "Banana Pi BPI-M2-Zero";
18         compatible = "sinovoip,bpi-m2-zero", "allwinner,sun8i-h2-plus";
20         aliases {
21                 serial0 = &uart0;
22                 serial1 = &uart1;
23         };
25         chosen {
26                 stdout-path = "serial0:115200n8";
27         };
29         leds {
30                 compatible = "gpio-leds";
32                 pwr_led {
33                         label = "bananapi-m2-zero:red:pwr";
34                         gpios = <&r_pio 0 10 GPIO_ACTIVE_LOW>; /* PL10 */
35                         default-state = "on";
36                 };
37         };
39         gpio_keys {
40                 compatible = "gpio-keys";
42                 sw4 {
43                         label = "power";
44                         linux,code = <BTN_0>;
45                         gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>;
46                 };
47         };
49         reg_vdd_cpux: vdd-cpux-regulator {
50                 compatible = "regulator-gpio";
51                 regulator-name = "vdd-cpux";
52                 regulator-type = "voltage";
53                 regulator-boot-on;
54                 regulator-always-on;
55                 regulator-min-microvolt = <1100000>;
56                 regulator-max-microvolt = <1300000>;
57                 regulator-ramp-delay = <50>; /* 4ms */
59                 gpios = <&r_pio 0 1 GPIO_ACTIVE_HIGH>; /* PL1 */
60                 enable-active-high;
61                 gpios-states = <0x1>;
62                 states = <1100000 0>, <1300000 1>;
63         };
65         wifi_pwrseq: wifi_pwrseq {
66                 compatible = "mmc-pwrseq-simple";
67                 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
68                 clocks = <&rtc 1>;
69                 clock-names = "ext_clock";
70         };
73 &cpu0 {
74         cpu-supply = <&reg_vdd_cpux>;
77 &ehci0 {
78         status = "okay";
81 &mmc0 {
82         vmmc-supply = <&reg_vcc3v3>;
83         bus-width = <4>;
84         /*
85          * On the production batch of this board the card detect GPIO is
86          * high active (card inserted), although on the early samples it's
87          * low active.
88          */
89         cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
90         status = "okay";
93 &mmc1 {
94         vmmc-supply = <&reg_vcc3v3>;
95         vqmmc-supply = <&reg_vcc3v3>;
96         mmc-pwrseq = <&wifi_pwrseq>;
97         bus-width = <4>;
98         non-removable;
99         status = "okay";
101         brcmf: wifi@1 {
102                 reg = <1>;
103                 compatible = "brcm,bcm4329-fmac";
104                 interrupt-parent = <&pio>;
105                 interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; /* PG10 / EINT10 */
106                 interrupt-names = "host-wake";
107         };
110 &ohci0 {
111         status = "okay";
114 &uart0 {
115         pinctrl-names = "default";
116         pinctrl-0 = <&uart0_pa_pins>;
117         status = "okay";
120 &uart1 {
121         pinctrl-names = "default";
122         pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
123         uart-has-rtscts;
124         status = "okay";
126         bluetooth {
127                 compatible = "brcm,bcm43438-bt";
128                 clocks = <&rtc 1>;
129                 clock-names = "lpo";
130                 vbat-supply = <&reg_vcc3v3>;
131                 vddio-supply = <&reg_vcc3v3>;
132                 device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
133                 host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
134                 shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
135         };
139 &pio {
140         gpio-line-names =
141                 /* PA */
142                 "CON2-P13", "CON2-P11", "CON2-P22", "CON2-P15",
143                         "CON3-P03", "CON3-P02", "CON2-P07", "CON2-P29",
144                 "CON2-P31", "CON2-P33", "CON2-P35", "CON2-P05",
145                         "CON2-P03", "CON2-P08", "CON2-P10", "CON2-P16",
146                 "CON2-P12", "CON2-P37", "CON2-P28", "CON2-P27",
147                         "CON2-P40", "CON2-P38", "", "",
148                 "", "", "", "", "", "", "", "",
150                 /* PB */
151                 "", "", "", "", "", "", "", "",
152                 "", "", "", "", "", "", "", "",
153                 "", "", "", "", "", "", "", "",
154                 "", "", "", "", "", "", "", "",
156                 /* PC */
157                 "CON2-P19", "CON2-P21", "CON2-P23", "CON2-P24",
158                         "CON2-P18", "", "", "CON2-P26",
159                 "", "", "", "", "", "", "", "",
160                 "", "", "", "", "", "", "", "",
161                 "", "", "", "", "", "", "", "",
163                 /* PD */
164                 "", "", "", "", "", "", "", "",
165                 "", "", "", "", "", "", "CSI-PWR-EN", "",
166                 "", "", "", "", "", "", "", "",
167                 "", "", "", "", "", "", "", "",
169                 /* PE */
170                 "CN3-P17", "CN3-P13", "CN3-P09", "CN3-P07",
171                         "CN3-P19", "CN3-P21", "CN3-P22", "CN3-P20",
172                 "CN3-P18", "CN3-P16", "CN3-P14", "CN3-P12",
173                         "CN3-P05", "CN3-P03", "CN3-P06", "CN3-P08",
174                 "", "", "", "", "", "", "", "",
175                 "", "", "", "", "", "", "", "",
177                 /* PF */
178                 "SDC0-D1", "SDC0-D0", "SDC0-CLK", "SDC0-CMD", "SDC0-D3",
179                         "SDC0-D2", "SDC0-DET", "",
180                 "", "", "", "", "", "", "", "",
181                 "", "", "", "", "", "", "", "",
182                 "", "", "", "", "", "", "", "",
184                 /* PG */
185                 "WL-SDIO-CLK", "WL-SDIO-CMD", "WL-SDIO-D0", "WL-SDIO-D1",
186                         "WL-SDIO-D2", "WL-SDIO-D3", "BT-UART-TX", "BT-UART-RX",
187                 "BT-UART-RTS", "BT-UART-CTS", "WL-WAKE-AP", "BT-WAKE-AP",
188                         "BT-RST-N", "AP-WAKE-BT", "", "",
189                 "", "", "", "", "", "", "", "",
190                 "", "", "", "", "", "", "", "";
193 &r_pio {
194         gpio-line-names =
195                 /* PL */
196                 "", "CPUX-SET", "CON2-P32", "POWER-KEY", "CON2-P36",
197                         "VCC-IO-EN", "USB0-ID", "WL-PWR-EN",
198                 "PWR-STB", "PWR-DRAM", "PWR-LED", "IR-RX", "", "", "", "",
199                 "", "", "", "", "", "", "", "",
200                 "", "", "", "", "", "", "", "";
203 &usb_otg {
204         dr_mode = "otg";
205         status = "okay";
208 &usbphy {
209         usb0_id_det-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */
210         /*
211          * There're two micro-USB connectors, one is power-only and another is
212          * OTG. The Vbus of these two connectors are connected together, so
213          * the external USB device will be powered just by the power input
214          * from the power-only USB port.
215          */
216         status = "okay";