123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- From: Sven Roederer <devel-sven@geroedel.de>
- 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 <devel-sven@geroedel.de>
- 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 <dt-bindings/gpio/gpio.h>
- +#include <dt-bindings/input/input.h>
- +
- +/ {
- + 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 = <KEY_RESTART>;
- + };
- + };
- +};
- +
- +ð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 <dt-bindings/gpio/gpio.h>
- +
- +/ {
- + 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 <dt-bindings/gpio/gpio.h>
- -#include <dt-bindings/input/input.h>
- +#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 = <KEY_RESTART>;
- - };
- - };
- -};
- -
- -ð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
|