Message ID | 75390e66c9e6e36ddd42dc7f54cac28dfd7a24b9.1589824955.git.noodles@earth.li (mailing list archive) |
---|---|
State | Accepted |
Commit | 5de14398b6611af89a253f3fa13c20a92d53a513 |
Headers | show |
Series | Add initial support for MikroTik RB3011 | expand |
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@earth.li> 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 >
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; + }; + }; +};
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@earth.li> --- 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