[openwrt/openwrt] octeon: add support for Itus Shield Router

LEDE Commits lede-commits at lists.infradead.org
Sat Aug 15 20:19:01 EDT 2020


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

commit eadb1a943744997a8685c6de97a25d60d258af85
Author: Donald Hoskins <grommish at gmail.com>
AuthorDate: Wed Jul 22 05:26:33 2020 -0400

    octeon: add support for Itus Shield Router
    
    Itus Networks Shield - 1Ghz dual-core mips64 / Cavium Octeon 3 SoC,
    1Gb RAM, 4Gb eMMC,3 GbE 10/100/1000 ports
    
    Information regarding device can be found:
    https://deviwiki.com/wiki/Itus_Networks_Shield_Pro
    
    Installing OpenWrt on Itus Networks Shield:
    
    1) Boot Shield
    2) On device: mount /dev/mmcblk1p1 /mnt
    3) scp openwrt-octeon-itus,shield-router-initramfs-kernel.bin to
       /mnt/ItusrouterImage
    3a) Optionally: scp openwrt-octeon-itus,shield-router-initramfs-kernel.bin
        to /mnt/ItusgatewayImage to allow you to have an emergency recovery
        boot in the GATEWAY slot - this slot will have no permament storage and
        is used for emergency recovery only when booted in the (G)ateway
        position
    4) On device: umount /mnt
    5) reboot
    
    Once booted, run the sysupgrade via cli or luCi on the
    openwrt-octeon-itus,shield-router-squashfs-sysupgrade.tar file the mode
    you are running.
    
    Once rebooted, the system installation is complete. Your storage partition
    for the mode is inialized and set.
    
    Signed-off-by: Donald Hoskins <grommish at gmail.com>
    [cut out sysupgrade-* changes, move a few lines,
    drop case CVMX_BOARD_TYPE_ITUS_SHIELD]
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/octeon/base-files/etc/board.d/01_network |  3 ++
 .../linux/octeon/base-files/lib/preinit/01_sysinfo |  4 +++
 .../octeon/base-files/lib/preinit/79_move_config   |  5 +++
 .../octeon/base-files/lib/upgrade/platform.sh      | 39 ++++++++++++++------
 target/linux/octeon/image/Makefile                 |  9 +++++
 .../patches-5.4/130-itus_shield_support.patch      | 42 ++++++++++++++++++++++
 6 files changed, 92 insertions(+), 10 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 f5c8175c54..c1b614f601 100755
--- a/target/linux/octeon/base-files/etc/board.d/01_network
+++ b/target/linux/octeon/base-files/etc/board.d/01_network
@@ -8,6 +8,9 @@
 board_config_update
 
 case "$(board_name)" in
+itus,shield-router)
+	ucidef_set_interfaces_lan_wan "eth1 eth2" "eth0"
+	;;
 *)
 	ucidef_set_interfaces_lan_wan "eth0" "eth1"
 	;;
diff --git a/target/linux/octeon/base-files/lib/preinit/01_sysinfo b/target/linux/octeon/base-files/lib/preinit/01_sysinfo
index d8f467ed27..34fa7392d2 100644
--- a/target/linux/octeon/base-files/lib/preinit/01_sysinfo
+++ b/target/linux/octeon/base-files/lib/preinit/01_sysinfo
@@ -17,6 +17,10 @@ do_sysinfo_octeon() {
 		name="erpro"
 		;;
 
+	"ITUS_SHIELD"*)
+		name="itus,shield-router"
+		;;
+
 	*)
 		name="generic"
 		;;
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 866bef495b..fd780a9461 100644
--- a/target/linux/octeon/base-files/lib/preinit/79_move_config
+++ b/target/linux/octeon/base-files/lib/preinit/79_move_config
@@ -10,6 +10,11 @@ move_config() {
 			[ -f "/mnt/$BACKUP_FILE" ] && mv -f "/mnt/$BACKUP_FILE" /
 			umount /mnt
 			;;
+		itus,shield-router)
+			mount -t vfat /dev/mmcblk1p1 /mnt
+			[ -f "/mnt/$BACKUP_FILE" ] && mv -f "/mnt/$BACKUP_FILE" /
+			umount /mnt
+			;;
 	esac
 }
 
diff --git a/target/linux/octeon/base-files/lib/upgrade/platform.sh b/target/linux/octeon/base-files/lib/upgrade/platform.sh
index c137609d7f..d938950906 100755
--- a/target/linux/octeon/base-files/lib/upgrade/platform.sh
+++ b/target/linux/octeon/base-files/lib/upgrade/platform.sh
@@ -28,6 +28,11 @@ platform_copy_config() {
 		cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
 		umount /mnt
 		;;
+	itus,shield-router)
+		mount -t vfat /dev/mmcblk1p1 /mnt
+		cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
+		umount /mnt
+		;;
 	esac
 }
 
