Loading...
Note: File does not exist in v3.5.6.
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2021 MediaTek Inc.
4 * Authors: Frank Wunderlich <frank-w@public-files.de>
5 * Eric Woudstra <ericwouds@gmail.com>
6 * Tianling Shen <cnsztl@immortalwrt.org>
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/input.h>
13#include <dt-bindings/leds/common.h>
14#include <dt-bindings/pinctrl/mt65xx.h>
15
16#include "mt7986a.dtsi"
17
18/ {
19 model = "Bananapi BPI-R3 Mini";
20 chassis-type = "embedded";
21 compatible = "bananapi,bpi-r3mini", "mediatek,mt7986a";
22
23 aliases {
24 serial0 = &uart0;
25 ethernet0 = &gmac0;
26 ethernet1 = &gmac1;
27 };
28
29 chosen {
30 stdout-path = "serial0:115200n8";
31 };
32
33 dcin: regulator-12v {
34 compatible = "regulator-fixed";
35 regulator-name = "12vd";
36 regulator-min-microvolt = <12000000>;
37 regulator-max-microvolt = <12000000>;
38 regulator-boot-on;
39 regulator-always-on;
40 };
41
42 fan: pwm-fan {
43 compatible = "pwm-fan";
44 #cooling-cells = <2>;
45 /*
46 * The signal is inverted on this board and the PWM driver
47 * does not support polarity inversion.
48 */
49 /* cooling level (0, 1, 2) */
50 cooling-levels = <255 96 0>;
51 pwms = <&pwm 0 10000>;
52 };
53
54 reg_1p8v: regulator-1v8 {
55 compatible = "regulator-fixed";
56 regulator-name = "1.8vd";
57 regulator-min-microvolt = <1800000>;
58 regulator-max-microvolt = <1800000>;
59 regulator-boot-on;
60 regulator-always-on;
61 vin-supply = <&dcin>;
62 };
63
64 reg_3p3v: regulator-3v3 {
65 compatible = "regulator-fixed";
66 regulator-name = "3.3vd";
67 regulator-min-microvolt = <3300000>;
68 regulator-max-microvolt = <3300000>;
69 regulator-boot-on;
70 regulator-always-on;
71 vin-supply = <&dcin>;
72 };
73
74 usb_vbus: regulator-5v {
75 compatible = "regulator-fixed";
76 regulator-name = "usb_vbus";
77 regulator-min-microvolt = <5000000>;
78 regulator-max-microvolt = <5000000>;
79 gpios = <&pio 20 GPIO_ACTIVE_LOW>;
80 regulator-boot-on;
81 };
82
83 en8811_a: regulator-phy1 {
84 compatible = "regulator-fixed";
85 regulator-name = "phy1";
86 regulator-min-microvolt = <3300000>;
87 regulator-max-microvolt = <3300000>;
88 gpio = <&pio 16 GPIO_ACTIVE_LOW>;
89 regulator-always-on;
90 };
91
92 en8811_b: regulator-phy2 {
93 compatible = "regulator-fixed";
94 regulator-name = "phy2";
95 regulator-min-microvolt = <3300000>;
96 regulator-max-microvolt = <3300000>;
97 gpio = <&pio 17 GPIO_ACTIVE_LOW>;
98 regulator-always-on;
99 };
100
101 leds {
102 compatible = "gpio-leds";
103
104 green_led: led-0 {
105 color = <LED_COLOR_ID_GREEN>;
106 function = LED_FUNCTION_POWER;
107 gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
108 default-state = "on";
109 };
110 };
111
112 gpio-keys {
113 compatible = "gpio-keys";
114
115 reset-key {
116 label = "reset";
117 linux,code = <KEY_RESTART>;
118 gpios = <&pio 7 GPIO_ACTIVE_LOW>;
119 };
120 };
121
122};
123
124&cpu_thermal {
125 cooling-maps {
126 map0 {
127 /* active: set fan to cooling level 2 */
128 cooling-device = <&fan 2 2>;
129 trip = <&cpu_trip_active_high>;
130 };
131
132 map1 {
133 /* active: set fan to cooling level 1 */
134 cooling-device = <&fan 1 1>;
135 trip = <&cpu_trip_active_med>;
136 };
137
138 map2 {
139 /* active: set fan to cooling level 0 */
140 cooling-device = <&fan 0 0>;
141 trip = <&cpu_trip_active_low>;
142 };
143 };
144};
145
146&crypto {
147 status = "okay";
148};
149
150ð {
151 status = "okay";
152
153 gmac0: mac@0 {
154 compatible = "mediatek,eth-mac";
155 reg = <0>;
156 phy-mode = "2500base-x";
157 phy-handle = <&phy0>;
158 };
159
160 gmac1: mac@1 {
161 compatible = "mediatek,eth-mac";
162 reg = <1>;
163 phy-mode = "2500base-x";
164 phy-handle = <&phy1>;
165 };
166
167 mdio: mdio-bus {
168 #address-cells = <1>;
169 #size-cells = <0>;
170 };
171};
172
173&mmc0 {
174 pinctrl-names = "default", "state_uhs";
175 pinctrl-0 = <&mmc0_pins_default>;
176 pinctrl-1 = <&mmc0_pins_uhs>;
177 vmmc-supply = <®_3p3v>;
178 vqmmc-supply = <®_1p8v>;
179};
180
181
182&i2c0 {
183 pinctrl-names = "default";
184 pinctrl-0 = <&i2c_pins>;
185 status = "okay";
186
187 /* MAC Address EEPROM */
188 eeprom@50 {
189 compatible = "atmel,24c02";
190 reg = <0x50>;
191
192 address-width = <8>;
193 pagesize = <8>;
194 size = <256>;
195 };
196};
197
198&mdio {
199 phy0: ethernet-phy@14 {
200 reg = <14>;
201 interrupts-extended = <&pio 48 IRQ_TYPE_EDGE_FALLING>;
202 reset-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
203 reset-assert-us = <10000>;
204 reset-deassert-us = <20000>;
205 phy-mode = "2500base-x";
206 full-duplex;
207 pause;
208 airoha,pnswap-rx;
209
210 leds {
211 #address-cells = <1>;
212 #size-cells = <0>;
213
214 led@0 { /* en8811_a_gpio5 */
215 reg = <0>;
216 color = <LED_COLOR_ID_YELLOW>;
217 function = LED_FUNCTION_LAN;
218 function-enumerator = <1>;
219 default-state = "keep";
220 };
221 led@1 { /* en8811_a_gpio4 */
222 reg = <1>;
223 color = <LED_COLOR_ID_GREEN>;
224 function = LED_FUNCTION_LAN;
225 function-enumerator = <2>;
226 default-state = "keep";
227 };
228 };
229 };
230
231 phy1: ethernet-phy@15 {
232 reg = <15>;
233 interrupts-extended = <&pio 46 IRQ_TYPE_EDGE_FALLING>;
234 reset-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
235 reset-assert-us = <10000>;
236 reset-deassert-us = <20000>;
237 phy-mode = "2500base-x";
238 full-duplex;
239 pause;
240 airoha,pnswap-rx;
241
242 leds {
243 #address-cells = <1>;
244 #size-cells = <0>;
245
246 led@0 { /* en8811_b_gpio5 */
247 reg = <0>;
248 color = <LED_COLOR_ID_YELLOW>;
249 function = LED_FUNCTION_WAN;
250 function-enumerator = <1>;
251 default-state = "keep";
252 };
253 led@1 { /* en8811_b_gpio4 */
254 reg = <1>;
255 color = <LED_COLOR_ID_GREEN>;
256 function = LED_FUNCTION_WAN;
257 function-enumerator = <2>;
258 default-state = "keep";
259 };
260 };
261 };
262};
263
264&pcie {
265 pinctrl-names = "default";
266 pinctrl-0 = <&pcie_pins>;
267 status = "okay";
268};
269
270&pcie_phy {
271 status = "okay";
272};
273
274&pio {
275 i2c_pins: i2c-pins {
276 mux {
277 function = "i2c";
278 groups = "i2c";
279 };
280 };
281
282 mmc0_pins_default: mmc0-pins {
283 mux {
284 function = "emmc";
285 groups = "emmc_51";
286 };
287 conf-cmd-dat {
288 pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
289 "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
290 "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
291 input-enable;
292 drive-strength = <4>;
293 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
294 };
295 conf-clk {
296 pins = "EMMC_CK";
297 drive-strength = <6>;
298 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
299 };
300 conf-ds {
301 pins = "EMMC_DSL";
302 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
303 };
304 conf-rst {
305 pins = "EMMC_RSTB";
306 drive-strength = <4>;
307 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
308 };
309 };
310
311 mmc0_pins_uhs: mmc0-uhs-pins {
312 mux {
313 function = "emmc";
314 groups = "emmc_51";
315 };
316 conf-cmd-dat {
317 pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
318 "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
319 "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
320 input-enable;
321 drive-strength = <4>;
322 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
323 };
324 conf-clk {
325 pins = "EMMC_CK";
326 drive-strength = <6>;
327 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
328 };
329 conf-ds {
330 pins = "EMMC_DSL";
331 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
332 };
333 conf-rst {
334 pins = "EMMC_RSTB";
335 drive-strength = <4>;
336 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
337 };
338 };
339
340 pcie_pins: pcie-pins {
341 mux {
342 function = "pcie";
343 groups = "pcie_clk", "pcie_wake", "pcie_pereset";
344 };
345 };
346
347 pwm_pins: pwm-pins {
348 mux {
349 function = "pwm";
350 groups = "pwm0";
351 };
352 };
353
354 spi_flash_pins: spi-flash-pins {
355 mux {
356 function = "spi";
357 groups = "spi0", "spi0_wp_hold";
358 };
359 };
360
361 usb_ngff_pins: usb-ngff-pins {
362 ngff-gnss-off-conf {
363 pins = "GPIO_6";
364 drive-strength = <8>;
365 mediatek,pull-up-adv = <1>;
366 };
367 ngff-pe-rst-conf {
368 pins = "GPIO_7";
369 drive-strength = <8>;
370 mediatek,pull-up-adv = <1>;
371 };
372 ngff-wwan-off-conf {
373 pins = "GPIO_8";
374 drive-strength = <8>;
375 mediatek,pull-up-adv = <1>;
376 };
377 ngff-pwr-off-conf {
378 pins = "GPIO_9";
379 drive-strength = <8>;
380 mediatek,pull-up-adv = <1>;
381 };
382 ngff-rst-conf {
383 pins = "GPIO_10";
384 drive-strength = <8>;
385 mediatek,pull-up-adv = <1>;
386 };
387 ngff-coex-conf {
388 pins = "SPI1_CS";
389 drive-strength = <8>;
390 mediatek,pull-up-adv = <1>;
391 };
392 };
393
394 wf_2g_5g_pins: wf-2g-5g-pins {
395 mux {
396 function = "wifi";
397 groups = "wf_2g", "wf_5g";
398 };
399 conf {
400 pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
401 "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
402 "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
403 "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
404 "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
405 "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
406 "WF1_TOP_CLK", "WF1_TOP_DATA";
407 drive-strength = <4>;
408 };
409 };
410
411 wf_dbdc_pins: wf-dbdc-pins {
412 mux {
413 function = "wifi";
414 groups = "wf_dbdc";
415 };
416 conf {
417 pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
418 "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
419 "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
420 "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
421 "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
422 "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
423 "WF1_TOP_CLK", "WF1_TOP_DATA";
424 drive-strength = <4>;
425 };
426 };
427
428 wf_led_pins: wf-led-pins {
429 mux {
430 function = "led";
431 groups = "wifi_led";
432 };
433 };
434};
435
436&pwm {
437 pinctrl-names = "default";
438 pinctrl-0 = <&pwm_pins>;
439 status = "okay";
440};
441
442&spi0 {
443 pinctrl-names = "default";
444 pinctrl-0 = <&spi_flash_pins>;
445 status = "okay";
446
447 flash@0 {
448 compatible = "spi-nand";
449 #address-cells = <1>;
450 #size-cells = <1>;
451 reg = <0>;
452
453 spi-max-frequency = <20000000>;
454 spi-tx-bus-width = <4>;
455 spi-rx-bus-width = <4>;
456 };
457};
458
459&ssusb {
460 pinctrl-names = "default";
461 pinctrl-0 = <&usb_ngff_pins>;
462 vusb33-supply = <®_3p3v>;
463 vbus-supply = <&usb_vbus>;
464 status = "okay";
465};
466
467&trng {
468 status = "okay";
469};
470
471&uart0 {
472 status = "okay";
473};
474
475&usb_phy {
476 status = "okay";
477};
478
479&watchdog {
480 status = "okay";
481};
482
483&wifi {
484 status = "okay";
485 pinctrl-names = "default", "dbdc";
486 pinctrl-0 = <&wf_2g_5g_pins>, <&wf_led_pins>;
487 pinctrl-1 = <&wf_dbdc_pins>, <&wf_led_pins>;
488
489 led {
490 led-active-low;
491 };
492};
493