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>
master
Sven Roederer 8 years ago committed by John Crispin
parent e178d51a04
commit 9715beb04c
  1. 1
      target/linux/ramips/base-files/etc/board.d/02_network
  2. 25
      target/linux/ramips/base-files/etc/board.d/03_gpio_switches
  3. 3
      target/linux/ramips/base-files/lib/ramips.sh
  4. 9
      target/linux/ramips/base-files/lib/upgrade/platform.sh
  5. 106
      target/linux/ramips/dts/UBNT-ER-e50.dtsi
  6. 24
      target/linux/ramips/dts/UBNT-ERX-SFP.dts
  7. 103
      target/linux/ramips/dts/UBNT-ERX.dts
  8. 13
      target/linux/ramips/image/mt7621.mk

@ -170,6 +170,7 @@ ramips_setup_interfaces()
rb750gr3|\
rt-n14u|\
ubnt-erx|\
ubnt-erx-sfp|\
ur-326n4g|\
wrtnode|\
wrtnode2p | \

@ -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

@ -487,6 +487,9 @@ ramips_board_detect() {
*"UBNT-ERX")
name="ubnt-erx"
;;
*"UBNT-ERX-SFP")
name="ubnt-erx-sfp"
;;
*"UR-326N4G")
name="ur-326n4g"
;;

@ -252,7 +252,8 @@ platform_check_image() {
# these boards use metadata images
return 0
;;
ubnt-erx)
ubnt-erx|\
ubnt-erx-sfp)
nand_do_platform_check "$board" "$1"
return $?;
;;
@ -274,7 +275,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
@ -286,7 +288,8 @@ platform_do_upgrade() {
case "$board" in
hc5962|\
r6220|\
ubnt-erx)
ubnt-erx|\
ubnt-erx-sfp)
nand_do_upgrade "$ARGV"
;;
*)

@ -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>;
};
};
};
&ethernet {
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";
};

@ -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>;
};
};
};

@ -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>;
};
};
};
&ethernet {
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";
};

@ -184,6 +184,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

Loading…
Cancel
Save