On Mon 18 May 11:10 PDT 2020, Jonathan McDowell wrote: > This patch adds a DTS file for the MikroTik RouterBoard 3011, which is a > 1U rackmount router based on the IPQ8064, supporting the serial UART, > dual QCA8337 Gigabit ethernet switches, boot loader NOR and user LED > device. > > Signed-off-by: Jonathan McDowell <noodles@xxxxxxxx> Patch 2 and 3 picked up for 5.9 Thanks, Bjorn > --- > arch/arm/boot/dts/Makefile | 1 + > arch/arm/boot/dts/qcom-ipq8064-rb3011.dts | 308 ++++++++++++++++++++++ > 2 files changed, 309 insertions(+) > create mode 100644 arch/arm/boot/dts/qcom-ipq8064-rb3011.dts > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index e8dd99201397..e697a4bd7426 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -884,6 +884,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \ > qcom-ipq4019-ap.dk07.1-c1.dtb \ > qcom-ipq4019-ap.dk07.1-c2.dtb \ > qcom-ipq8064-ap148.dtb \ > + qcom-ipq8064-rb3011.dtb \ > qcom-msm8660-surf.dtb \ > qcom-msm8960-cdp.dtb \ > qcom-msm8974-fairphone-fp2.dtb \ > diff --git a/arch/arm/boot/dts/qcom-ipq8064-rb3011.dts b/arch/arm/boot/dts/qcom-ipq8064-rb3011.dts > new file mode 100644 > index 000000000000..282b89ce3d45 > --- /dev/null > +++ b/arch/arm/boot/dts/qcom-ipq8064-rb3011.dts > @@ -0,0 +1,308 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include "qcom-ipq8064.dtsi" > +#include <dt-bindings/input/input.h> > + > +/ { > + model = "MikroTik RB3011UiAS-RM"; > + compatible = "mikrotik,rb3011"; > + > + 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"; > + }; > + > + memory@0 { > + 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"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + 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"; > + }; > + > + port@2 { > + reg = <2>; > + label = "sw2"; > + }; > + > + port@3 { > + reg = <3>; > + label = "sw3"; > + }; > + > + port@4 { > + reg = <4>; > + label = "sw4"; > + }; > + > + port@5 { > + reg = <5>; > + label = "sw5"; > + }; > + }; > + }; > + }; > + > + 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"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + 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"; > + }; > + > + port@2 { > + reg = <2>; > + label = "sw7"; > + }; > + > + port@3 { > + reg = <3>; > + label = "sw8"; > + }; > + > + port@4 { > + reg = <4>; > + label = "sw9"; > + }; > + > + port@5 { > + reg = <5>; > + label = "sw10"; > + }; > + }; > + }; > + }; > + > + soc { > + gsbi5: gsbi@1a200000 { > + qcom,mode = <GSBI_PROT_SPI>; > + status = "okay"; > + > + spi4: spi@1a280000 { > + status = "okay"; > + spi-max-frequency = <50000000>; > + > + pinctrl-0 = <&spi_pins>; > + pinctrl-names = "default"; > + > + cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>; > + > + norflash: s25fl016k@0 { > + compatible = "jedec,spi-nor"; > + #address-cells = <1>; > + #size-cells = <1>; > + spi-max-frequency = <50000000>; > + reg = <0>; > + > + partition@0 { > + label = "RouterBoot"; > + reg = <0x0 0x40000>; > + }; > + }; > + }; > + }; > + > + gpio_keys { > + compatible = "gpio-keys"; > + pinctrl-0 = <&buttons_pins>; > + pinctrl-names = "default"; > + > + button@1 { > + 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@7 { > + label = "rb3011:green:user"; > + gpios = <&qcom_pinmux 33 GPIO_ACTIVE_HIGH>; > + default-state = "off"; > + }; > + }; > + > + }; > +}; > + > +&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"; > +}; > + > +&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; > + }; > + }; > + > + mdio0_pins: mdio0_pins { > + mux { > + pins = "gpio0", "gpio1"; > + function = "gpio"; > + drive-strength = <8>; > + 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; > + }; > + }; > +}; > -- > 2.20.1 >