From b7a8a5454226f34256c5d76480dda5abb1308395 Mon Sep 17 00:00:00 2001 From: Christopher Hill Date: Mon, 25 May 2020 21:10:00 -0400 Subject: ath79: add support for MikroTik RouterBOARD 493G (rb4xx series) This patch adds support for the MikroTik RouterBOARD RB493G, ported from the ar71xx target. See https://routerboard.com/RB493G for details Specification: - SoC Qualcomm Atheros AR7161 - RAM: 256 MiB - Storage: 128MiB NAND - Ethernet: 9x 1000/100/10 Mbps - USB 1x 2.0 / 1.0 type A - PCIe: 3x Mini slot - MicroSD slot Working: - Board/system detection - Ethernet - SPI - NAND - LEDs - USB - Sysupgrade Enabled (but untested due to lack of hardware): - PCIe - ath79_pci_irq struct has the slot/pin/IRQ mappings if needed Installation methods: - tftp boot initramfs image, scp then flash via "sysupgrade -n" - nand boot existing OpenWrt, scp then flash via "sysupgrade -n" Notes: - initramfs image will not work if uncompressed image size over ~8.5Mb - The "rb4xx" drivers have been enabled Signed-off-by: Christopher Hill --- .../ath79/dts/ar7100_mikrotik_routerboard-4xx.dtsi | 180 +++++++++++++++++++++ .../ath79/dts/ar7161_mikrotik_routerboard-493g.dts | 53 ++++++ 2 files changed, 233 insertions(+) create mode 100644 target/linux/ath79/dts/ar7100_mikrotik_routerboard-4xx.dtsi create mode 100644 target/linux/ath79/dts/ar7161_mikrotik_routerboard-493g.dts (limited to 'target/linux/ath79/dts') diff --git a/target/linux/ath79/dts/ar7100_mikrotik_routerboard-4xx.dtsi b/target/linux/ath79/dts/ar7100_mikrotik_routerboard-4xx.dtsi new file mode 100644 index 0000000000..e957a51e27 --- /dev/null +++ b/target/linux/ath79/dts/ar7100_mikrotik_routerboard-4xx.dtsi @@ -0,0 +1,180 @@ +// SPDX-License-Identifier: GPL-1.0-or-later OR MIT + +#include +#include + +#include "ar7100.dtsi" + +/ { + aliases { + led-boot = &led_user; + led-failsafe = &led_user; + led-running = &led_user; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + leds { + compatible = "gpio-leds"; + + led_user: user { + label = "mikrotik:yellow:user"; + gpios = <&gpio 4 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + + led1 { + label = "mikrotik:green:led1"; + gpios = <&cpld_gpio 0 GPIO_ACTIVE_LOW>; + }; + + led2 { + label = "mikrotik:green:led2"; + gpios = <&cpld_gpio 2 GPIO_ACTIVE_LOW>; + }; + + led3 { + label = "mikrotik:green:led3"; + gpios = <&cpld_gpio 1 GPIO_ACTIVE_LOW>; + }; + + led4 { + label = "mikrotik:green:led4"; + gpios = <&cpld_gpio 3 GPIO_ACTIVE_LOW>; + }; + + led5 { + label = "mikrotik:green:led5"; + gpios = <&cpld_gpio 8 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&gpio { + ngpios = <31>; + gpio-line-names = + "", "", "", "", "LED", "RDY", "", "MDC", + "MDIO", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", "", + "", "", "", "", "", "", "", ""; +}; + +&pcie0 { + status = "okay"; +}; + +&spi { + status = "okay"; + + compatible = "mikrotik,rb4xx-spi"; + + flash@0 { + compatible = "pm25lv512", "jedec,spi-nor"; + + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "mikrotik,routerboot-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "routerboot1"; + reg = <0x0 0x0>; + read-only; + }; + + hard_config { + label = "hard_config"; + read-only; + }; + + bios { + label = "bios"; + size = <0x1000>; + read-only; + }; + + routerboot2 { + label = "routerboot2"; + read-only; + }; + + soft_config { + label = "soft_config"; + }; + }; + }; + + cpld@1 { + compatible = "mikrotik,rb4xx-cpld"; + + reg = <1>; + spi-max-frequency = <25000000>; + + cpld_gpio: gpio { + compatible = "mikrotik,rb4xx-gpio"; + + base = <32>; + + gpio-controller; + #gpio-cells = <2>; + gpio-line-names = + "LED1", "LED2", "LED3", "LED4", + "FAN", "ALE", "CLE", "nCE", + "LED5"; + }; + + nand { + compatible = "mikrotik,rb4xx-nand"; + + gpios = <&cpld_gpio 5 GPIO_ACTIVE_HIGH>, // ALE + <&cpld_gpio 6 GPIO_ACTIVE_HIGH>, // CLE + <&cpld_gpio 7 GPIO_ACTIVE_HIGH>, // nCE + <&gpio 5 GPIO_ACTIVE_HIGH>; // RDY + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "booter"; + reg = <0x0000000 0x0040000>; + read-only; + }; + + partition@40000 { + label = "kernel"; + reg = <0x0040000 0x0800000>; + }; + + partition@840000 { + label = "ubi"; + reg = <0x0840000 0x77c0000>; + }; + }; + }; + }; +}; + +ð0 { + status = "okay"; + + phy-handle = <&phy0>; +}; + +&mdio0 { + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <0>; + }; +}; diff --git a/target/linux/ath79/dts/ar7161_mikrotik_routerboard-493g.dts b/target/linux/ath79/dts/ar7161_mikrotik_routerboard-493g.dts new file mode 100644 index 0000000000..4a5deb8a44 --- /dev/null +++ b/target/linux/ath79/dts/ar7161_mikrotik_routerboard-493g.dts @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-1.0-or-later OR MIT +/dts-v1/; + +#include "ar7100_mikrotik_routerboard-4xx.dtsi" + +/ { + compatible = "mikrotik,routerboard-493g", "qca,ar7161"; + model = "MikroTik RouterBOARD 493G"; + + aliases { + mdio-gpio0 = &mdio_gpio0; + }; +}; + +&spi { + sdcard: mmc-slot@2 { + compatible = "mmc-spi-slot"; + + reg = <2>; + spi-max-frequency = <25000000>; + }; +}; + +ð1 { + status = "okay"; + + phy-handle = <&gpio_phy0>; + + mdio_gpio0: mdio-gpio { + compatible = "virtual,mdio-gpio"; + #address-cells = <1>; + #size-cells = <0>; + + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>, // MDC + <&gpio 8 GPIO_ACTIVE_HIGH>; // MDIO + + gpio_phy0: ethernet-phy@0 { + reg = <0>; + }; + }; +}; + +&usb_phy { + status = "okay"; +}; + +&usb2 { + status = "okay"; +}; + +&usb1 { + status = "okay"; +}; -- cgit v1.2.3