ARM: dts: qcom: Add MikroTik RB3011
authorJonathan McDowell <noodles@earth.li>
Mon, 18 May 2020 18:10:14 +0000 (19:10 +0100)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Fri, 29 May 2020 03:19:36 +0000 (20:19 -0700)
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>
Link: https://lore.kernel.org/r/75390e66c9e6e36ddd42dc7f54cac28dfd7a24b9.1589824955.git.noodles@earth.li
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/qcom-ipq8064-rb3011.dts [new file with mode: 0644]

index e8dd9920139733b7d7cc1e4d83ea63db1dfa9eab..e697a4bd7426b268270294cca355b8f09ae78f4a 100644 (file)
@@ -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 (file)
index 0000000..282b89c
--- /dev/null
@@ -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;
+               };
+       };
+};