diff --git a/target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts new file mode 100644 index 00000000000000..8bec1adca40408 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-2011uias-2hnd.dts @@ -0,0 +1,317 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar9344.dtsi" + +#include +#include + +/ { + model = "MikroTik RouterBOARD 2011UiAS-2HnD"; + compatible = "mikrotik,routerboard-2011uias-2hnd", "qca,ar9344"; + + aliases { + led-boot = &led_user; + led-failsafe = &led_user; + led-running = &led_user; + led-upgrade = &led_user; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + poe-in { + label = "poe-in"; + linux,input-type = ; + linux,code = ; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + beeper { + compatible = "gpio-beeper"; + gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; + }; + + sfp_i2c: i2c-gpio { + compatible = "i2c-gpio"; + #address-cells = <1>; + #size-cells = <0>; + + pictrl-names = "default"; + pinctrl-0 = <&pmx_sfp_i2c>; + + sda-gpios = <&gpio 11 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + }; + + sfp { + /* + * SFP port attached throug AR8327 port 6 isn't functional for now + * The module detects sucessfully, but lacks some GPIO definitions, + * and proper SGMII configuration isn't known yet. + */ + compatible = "sff,sfp"; + i2c-bus = <&sfp_i2c>; + los-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; + maximum-power-milliwatt = <1000>; + }; + + leds { + compatible = "gpio-leds"; + + led-0 { + label = "green:wlan2g"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + }; +}; + +&ref { + clock-frequency = <25000000>; +}; + +&gpio { + nand-nce { + gpio-hog; + gpios = <14 GPIO_ACTIVE_LOW>; + output-high; + line-name = "nand-nce"; + }; +}; + +&nand { + status = "okay"; + + nand-ecc-mode = "soft"; + nand-ecc-step-size = <2048>; + qca,nand-swap-dma; + qca,nand-scan-fixup; + + 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 0x03c0000>; + }; + + partition@400000 { + label = "ubi"; + reg = <0x0400000 0x0>; + }; + }; +}; + +&pinmux { + pmx_sfp_i2c: pinmux_sfp_i2c { + pinctrl-single,bits = <0x8 0x00000000 0xff000000>; /* set GPIO11 back as GPIO */ + }; +}; + +&spi { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "mikrotik,routerboot-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "routerboot"; + reg = <0x0 0x0>; + read-only; + }; + + hard_config { + read-only; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_hardconfig_10: macaddr@10 { + compatible = "mac-base"; + reg = <0x10 0x6>; + #nvmem-cell-cells = <1>; + }; + }; + }; + + bios { + size = <0x1000>; + read-only; + }; + + soft_config { + }; + }; + }; +}; + +&mdio0 { + status = "okay"; + phy0: ethernet-phy@0 { + reg = <0>; + phy-mode = "rgmii"; + + qca,ar8327-initvals = < + 0x04 0x07c00000 /* PORT0 PAD MODE CTRL: Mac0_rgmii_en | Mac0_rgmii_txclk_delay_en | Mac0_rgmii_rxclk_delay_en | Mac0_rgmii_txclk_delay_sel3 | Mac0_rgmii_rxclk_delay_sel0 */ + 0x0c 0x00000080 /* PORT6 PAD MODE CTRL: Mac6_sgmii_en */ + 0x10 0x81000000 /* PWS_REG: POWER_ON_STRAP | LED_OPEN_EN_CSR */ + 0x50 0xc731c731 /* LED_CTRL0 */ + 0x54 0x00000000 /* LED_CTRL1 */ + 0x58 0x00008000 /* LED_CTRL2: 5A: disable LCD power */ + 0x5c 0x0230c300 /* LED_CTRL3: 5C: enable SFP power */ + 0x7c 0x0000007e /* PORT0_STATUS: DUPLEX_MODE_0 | RX_FLOW_EN_0 | TX_FLOW_EN_0 | RXMAC_EN_0 | TXMAC_EN_0 | SPEED_0 1000M */ + 0x94 0x0000007e /* PORT6_STATUS: DUPLEX_MODE_0 | RX_FLOW_EN_0 | TX_FLOW_EN_0 | RXMAC_EN_0 | TXMAC_EN_0 | SPEED_0 1000M */ + 0xe0 0xc70167d0 /* SGMII_CTRL */ + >; + + leds { + led@0 { + reg = <0>; + label = "green:eth1"; + qca,led_mode = <0>; + }; + + led@1 { + reg = <1>; + label = "green:eth6"; + qca,led_mode = <1>; + }; + + led@2 { + reg = <2>; + label = "backlight"; + linux,default-trigger = "backlight"; + // active-low; // causes the kernel to crash in driver + qca,led_mode = <1>; + }; + + led@3 { + reg = <3>; + label = "green:eth2"; + qca,led_mode = <0>; + }; + + led@4 { + reg = <4>; + label = "green:eth7"; + qca,led_mode = <1>; + }; + + led@6 { + reg = <6>; + label = "green:eth3"; + qca,led_mode = <0>; + }; + + led@7 { + reg = <7>; + label = "green:eth8"; + qca,led_mode = <1>; + }; + + led@9 { + reg = <9>; + label = "green:eth4"; + qca,led_mode = <0>; + }; + + led@10 { + reg = <10>; + label = "green:eth9"; + qca,led_mode = <1>; + }; + + led@12 { + reg = <12>; + label = "green:eth5"; + qca,led_mode = <0>; + }; + + led@13 { + reg = <13>; + label = "green:eth10"; + qca,led_mode = <1>; + }; + + led_user: led@14 { + reg = <14>; + label = "green:user"; + qca,led_mode = <1>; + }; + }; + }; +}; + +ð0 { + status = "okay"; + + /* default for ar934x, except for 1000M */ + pll-data = <0x6f000000 0x00000101 0x00001616>; + + phy-mode = "rgmii"; + phy-handle = <&phy0>; + + nvmem-cells = <&macaddr_hardconfig_10 0>; + nvmem-cell-names = "mac-address"; + + gmac-config { + device = <&gmac>; + rgmii-gmac0 = <1>; + switch-phy-swap = <0>; + switch-only-mode = <1>; + rxd-delay = <1>; + rxdv-delay = <1>; + }; +}; + +&builtin_switch { + /delete-property/ qca,phy4-mii-enable; +}; + +ð1 { + status = "okay"; + + nvmem-cells = <&macaddr_hardconfig_10 5>; + nvmem-cell-names = "mac-address"; +}; + +&usb { + status = "okay"; +}; + +&usb_phy { + status = "okay"; +}; + +&wmac { + status = "okay"; + + qca,no-eeprom; +}; diff --git a/target/linux/ath79/image/mikrotik.mk b/target/linux/ath79/image/mikrotik.mk index 19cbf3093364ac..8abc5ffb5f3d29 100644 --- a/target/linux/ath79/image/mikrotik.mk +++ b/target/linux/ath79/image/mikrotik.mk @@ -1,5 +1,16 @@ include ./common-mikrotik.mk +define Device/mikrotik_routerboard-2011uias-2hnd + $(Device/mikrotik_nand) + SOC := ar9344 + DEVICE_MODEL := RouterBOARD 2011UiAS-2HnD + DEVICE_PACKAGES += kmod-usb2 kmod-i2c-gpio kmod-sfp kmod-gpio-beeper + SUPPORTED_DEVICES += rb-2011l rb-2011il rb-2011ils \ + rb-2011uas rb-2011uas-2hnd rb-2011uias \ + rb-2011uias-2hnd rb-2011uias-2hnd-r2 +endef +TARGET_DEVICES += mikrotik_routerboard-2011uias-2hnd + define Device/mikrotik_routerboard-493g $(Device/mikrotik_nand) SOC := ar7161 diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds b/target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds index 16cb6284451acb..d07aa0848994f2 100644 --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/01_leds @@ -6,6 +6,13 @@ board_config_update board=$(board_name) case "$board" in +mikrotik,routerboard-2011uias-2hnd) + ucidef_set_led_switch "eth6" "eth6" "green:eth6" "switch1" "0x20" + ucidef_set_led_switch "eth7" "eth7" "green:eth7" "switch1" "0x10" + ucidef_set_led_switch "eth8" "eth8" "green:eth8" "switch1" "0x08" + ucidef_set_led_switch "eth9" "eth9" "green:eth9" "switch1" "0x04" + ucidef_set_led_switch "eth10" "eth10" "green:eth10" "switch1" "0x02" + ;; mikrotik,routerboard-911-lite|\ mikrotik,routerboard-lhg-5nd) ucidef_set_led_netdev "lan" "lan" "green:lan" "eth0" diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network index 4da588404582c1..7f0f6752d3c016 100644 --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network @@ -7,6 +7,12 @@ ath79_setup_interfaces() local board="$1" case "$board" in + mikrotik,routerboard-2011uias-2hnd) + ucidef_add_switch "switch0" \ + "0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "6:lan" "1:wan" + ucidef_add_switch "switch1" \ + "0@eth1" "1:lan:5" "2:lan:4" "3:lan:3" "4:lan:2" "5:lan:1" + ;; mikrotik,routerboard-493g) ucidef_set_interfaces_lan_wan "eth0.1 eth1.1" "eth0.2" ucidef_add_switch "switch0" \ @@ -76,6 +82,7 @@ ath79_setup_macs() label_mac="$mac_base" lan_mac="$mac_base" ;; + mikrotik,routerboard-2011uias-2hnd|\ mikrotik,routerboard-921gs-5hpacd-15s|\ mikrotik,routerboard-922uags-5hpacd) label_mac="$mac_base" diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/03_gpio_switches b/target/linux/ath79/mikrotik/base-files/etc/board.d/03_gpio_switches new file mode 100644 index 00000000000000..54a818818ac338 --- /dev/null +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/03_gpio_switches @@ -0,0 +1,20 @@ +# +# Copyright (C) 2025 OpenWrt.org +# + +. /lib/functions/uci-defaults.sh + +board_config_update + +board=$(board_name) + +case "$board" in +mikrotik,routerboard-2011uias-2hnd) + ucidef_add_gpio_switch "usb_power_n" "USB host power" "532" "0" + ucidef_add_gpio_switch "poe_port10_out_power" "PoE outuput on port 10" "514" "1" + ;; +esac + +board_config_flush + +exit 0 diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/05_compat-version b/target/linux/ath79/mikrotik/base-files/etc/board.d/05_compat-version index 2e079bfa5526fb..cdfdb714d75c8b 100644 --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/05_compat-version +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/05_compat-version @@ -6,6 +6,7 @@ board_config_update case "$(board_name)" in + mikrotik,routerboard-2011uias-2hnd|\ mikrotik,routerboard-493g|\ mikrotik,routerboard-911g-5hpacd|\ mikrotik,routerboard-911g-xhpnd|\ diff --git a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index e7bf17d0ec7599..64e5b8cf0cd643 100644 --- a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -23,6 +23,9 @@ board=$(board_name) case "$FIRMWARE" in "ath9k-eeprom-ahb-18100000.wmac.bin") case $board in + mikrotik,routerboard-2011uias-2hnd) + caldata_mikrotik_ath9k 0x1000 0x440 $(macaddr_add "$mac_base" 11) + ;; mikrotik,routerboard-911-lite|\ mikrotik,routerboard-911g-xhpnd|\ mikrotik,routerboard-912uag-2hpnd|\ diff --git a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh index c4d401b8ae8b65..9ad778ad177ba1 100644 --- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh +++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh @@ -29,6 +29,7 @@ platform_do_upgrade() { local board=$(board_name) case "$board" in + mikrotik,routerboard-2011uias-2hnd|\ mikrotik,routerboard-493g|\ mikrotik,routerboard-911g-5hpacd|\ mikrotik,routerboard-911g-xhpnd|\