1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Copyright (C) 2021 MediaTek Inc.
4 * Authors: Sam.Shih <sam.shih@mediatek.com>
5 * Frank Wunderlich <frank-w@public-files.de>
6 * Daniel Golle <daniel@makrotopia.org>
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/input.h>
12 #include <dt-bindings/leds/common.h>
13 #include <dt-bindings/pinctrl/mt65xx.h>
15 #include "mt7986a.dtsi"
18 model = "Bananapi BPI-R3";
19 chassis-type = "embedded";
20 compatible = "bananapi,bpi-r3", "mediatek,mt7986a";
29 stdout-path = "serial0:115200n8";
32 dcin: regulator-12vd {
33 compatible = "regulator-fixed";
34 regulator-name = "12vd";
35 regulator-min-microvolt = <12000000>;
36 regulator-max-microvolt = <12000000>;
42 compatible = "pwm-fan";
44 /* cooling level (0, 1, 2) - pwm inverted */
45 cooling-levels = <255 96 0>;
46 pwms = <&pwm 0 10000 0>;
51 compatible = "gpio-keys";
55 linux,code = <KEY_RESTART>;
56 gpios = <&pio 9 GPIO_ACTIVE_LOW>;
61 linux,code = <KEY_WPS_BUTTON>;
62 gpios = <&pio 10 GPIO_ACTIVE_LOW>;
66 /* i2c of the left SFP cage (wan) */
67 i2c_sfp1: i2c-gpio-0 {
68 compatible = "i2c-gpio";
69 sda-gpios = <&pio 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
70 scl-gpios = <&pio 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
71 i2c-gpio,delay-us = <2>;
76 /* i2c of the right SFP cage (lan) */
77 i2c_sfp2: i2c-gpio-1 {
78 compatible = "i2c-gpio";
79 sda-gpios = <&pio 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
80 scl-gpios = <&pio 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
81 i2c-gpio,delay-us = <2>;
87 compatible = "gpio-leds";
90 color = <LED_COLOR_ID_GREEN>;
91 function = LED_FUNCTION_POWER;
92 gpios = <&pio 69 GPIO_ACTIVE_HIGH>;
97 color = <LED_COLOR_ID_BLUE>;
98 function = LED_FUNCTION_STATUS;
99 gpios = <&pio 86 GPIO_ACTIVE_HIGH>;
100 default-state = "off";
104 reg_1p8v: regulator-1p8v {
105 compatible = "regulator-fixed";
106 regulator-name = "1.8vd";
107 regulator-min-microvolt = <1800000>;
108 regulator-max-microvolt = <1800000>;
111 vin-supply = <&dcin>;
114 reg_3p3v: regulator-3p3v {
115 compatible = "regulator-fixed";
116 regulator-name = "3.3vd";
117 regulator-min-microvolt = <3300000>;
118 regulator-max-microvolt = <3300000>;
121 vin-supply = <&dcin>;
124 /* left SFP cage (wan) */
126 compatible = "sff,sfp";
127 i2c-bus = <&i2c_sfp1>;
128 los-gpios = <&pio 46 GPIO_ACTIVE_HIGH>;
129 maximum-power-milliwatt = <3000>;
130 mod-def0-gpios = <&pio 49 GPIO_ACTIVE_LOW>;
131 tx-disable-gpios = <&pio 20 GPIO_ACTIVE_HIGH>;
132 tx-fault-gpios = <&pio 7 GPIO_ACTIVE_HIGH>;
135 /* right SFP cage (lan) */
137 compatible = "sff,sfp";
138 i2c-bus = <&i2c_sfp2>;
139 los-gpios = <&pio 31 GPIO_ACTIVE_HIGH>;
140 mod-def0-gpios = <&pio 47 GPIO_ACTIVE_LOW>;
141 maximum-power-milliwatt = <3000>;
142 tx-disable-gpios = <&pio 15 GPIO_ACTIVE_HIGH>;
143 tx-fault-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
150 /* active: set fan to cooling level 2 */
151 cooling-device = <&fan 2 2>;
152 trip = <&cpu_trip_active_high>;
156 /* active: set fan to cooling level 1 */
157 cooling-device = <&fan 1 1>;
158 trip = <&cpu_trip_active_med>;
162 /* active: set fan to cooling level 0 */
163 cooling-device = <&fan 0 0>;
164 trip = <&cpu_trip_active_low>;
177 compatible = "mediatek,eth-mac";
179 phy-mode = "2500base-x";
189 compatible = "mediatek,eth-mac";
191 phy-mode = "2500base-x";
193 managed = "in-band-status";
197 #address-cells = <1>;
204 compatible = "mediatek,mt7531";
206 interrupt-controller;
207 #interrupt-cells = <1>;
208 interrupt-parent = <&pio>;
209 interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
210 reset-gpios = <&pio 5 GPIO_ACTIVE_HIGH>;
215 pinctrl-names = "default", "state_uhs";
216 pinctrl-0 = <&mmc0_pins_default>;
217 pinctrl-1 = <&mmc0_pins_uhs>;
218 vmmc-supply = <®_3p3v>;
219 vqmmc-supply = <®_1p8v>;
223 pinctrl-names = "default";
224 pinctrl-0 = <&i2c_pins>;
229 pinctrl-names = "default";
230 pinctrl-0 = <&pcie_pins>;
246 mmc0_pins_default: mmc0-pins {
252 pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
253 "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
254 "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
256 drive-strength = <4>;
257 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
261 drive-strength = <6>;
262 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
266 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
270 drive-strength = <4>;
271 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
275 mmc0_pins_uhs: mmc0-uhs-pins {
281 pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
282 "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
283 "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
285 drive-strength = <4>;
286 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
290 drive-strength = <6>;
291 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
295 bias-pull-down = <MTK_PUPD_SET_R1R0_10>; /* pull-down 50K */
299 drive-strength = <4>;
300 bias-pull-up = <MTK_PUPD_SET_R1R0_01>; /* pull-up 10K */
304 pcie_pins: pcie-pins {
307 groups = "pcie_clk", "pcie_pereset";
314 groups = "pwm0", "pwm1_0";
318 spi_flash_pins: spi-flash-pins {
321 groups = "spi0", "spi0_wp_hold";
325 spic_pins: spic-pins {
332 uart1_pins: uart1-pins {
335 groups = "uart1_rx_tx";
339 uart2_pins: uart2-pins {
342 groups = "uart2_0_rx_tx";
346 wf_2g_5g_pins: wf-2g-5g-pins {
349 groups = "wf_2g", "wf_5g";
352 pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
353 "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
354 "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
355 "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
356 "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
357 "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
358 "WF1_TOP_CLK", "WF1_TOP_DATA";
359 drive-strength = <4>;
363 wf_dbdc_pins: wf-dbdc-pins {
369 pins = "WF0_HB1", "WF0_HB2", "WF0_HB3", "WF0_HB4",
370 "WF0_HB0", "WF0_HB0_B", "WF0_HB5", "WF0_HB6",
371 "WF0_HB7", "WF0_HB8", "WF0_HB9", "WF0_HB10",
372 "WF0_TOP_CLK", "WF0_TOP_DATA", "WF1_HB1",
373 "WF1_HB2", "WF1_HB3", "WF1_HB4", "WF1_HB0",
374 "WF1_HB5", "WF1_HB6", "WF1_HB7", "WF1_HB8",
375 "WF1_TOP_CLK", "WF1_TOP_DATA";
376 drive-strength = <4>;
380 wf_led_pins: wf-led-pins {
389 pinctrl-names = "default";
390 pinctrl-0 = <&pwm_pins>;
395 pinctrl-names = "default";
396 pinctrl-0 = <&spi_flash_pins>;
401 pinctrl-names = "default";
402 pinctrl-0 = <&spic_pins>;
412 #address-cells = <1>;
443 phy-mode = "2500base-x";
445 managed = "in-band-status";
452 phy-mode = "2500base-x";
472 pinctrl-names = "default";
473 pinctrl-0 = <&uart1_pins>;
478 pinctrl-names = "default";
479 pinctrl-0 = <&uart2_pins>;
493 pinctrl-names = "default", "dbdc";
494 pinctrl-0 = <&wf_2g_5g_pins>, <&wf_led_pins>;
495 pinctrl-1 = <&wf_dbdc_pins>, <&wf_led_pins>;