[openwrt/openwrt] octeon: add new target and support for Ubiquiti EdgeRouter 6P

LEDE Commits lede-commits at lists.infradead.org
Sun May 16 16:01:44 PDT 2021


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/6ee3680614047f7732731ebbaac946a93ab4f693

commit 6ee3680614047f7732731ebbaac946a93ab4f693
Author: Dan Brown <danbrown at gmail.com>
AuthorDate: Wed May 12 14:48:01 2021 +0200

    octeon: add new target and support for Ubiquiti EdgeRouter 6P
    
    Ubiquiti EdgeRouter 6P is 6 port router with similar
    specifications as the EdgeRouter 4, support for which was added
    in commit dd651e54cc5eadba480a56a7d2c18471e560f491
    
    There are five 10/100/1000 Mbps RJ/Copper ports and
    one 1000 Mbps SFP port.
    
    SoC: Octeon Cavium 7130 (Cavium 3) at 1000MHz
    Memory: 1GiB DDR3
    Flash: 2x2M chips with uboots (chainloaded) + 512K eeprom
    LEDs: 1x for power status (white/blue, controllable)
      and 6x for ethernet and SFP ports (no control over them)
    Buttons: 1x Reset
    Serial: 1x RJ45 port on front panel. 115200 baud, 8N1
    USB: 1x USB3.0 on front panel
    MII: 1x QSGMII from SoC
    PHY: 1x Vitesse VSC8504 of which 4 ports are used (phys 4-7)
         1x Vitesse VSC8514 of which 2 ports are used (phys 8-9)
    
    Network port mapping
     - eth0 on device maps to lan0 and phy5
     - eth1 on device maps to lan1 and phy6
     - eth2 on device maps to lan2 and phy7
     - eth3 on device maps to lan3 and phy8
     - eth4 on device maps to lan4 and phy9
     - eth5 (SFP) on device maps to lan5 and phy4
    
    What is not working:
     - There is no port status available before it goes up
     - SFP have no additional status and presented as no different from eth
     - Power-over-ethernet (passive) support has not been tested
    
    How to flash the firmware:
      - copy openwrt-octeon-ubnt_edgerouter-6p-initramfs-kernel.bin and
        openwrt-octeon-ubnt_edgerouter-6p-squashfs-sysupgrade.tar to
        USB flash drive that is formatted to vfat/fat32
      - connect USB flash drive to EdgeRouter 6P front USB port
      - connect serial cable using front RJ45 port (115200 baud, 8N1)
      - connect power to cable to EdgeRouter 6P
      - connect terminal to the console to see uboot boot process
      - interrupt boot by pressing button(s) on your keyboard to log
        in to the uboot
      - detect usb connected flash drives by typing to the console:
        usb start
      - after drive is detected load initramfs+kernel to the memory by typing:
        fatload usb 0:1 0x20000000 openwrt-octeon-ubnt_edgerouter-6p-initramfs-kernel.bin
      - after initramfs+kernel is loaded to the memory load it by typing:
        bootoctlinux 0 numcores=4 endbootargs mem=0
      - boot process should finish and you will be greeted with console
        after pressing enter
      - create directory to mount usb flash drive to by typing:
        mkdir /tmp/sda
      - mount flash drive to that directory by typing:
        mount /dev/sda1 /tmp/sda
      - flash firmware to router internal storage by typing:
        sysupgrade /tmp/sda/openwrt-octeon-ubnt_edgerouter-6p-squashfs-sysupgrade.tar
      - device will reboot and after it gets up you will have
        edgerouter 6p running openwrt
    
    Signed-off-by: Dan Brown <danbrown at gmail.com>
    [reorder/squash patches, move ethernet at 0 to DTS, share image setup]
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/octeon/base-files/etc/board.d/01_network |  3 ++
 .../octeon/base-files/lib/preinit/79_move_config   |  3 +-
 .../octeon/base-files/lib/upgrade/platform.sh      |  9 ++--
 .../cavium-octeon/cn7130_ubnt_edgerouter-6p.dts    | 60 ++++++++++++++++++++++
 target/linux/octeon/image/Makefile                 | 17 ++++--
 5 files changed, 85 insertions(+), 7 deletions(-)

diff --git a/target/linux/octeon/base-files/etc/board.d/01_network b/target/linux/octeon/base-files/etc/board.d/01_network
index e62d3c28bf..194faeaad9 100644
--- a/target/linux/octeon/base-files/etc/board.d/01_network
+++ b/target/linux/octeon/base-files/etc/board.d/01_network
@@ -13,6 +13,9 @@ itus,shield-router)
 ubnt,edgerouter-4)
 	ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "lan0"
 	;;
+ubnt,edgerouter-6p)
+	ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5" "lan0"
+	;;
 *)
 	ucidef_set_interfaces_lan_wan "eth0" "eth1"
 	;;
diff --git a/target/linux/octeon/base-files/lib/preinit/79_move_config b/target/linux/octeon/base-files/lib/preinit/79_move_config
index 5a84e6f18a..ae155a3c5c 100644
--- a/target/linux/octeon/base-files/lib/preinit/79_move_config
+++ b/target/linux/octeon/base-files/lib/preinit/79_move_config
@@ -21,7 +21,8 @@ octeon_move_config() {
 		itus,shield-router)
 			move_config "/dev/mmcblk1p1"
 			;;
-		ubnt,edgerouter-4)
+		ubnt,edgerouter-4 | \
+		ubnt,edgerouter-6p)
 			move_config "/dev/mmcblk0p1"
 			;;
 	esac