@@ -42,18 +47,29 @@ platform_do_flash() {
 	[ -n "$board_dir" ] || return 1
 
 	mkdir -p /boot
-	mount -t vfat /dev/$kernel /boot
 
-	[ -f /boot/vmlinux.64 -a ! -L /boot/vmlinux.64 ] && {
-		mv /boot/vmlinux.64 /boot/vmlinux.64.previous
-		mv /boot/vmlinux.64.md5 /boot/vmlinux.64.md5.previous
-	}
+	if [ $board = "itus,shield-router" ]; then
+		# mmcblk1p1 (fat) contains all ELF-bin images for the Shield
+		mount /dev/mmcblk1p1 /boot
+
+		echo "flashing Itus Kernel to /boot/$kernel (/dev/mmblk1p1)"
+		tar -Oxf $tar_file "$board_dir/kernel" > /boot/$kernel
+	else
+		mount -t vfat /dev/$kernel /boot
+
+		[ -f /boot/vmlinux.64 -a ! -L /boot/vmlinux.64 ] && {
+			mv /boot/vmlinux.64 /boot/vmlinux.64.previous
+			mv /boot/vmlinux.64.md5 /boot/vmlinux.64.md5.previous
+		}
+
+		echo "flashing kernel to /dev/$kernel"
+		tar xf $tar_file $board_dir/kernel -O > /boot/vmlinux.64
+		md5sum /boot/vmlinux.64 | cut -f1 -d " " > /boot/vmlinux.64.md5
+	fi
 
-	echo "flashing kernel to /dev/$kernel"
-	tar xf $tar_file $board_dir/kernel -O > /boot/vmlinux.64
-	md5sum /boot/vmlinux.64 | cut -f1 -d " " > /boot/vmlinux.64.md5
 	echo "flashing rootfs to ${rootfs}"
 	tar xf $tar_file $board_dir/root -O | dd of="${rootfs}" bs=4096
+
 	sync
 	umount /boot
 }
@@ -72,6 +88,9 @@ platform_do_upgrade() {
 	erlite)
 		kernel=sda1
 		;;
+	itus,shield-router)
+		kernel=ItusrouterImage
+		;;
 	*)
 		return 1
 	esac
@@ -79,7 +98,6 @@ platform_do_upgrade() {
 	platform_do_flash $tar_file $board $kernel $rootfs
 
 	return 0
-	
 }
 
 platform_check_image() {
@@ -92,7 +110,8 @@ platform_check_image() {
 
 	case "$board" in
 	er | \
-	erlite)
+	erlite | \
+	itus,shield-router)
 		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/image/Makefile b/target/linux/octeon/image/Makefile
index e083e823c2..1dbb60edbc 100644
--- a/target/linux/octeon/image/Makefile
+++ b/target/linux/octeon/image/Makefile
@@ -29,6 +29,15 @@ define Device/generic
 endef
 TARGET_DEVICES += generic
 
+ITUSROUTER_CMDLINE:=console=ttyS0,115200 root=/dev/mmcblk1p2 rootfstype=squashfs,ext4,f2fs rootwait
+define Device/itus_shield-router
+  DEVICE_VENDOR := Itus Networks
+  DEVICE_MODEL := Shield Router
+  CMDLINE := $(ITUSROUTER_CMDLINE)
+  IMAGE/sysupgrade.tar/squashfs += | append-metadata
+endef
+TARGET_DEVICES += itus_shield-router
+
 ER_CMDLINE:=-mtdparts=phys_mapped_flash:640k(boot0)ro,640k(boot1)ro,64k(eeprom)ro root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait
 define Device/ubnt_edgerouter
   DEVICE_VENDOR := Ubiquiti
diff --git a/target/linux/octeon/patches-5.4/130-itus_shield_support.patch b/target/linux/octeon/patches-5.4/130-itus_shield_support.patch
new file mode 100644
index 0000000000..37c75bbcd1
--- /dev/null
+++ b/target/linux/octeon/patches-5.4/130-itus_shield_support.patch
@@ -0,0 +1,42 @@
+--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
++++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
+@@ -297,7 +297,7 @@ enum cvmx_board_types_enum {
+ 	CVMX_BOARD_TYPE_UBNT_E100 = 20002,
+ 	CVMX_BOARD_TYPE_UBNT_E200 = 20003,
+ 	CVMX_BOARD_TYPE_UBNT_E220 = 20005,
+-	CVMX_BOARD_TYPE_CUST_DSR1000N = 20006,
++	CVMX_BOARD_TYPE_ITUS_SHIELD = 20006,
+ 	CVMX_BOARD_TYPE_KONTRON_S1901 = 21901,
+ 	CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000,
+ 
+@@ -400,7 +400,7 @@ static inline const char *cvmx_board_typ
+ 		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
+ 		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
+ 		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220)
+-		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N)
++		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_ITUS_SHIELD)
+ 		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KONTRON_S1901)
+ 		ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX)
+ 	}
+--- a/arch/mips/cavium-octeon/octeon-platform.c
++++ b/arch/mips/cavium-octeon/octeon-platform.c
+@@ -771,7 +771,7 @@ int __init octeon_prune_device_tree(void
+ 	if (fdt_check_header(initial_boot_params))
+ 		panic("Corrupt Device Tree.");
+ 
+-	WARN(octeon_bootinfo->board_type == CVMX_BOARD_TYPE_CUST_DSR1000N,
++	WARN(octeon_bootinfo->board_type == CVMX_BOARD_TYPE_ITUS_SHIELD,
+ 	     "Built-in DTB booting is deprecated on %s. Please switch to use appended DTB.",
+ 	     cvmx_board_type_to_string(octeon_bootinfo->board_type));
+ 
+--- a/arch/mips/pci/pci-octeon.c
++++ b/arch/mips/pci/pci-octeon.c
+@@ -211,8 +211,6 @@ const char *octeon_get_pci_interrupts(vo
+ 		return "AAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
+ 	case CVMX_BOARD_TYPE_BBGW_REF:
+ 		return "AABCD";
+-	case CVMX_BOARD_TYPE_CUST_DSR1000N:
+-		return "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC";
+ 	case CVMX_BOARD_TYPE_THUNDER:
+ 	case CVMX_BOARD_TYPE_EBH3000:
+ 	default:



More information about the lede-commits mailing list