Re: [PATCH 3/3] ARM: dts: qcom: Add MikroTik RB3011
From: Bjorn Andersson
Date: Thu May 28 2020 - 23:21:13 EST
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
>