[source] ramips: add support for Ubiquiti EdgeRouter X-SFP

LEDE Commits lede-commits at lists.infradead.org
Tue Jun 6 21:33:45 PDT 2017


blogic pushed a commit to source.git, branch master:
https://git.lede-project.org/9715beb04c74a918697945b3e2d23a139bd04b70

commit 9715beb04c74a918697945b3e2d23a139bd04b70
Author: Sven Roederer <devel-sven at geroedel.de>
AuthorDate: Mon May 29 11:24:49 2017 +0200

    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 at geroedel.de>
---
 .../linux/ramips/base-files/etc/board.d/02_network |   1 +
 .../ramips/base-files/etc/board.d/03_gpio_switches |  25 +++++
 target/linux/ramips/base-files/lib/ramips.sh       |   3 +
 .../ramips/base-files/lib/upgrade/platform.sh      |   9 +-
 .../ramips/dts/{UBNT-ERX.dts => UBNT-ER-e50.dtsi}  |   4 +-
 target/linux/ramips/dts/UBNT-ERX-SFP.dts           |  24 +++++
 target/linux/ramips/dts/UBNT-ERX.dts               | 103 +--------------------
 target/linux/ramips/image/mt7621.mk                |  13 +++
 8 files changed, 74 insertions(+), 108 deletions(-)

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 9dd5823..3cd7ff6 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -170,6 +170,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 0000000..859dfb3
--- /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 4b60a07..c8865fc 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -487,6 +487,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 f25d1e2..dce4c1a 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -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"
 		;;
 	*)
diff --git a/target/linux/ramips/dts/UBNT-ERX.dts b/target/linux/ramips/dts/UBNT-ER-e50.dtsi
similarity index 97%
copy from target/linux/ramips/dts/UBNT-ERX.dts
copy to target/linux/ramips/dts/UBNT-ER-e50.dtsi
index cf86bbb..b38c719 100644
--- a/target/linux/ramips/dts/UBNT-ERX.dts
+++ b/target/linux/ramips/dts/UBNT-ER-e50.dtsi
@@ -1,12 +1,10 @@
-/dts-v1/;
-
 #include "mt7621.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 
 / {
-	model = "UBNT-ERX";
+	compatible = "ubiquiti,edgerouterx";
 
 	memory at 0 {
 		device_type = "memory";
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 0000000..ca26d81
--- /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 at 25 {
+			compatible = "pca9555";
+			reg = <0x25>;
+		};
+	};
+};
diff --git a/target/linux/ramips/dts/UBNT-ERX.dts b/target/linux/ramips/dts/UBNT-ERX.dts
index cf86bbb..556d115 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 at 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 at 0 {
-		label = "u-boot";
-		reg = <0x0 0x80000>;
-		read-only;
-	};
-
-	partition at 80000 {
-		label = "u-boot-env";
-		reg = <0x80000 0x60000>;
-		read-only;
-	};
-
-	factory: partition at e0000 {
-		label = "factory";
-		reg = <0xe0000 0x60000>;
-	};
-
-	partition at 140000 {
-		label = "kernel1";
-		reg = <0x140000 0x300000>;
-	};
-
-	partition at 440000 {
-		label = "kernel2";
-		reg = <0x440000 0x300000>;
-	};
-
-	partition at 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 at 0 {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "jedec,spi-nor";
-		reg = <1>;
-		spi-max-frequency = <10000000>;
-		m25p,chunked-io = <32>;
-
-		partition at 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 733fb08..3475a42 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -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



More information about the lede-commits mailing list