diff --git a/target/linux/octeon/base-files/lib/upgrade/platform.sh b/target/linux/octeon/base-files/lib/upgrade/platform.sh
index ad5baef4a1..255699bb31 100755
--- a/target/linux/octeon/base-files/lib/upgrade/platform.sh
+++ b/target/linux/octeon/base-files/lib/upgrade/platform.sh
@@ -29,7 +29,8 @@ platform_copy_config() {
 		cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
 		umount /mnt
 		;;
-	ubnt,edgerouter-4)
+	ubnt,edgerouter-4 | \
+	ubnt,edgerouter-6p)
 		mount -t vfat /dev/mmcblk0p1 /mnt
 		cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
 		umount /mnt
@@ -84,7 +85,8 @@ platform_do_upgrade() {
 	[ -b "${rootfs}" ] || return 1
 	case "$board" in
 	er | \
-	ubnt,edgerouter-4)
+	ubnt,edgerouter-4 | \
+	ubnt,edgerouter-6p)
 		kernel=mmcblk0p1
 		;;
 	erlite)
@@ -114,7 +116,8 @@ platform_check_image() {
 	er | \
 	erlite | \
 	itus,shield-router | \
-	ubnt,edgerouter-4)
+	ubnt,edgerouter-4 | \
+	ubnt,edgerouter-6p)
 		local kernel_length=$(tar xf $tar_file $board_dir/kernel -O | wc -c 2> /dev/null)
 		local rootfs_length=$(tar xf $tar_file $board_dir/root -O | wc -c 2> /dev/null)
 		[ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && {
diff --git a/target/linux/octeon/files/arch/mips/boot/dts/cavium-octeon/cn7130_ubnt_edgerouter-6p.dts b/target/linux/octeon/files/arch/mips/boot/dts/cavium-octeon/cn7130_ubnt_edgerouter-6p.dts
new file mode 100644
index 0000000000..7d31885928
--- /dev/null
+++ b/target/linux/octeon/files/arch/mips/boot/dts/cavium-octeon/cn7130_ubnt_edgerouter-6p.dts
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "cn7130_ubnt_edgerouter-e300.dtsi"
+
+/ {
+	compatible = "ubnt,edgerouter-6p", "cavium,cn7130";
+	model = "Ubiquiti EdgeRouter 6P";
+};
+
+&smi0 {
+	phy8: ethernet-phy at 8 {
+		device_type = "ethernet-phy";
+		interrupts = <17 8>;
+		interrupt-parent = <&gpio>;
+		compatible = "vitesse,vsc8514", "ethernet-phy-ieee802.3-c22";
+		reg = <8>;
+	};
+
+	phy9: ethernet-phy at 9 {
+		device_type = "ethernet-phy";
+		interrupts = <17 8>;
+		interrupt-parent = <&gpio>;
+		compatible = "vitesse,vsc8514", "ethernet-phy-ieee802.3-c22";
+		reg = <9>;
+	};
+};
+
+&pip {
+	interface at 0 {
+		ethernet at 0 {
+			label = "lan5";
+			status = "okay";
+			phy-mode = "sgmii";
+			phy-handle = <&phy4>;
+			mtd-mac-address = <&eeprom 0>;
+		};
+	};
+
+	interface at 1 {
+		status = "okay";
+
+		ethernet at 0 {
+			label = "lan3";
+			status = "okay";
+			phy-mode = "sgmii";
+			phy-handle = <&phy8>;
+			mtd-mac-address = <&eeprom 0>;
+			mtd-mac-address-increment = <(4)>;
+		};
+
+		ethernet at 1 {
+			label = "lan4";
+			status = "okay";
+			phy-mode = "sgmii";
+			phy-handle = <&phy9>;
+			mtd-mac-address = <&eeprom 0>;
+			mtd-mac-address-increment = <(5)>;
+		};
+	};
+};
diff --git a/target/linux/octeon/image/Makefile b/target/linux/octeon/image/Makefile
index 11da22df3b..f77159e1f9 100644
--- a/target/linux/octeon/image/Makefile
+++ b/target/linux/octeon/image/Makefile
@@ -51,17 +51,28 @@ define Device/ubnt_edgerouter
 endef
 TARGET_DEVICES += ubnt_edgerouter
 
-define Device/ubnt_edgerouter-4
+define Device/ubnt_edgerouter-e300
   DEVICE_VENDOR := Ubiquiti
-  DEVICE_MODEL := EdgeRouter 4
-  DEVICE_DTS := cn7130_ubnt_edgerouter-4
   DEVICE_PACKAGES += kmod-gpio-button-hotplug kmod-leds-gpio kmod-of-mdio kmod-sfp kmod-usb3 kmod-usb-dwc3 kmod-usb-storage-uas
   KERNEL := kernel-bin | patch-cmdline | append-dtb-to-elf
   KERNEL_DEPENDS := $$(wildcard $(DTS_DIR)/$(DEVICE_DTS).dts)
   CMDLINE := root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait
 endef
+
+define Device/ubnt_edgerouter-4
+  $(Device/ubnt_edgerouter-e300)
+  DEVICE_MODEL := EdgeRouter 4
+  DEVICE_DTS := cn7130_ubnt_edgerouter-4
+endef
 TARGET_DEVICES += ubnt_edgerouter-4
 
+define Device/ubnt_edgerouter-6p
+  $(Device/ubnt_edgerouter-e300)
+  DEVICE_MODEL := EdgeRouter 6P
+  DEVICE_DTS := cn7130_ubnt_edgerouter-6p
+endef
+TARGET_DEVICES += ubnt_edgerouter-6p
+
 ERLITE_CMDLINE:=-mtdparts=phys_mapped_flash:512k(boot0)ro,512k(boot1)ro,64k(eeprom)ro root=/dev/sda2 rootfstype=squashfs,ext4 rootwait
 define Device/ubnt_edgerouter-lite
   DEVICE_VENDOR := Ubiquiti



More information about the lede-commits mailing list