// SPDX-License-Identifier: GPL-2.0
#include "qcom-ipq8064.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
model = "MikroTik RB3011UiAS-RM";
compatible = "mikrotik,rb3011", "qcom,ipq8064";
aliases {
serial0 = &gsbi7_serial;
ethernet0 = &gmac0;
ethernet1 = &gmac3;
mdio-gpio0 = &mdio0;
mdio-gpio1 = &mdio1;
};
chosen {
bootargs = "loglevel=8 console=ttyMSM0,115200";
stdout-path = "serial0:115200n8";
};
gpio-keys {
compatible = "gpio-keys";
pinctrl-0 = <&buttons_pins>;
pinctrl-names = "default";
button {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&qcom_pinmux 66 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
debounce-interval = <60>;
};
};
leds {
compatible = "gpio-leds";
pinctrl-0 = <&leds_pins>;
pinctrl-names = "default";
led-0 {
label = "rb3011:green:user";
color = <LED_COLOR_ID_GREEN>;
gpios = <&qcom_pinmux 33 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
};
memory@42000000 {
reg = <0x42000000 0x3e000000>;
device_type = "memory";
};
mdio0: mdio-0 {
status = "okay";
compatible = "virtual,mdio-gpio";
gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH>,
<&qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&mdio0_pins>;
pinctrl-names = "default";
switch0: switch@10 {
compatible = "qca,qca8337";
dsa,member = <0 0>;
pinctrl-0 = <&sw0_reset_pin>;
pinctrl-names = "default";
reset-gpios = <&qcom_pinmux 16 GPIO_ACTIVE_LOW>;
reg = <0x10>;
ports {
#address-cells = <1>;
#size-cells = <0>;
switch0cpu: port@0 {
reg = <0>;
label = "cpu";
ethernet = <&gmac0>;
phy-mode = "rgmii-id";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@1 {
reg = <1>;
label = "sw1";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@2 {
reg = <2>;
label = "sw2";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@3 {
reg = <3>;
label = "sw3";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@4 {
reg = <4>;
label = "sw4";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@5 {
reg = <5>;
label = "sw5";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
};
};
};
mdio1: mdio-1 {
status = "okay";
compatible = "virtual,mdio-gpio";
gpios = <&qcom_pinmux 11 GPIO_ACTIVE_HIGH>,
<&qcom_pinmux 10 GPIO_ACTIVE_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&mdio1_pins>;
pinctrl-names = "default";
switch1: switch@14 {
compatible = "qca,qca8337";
dsa,member = <1 0>;
pinctrl-0 = <&sw1_reset_pin>;
pinctrl-names = "default";
reset-gpios = <&qcom_pinmux 17 GPIO_ACTIVE_LOW>;
reg = <0x10>;
ports {
#address-cells = <1>;
#size-cells = <0>;
switch1cpu: port@0 {
reg = <0>;
label = "cpu";
ethernet = <&gmac3>;
phy-mode = "sgmii";
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@1 {
reg = <1>;
label = "sw6";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@2 {
reg = <2>;
label = "sw7";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@3 {
reg = <3>;
label = "sw8";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@4 {
reg = <4>;
label = "sw9";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
port@5 {
reg = <5>;
label = "sw10";
leds {
#address-cells = <1>;
#size-cells = <0>;
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};
};
};
};
};
soc {
gsbi5: gsbi@1a200000 {
qcom,mode = <GSBI_PROT_SPI>;
status = "okay";
spi4: spi@1a280000 {
status = "okay";
pinctrl-0 = <&spi_pins>;
pinctrl-names = "default";
cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
norflash: flash@0 {
compatible = "jedec,spi-nor";
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
reg = <0>;
partition@0 {
label = "RouterBoot";
reg = <0x0 0x40000>;
};
};
};
};
};
};
&adm_dma {
status = "okay";
};
&gmac0 {
status = "okay";
phy-mode = "rgmii";
qcom,id = <0>;
phy-handle = <&switch0cpu>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&gmac3 {
status = "okay";
phy-mode = "sgmii";
qcom,id = <3>;
phy-handle = <&switch1cpu>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&gsbi7 {
status = "okay";
qcom,mode = <GSBI_PROT_I2C_UART>;
};
&gsbi7_serial {
status = "okay";
};
&hs_phy_1 {
status = "okay";
};
&nand {
status = "okay";
nand@0 {
reg = <0>;
nand-ecc-strength = <4>;
nand-bus-width = <8>;
nand-ecc-step-size = <512>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot@0 {
label = "RouterBoard NAND 1 Boot";
reg = <0x0000000 0x0800000>;
};
main@800000 {
label = "RouterBoard NAND 1 Main";
reg = <0x0800000 0x7800000>;
};
};
};
};
&qcom_pinmux {
buttons_pins: buttons_pins {
mux {
pins = "gpio66";
drive-strength = <16>;
bias-disable;
};
};
leds_pins: leds_pins {
mux {
pins = "gpio33";
drive-strength = <16>;
bias-disable;
};
};
mdio1_pins: mdio1_pins {
mux {
pins = "gpio10", "gpio11";
function = "gpio";
drive-strength = <8>;
bias-disable;
};
};
sw0_reset_pin: sw0_reset_pin {
mux {
pins = "gpio16";
drive-strength = <16>;
function = "gpio";
bias-disable;
input-disable;
};
};
sw1_reset_pin: sw1_reset_pin {
mux {
pins = "gpio17";
drive-strength = <16>;
function = "gpio";
bias-disable;
input-disable;
};
};
usb1_pwr_en_pins: usb1_pwr_en_pins {
mux {
pins = "gpio4";
function = "gpio";
drive-strength = <16>;
bias-disable;
output-high;
};
};
};
&ss_phy_1 {
status = "okay";
};
&usb3_1 {
pinctrl-0 = <&usb1_pwr_en_pins>;
pinctrl-names = "default";
status = "okay";
};