diff --git a/patches/lede/0043-ramips-use-GPIO_ACTIVE-macros-in-UBNT-ERX.dts.patch b/patches/lede/0043-ramips-use-GPIO_ACTIVE-macros-in-UBNT-ERX.dts.patch new file mode 100644 index 00000000..e5126c64 --- /dev/null +++ b/patches/lede/0043-ramips-use-GPIO_ACTIVE-macros-in-UBNT-ERX.dts.patch @@ -0,0 +1,35 @@ +From: Sven Roederer +Date: Fri, 5 May 2017 22:18:44 +0200 +Subject: ramips: use GPIO_ACTIVE macros in UBNT-ERX.dts + +- reorder includes +- use GPIO_ACTIVE_LOW macro instead of hardcoded "1" + +Signed-off-by: Sven Roederer + +diff --git a/target/linux/ramips/dts/UBNT-ERX.dts b/target/linux/ramips/dts/UBNT-ERX.dts +index 0b2da95b30f0e181e1929502b8ef1aa50a684f69..cf86bbb7e67b1c521c279367ee9e99fee88fae85 100644 +--- a/target/linux/ramips/dts/UBNT-ERX.dts ++++ b/target/linux/ramips/dts/UBNT-ERX.dts +@@ -1,9 +1,10 @@ +-#include +- + /dts-v1/; + + #include "mt7621.dtsi" + ++#include ++#include ++ + / { + model = "UBNT-ERX"; + +@@ -24,7 +25,7 @@ + + reset { + label = "reset"; +- gpios = <&gpio0 12 1>; ++ gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; diff --git a/patches/lede/0044-ramips-add-support-for-Ubiquiti-EdgeRouter-X-SFP.patch b/patches/lede/0044-ramips-add-support-for-Ubiquiti-EdgeRouter-X-SFP.patch new file mode 100644 index 00000000..31df2093 --- /dev/null +++ b/patches/lede/0044-ramips-add-support-for-Ubiquiti-EdgeRouter-X-SFP.patch @@ -0,0 +1,413 @@ +From: Sven Roederer +Date: Mon, 29 May 2017 11:24:49 +0200 +Subject: ramips: add support for Ubiquiti EdgeRouter X-SFP + +This patch adds support for the Ubiquiti EdgeRouter X-SFP and +improves support for the EdgeRouter X (PoE-passthrough). + +Specification: +- SoC: MediaTek MT7621AT +- Flash: 256 MiB +- RAM: 265 MiB +- Ethernet: 5 x LAN (1000 Mbps) +- UART: 1 x UART on PCB (3.3V, RX, TX, GND) - 57600 8N1 +- EdgeRouter X: + - 1 x PoE-Passtrough (Eth4) + - powered by Wallwart or passive PoE +- EdgeRouter X-SFP: + - 5 x PoE-Out (24V, passive) + - 1 x SFP (unknown status) + - powered by Wallwart (24V) + +Doesn't work: +* SoC has crypto engine but no open driver. +* SoC has nat acceleration, but no open driver. +* This router has 2MB spi flash soldered in but MT + nand/spi drivers do not support pin sharing, + so it is not accessable and disabled. Stock + firmware could read it and it was empty. + +Installation + +via vendor firmware: +- build an Initrd-image (> 3MiB) and upload the factory-image +- initrd can have luci-mod-failsafe +- flash final firmware via LuCI / sysupgrade on rebooted system + +via TFTP: +- stop uboot into tftp-load into option "1" +- upload factory.bin image + +Signed-off-by: Sven Roederer + +diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network +index 1778dc93297136e3196ad3f74e4b3bea7535cee0..1f5c6429201ba05fc14ff09c6c562d2c114f2a63 100755 +--- a/target/linux/ramips/base-files/etc/board.d/02_network ++++ b/target/linux/ramips/base-files/etc/board.d/02_network +@@ -146,6 +146,7 @@ ramips_setup_interfaces() + rb750gr3|\ + rt-n14u|\ + ubnt-erx|\ ++ ubnt-erx-sfp|\ + ur-326n4g|\ + wrtnode|\ + wrtnode2p | \ +diff --git a/target/linux/ramips/base-files/etc/board.d/03_gpio_switches b/target/linux/ramips/base-files/etc/board.d/03_gpio_switches +new file mode 100755 +index 0000000000000000000000000000000000000000..859dfb31f51244e69d3dce5fc80b329cb57729f3 +--- /dev/null ++++ b/target/linux/ramips/base-files/etc/board.d/03_gpio_switches +@@ -0,0 +1,25 @@ ++#!/bin/sh ++ ++. /lib/functions/uci-defaults.sh ++. /lib/ramips.sh ++ ++board_config_update ++ ++board=$(ramips_board_name) ++ ++case "$board" in ++ubnt-erx) ++ ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "0" ++ ;; ++ubnt-erx-sfp) ++ ucidef_add_gpio_switch "poe_power_port0" "PoE Power Port0" "496" ++ ucidef_add_gpio_switch "poe_power_port1" "PoE Power Port1" "497" ++ ucidef_add_gpio_switch "poe_power_port2" "PoE Power Port2" "498" ++ ucidef_add_gpio_switch "poe_power_port3" "PoE Power Port3" "499" ++ ucidef_add_gpio_switch "poe_power_port4" "PoE Power Port4" "500" ++ ;; ++esac ++ ++board_config_flush ++ ++exit 0 +diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh +index 17ada648931f16d3e85630dd341defb89ba50d6f..b1091f66b2897a19bd01d4a26a1b3647656fa62b 100755 +--- a/target/linux/ramips/base-files/lib/ramips.sh ++++ b/target/linux/ramips/base-files/lib/ramips.sh +@@ -466,6 +466,9 @@ ramips_board_detect() { + *"UBNT-ERX") + name="ubnt-erx" + ;; ++ *"UBNT-ERX-SFP") ++ name="ubnt-erx-sfp" ++ ;; + *"UR-326N4G") + name="ur-326n4g" + ;; +diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh +index a5cca2080d3b96cef92286b1b15f4f8832d9f8c5..d3efc2dd37ed855a1c0e966e448b67ae73324d5f 100755 +--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh ++++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh +@@ -234,7 +234,8 @@ platform_check_image() { + } + return 0 + ;; +- ubnt-erx) ++ ubnt-erx|\ ++ ubnt-erx-sfp) + nand_do_platform_check "$board" "$1" + return $?; + ;; +@@ -248,7 +249,8 @@ platform_nand_pre_upgrade() { + local board=$(ramips_board_name) + + case "$board" in +- ubnt-erx) ++ ubnt-erx|\ ++ ubnt-erx-sfp) + platform_upgrade_ubnt_erx "$ARGV" + ;; + esac +@@ -258,7 +260,8 @@ platform_do_upgrade() { + local board=$(ramips_board_name) + + case "$board" in +- ubnt-erx) ++ ubnt-erx|\ ++ ubnt-erx-sfp) + nand_do_upgrade "$ARGV" + ;; + *) +diff --git a/target/linux/ramips/dts/UBNT-ER-e50.dtsi b/target/linux/ramips/dts/UBNT-ER-e50.dtsi +new file mode 100644 +index 0000000000000000000000000000000000000000..b38c7194942db9f0a713fd8f707b53820d07c78e +--- /dev/null ++++ b/target/linux/ramips/dts/UBNT-ER-e50.dtsi +@@ -0,0 +1,106 @@ ++#include "mt7621.dtsi" ++ ++#include ++#include ++ ++/ { ++ compatible = "ubiquiti,edgerouterx"; ++ ++ memory@0 { ++ device_type = "memory"; ++ reg = <0x0 0x10000000>; ++ }; ++ ++ chosen { ++ bootargs = "console=ttyS0,57600"; ++ }; ++ ++ gpio-keys-polled { ++ compatible = "gpio-keys-polled"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ poll-interval = <20>; ++ ++ reset { ++ label = "reset"; ++ gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; ++ linux,code = ; ++ }; ++ }; ++}; ++ ++ðernet { ++ mtd-mac-address = <&factory 0x22>; ++}; ++ ++&nand { ++ status = "okay"; ++ ++ partition@0 { ++ label = "u-boot"; ++ reg = <0x0 0x80000>; ++ read-only; ++ }; ++ ++ partition@80000 { ++ label = "u-boot-env"; ++ reg = <0x80000 0x60000>; ++ read-only; ++ }; ++ ++ factory: partition@e0000 { ++ label = "factory"; ++ reg = <0xe0000 0x60000>; ++ }; ++ ++ partition@140000 { ++ label = "kernel1"; ++ reg = <0x140000 0x300000>; ++ }; ++ ++ partition@440000 { ++ label = "kernel2"; ++ reg = <0x440000 0x300000>; ++ }; ++ ++ partition@740000 { ++ label = "ubi"; ++ reg = <0x740000 0xf7c0000>; ++ }; ++}; ++ ++&pinctrl { ++ state_default: pinctrl0 { ++ gpio { ++ ralink,group = "uart2", "uart3", "i2c", "pcie", "rgmii2", "jtag"; ++ ralink,function = "gpio"; ++ }; ++ }; ++}; ++ ++&spi0 { ++ /* This board has 2Mb spi flash soldered in and visible ++ from manufacturer's firmware. ++ But this SoC shares spi and nand pins, ++ and current driver does't handle this sharing well */ ++ status = "disabled"; ++ ++ m25p80@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "jedec,spi-nor"; ++ reg = <1>; ++ spi-max-frequency = <10000000>; ++ m25p,chunked-io = <32>; ++ ++ partition@0 { ++ label = "spi"; ++ reg = <0x0 0x200000>; ++ read-only; ++ }; ++ }; ++}; ++ ++&xhci { ++ status = "disabled"; ++}; +diff --git a/target/linux/ramips/dts/UBNT-ERX-SFP.dts b/target/linux/ramips/dts/UBNT-ERX-SFP.dts +new file mode 100644 +index 0000000000000000000000000000000000000000..ca26d817211e5a5a20a7da926cd2aee726875780 +--- /dev/null ++++ b/target/linux/ramips/dts/UBNT-ERX-SFP.dts +@@ -0,0 +1,24 @@ ++/dts-v1/; ++ ++#include "UBNT-ER-e50.dtsi" ++ ++#include ++ ++/ { ++ model = "UBNT-ERX-SFP"; ++ compatible = "ubiquiti,edgerouterx-sfp"; ++ ++ i2c-gpio { ++ compatible = "i2c-gpio"; ++ gpios = <&gpio0 3 GPIO_ACTIVE_HIGH /* sda */ ++ &gpio0 4 GPIO_ACTIVE_HIGH /* scl */ ++ >; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ pca9555@25 { ++ compatible = "pca9555"; ++ reg = <0x25>; ++ }; ++ }; ++}; +diff --git a/target/linux/ramips/dts/UBNT-ERX.dts b/target/linux/ramips/dts/UBNT-ERX.dts +index cf86bbb7e67b1c521c279367ee9e99fee88fae85..556d1156c352f76a94c6e39bc3b58c88f08815be 100644 +--- a/target/linux/ramips/dts/UBNT-ERX.dts ++++ b/target/linux/ramips/dts/UBNT-ERX.dts +@@ -1,108 +1,7 @@ + /dts-v1/; + +-#include "mt7621.dtsi" +- +-#include +-#include ++#include "UBNT-ER-e50.dtsi" + + / { + model = "UBNT-ERX"; +- +- memory@0 { +- device_type = "memory"; +- reg = <0x0 0x10000000>; +- }; +- +- chosen { +- bootargs = "console=ttyS0,57600"; +- }; +- +- gpio-keys-polled { +- compatible = "gpio-keys-polled"; +- #address-cells = <1>; +- #size-cells = <0>; +- poll-interval = <20>; +- +- reset { +- label = "reset"; +- gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; +- linux,code = ; +- }; +- }; +-}; +- +-ðernet { +- mtd-mac-address = <&factory 0x22>; +-}; +- +-&nand { +- status = "okay"; +- +- partition@0 { +- label = "u-boot"; +- reg = <0x0 0x80000>; +- read-only; +- }; +- +- partition@80000 { +- label = "u-boot-env"; +- reg = <0x80000 0x60000>; +- read-only; +- }; +- +- factory: partition@e0000 { +- label = "factory"; +- reg = <0xe0000 0x60000>; +- }; +- +- partition@140000 { +- label = "kernel1"; +- reg = <0x140000 0x300000>; +- }; +- +- partition@440000 { +- label = "kernel2"; +- reg = <0x440000 0x300000>; +- }; +- +- partition@740000 { +- label = "ubi"; +- reg = <0x740000 0xf7c0000>; +- }; +-}; +- +-&pinctrl { +- state_default: pinctrl0 { +- gpio { +- ralink,group = "uart2", "uart3", "i2c", "pcie", "rgmii2", "jtag"; +- ralink,function = "gpio"; +- }; +- }; +-}; +- +-&spi0 { +- /* This board has 2Mb spi flash soldered in and visible +- from manufacturer's firmware. +- But this SoC shares spi and nand pins, +- and current driver does't handle this sharing well */ +- status = "disabled"; +- +- m25p80@0 { +- #address-cells = <1>; +- #size-cells = <1>; +- compatible = "jedec,spi-nor"; +- reg = <1>; +- spi-max-frequency = <10000000>; +- m25p,chunked-io = <32>; +- +- partition@0 { +- label = "spi"; +- reg = <0x0 0x200000>; +- read-only; +- }; +- }; +-}; +- +-&xhci { +- status = "disabled"; + }; +diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk +index 15ea9a13b6310b1454b5b3b92cd8ed30ee6255b3..8218bea84410536151a216cd2cc0300369ad977a 100644 +--- a/target/linux/ramips/image/mt7621.mk ++++ b/target/linux/ramips/image/mt7621.mk +@@ -144,6 +144,19 @@ define Device/ubnt-erx + endef + TARGET_DEVICES += ubnt-erx + ++define Device/ubnt-erx-sfp ++ DTS := UBNT-ERX-SFP ++ FILESYSTEMS := squashfs ++ KERNEL_SIZE := 3145728 ++ KERNEL := $(KERNEL_DTB) | uImage lzma ++ IMAGES := sysupgrade.tar ++ KERNEL_INITRAMFS := $$(KERNEL) | ubnt-erx-factory-image $(KDIR)/tmp/$$(KERNEL_INITRAMFS_PREFIX)-factory.tar ++ IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata ++ DEVICE_TITLE := Ubiquiti EdgeRouter X-SFP ++ DEVICE_PACKAGES := -kmod-mt76 -kmod-rt2x00-lib -kmod-mac80211 -kmod-cfg80211 -wpad-mini -iwinfo kmod-i2c-algo-pca kmod-gpio-pca953x kmod-i2c-gpio-custom ++endef ++TARGET_DEVICES += ubnt-erx-sfp ++ + define Device/vr500 + DTS := VR500 + IMAGE_SIZE := 66453504 diff --git a/targets/ramips-mt7621 b/targets/ramips-mt7621 index ad93174b..c2aadc0d 100644 --- a/targets/ramips-mt7621 +++ b/targets/ramips-mt7621 @@ -2,6 +2,7 @@ device d-link-dir-860l-b1 dir-860l-b1 + # Ubiquiti device ubnt-erx ubnt-erx @@ -9,6 +10,12 @@ packages '-hostapd-mini' factory sysupgrade '.tar' +device ubnt-erx-sfp ubnt-erx-sfp +packages '-hostapd-mini' +factory +sysupgrade '.tar' + + # ZBT device zbt-wg3526 zbt-wg3526