aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape
diff options
context:
space:
mode:
authorMathew McBride <matt@traverse.com.au>2023-06-06 06:24:11 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2023-07-26 13:36:58 +0200
commit68a4c60b5cb3ec48d74a40fb403417ef1606893d (patch)
tree4beb70382bd85d54cf0f1b3655a18fc38cfed32c /target/linux/layerscape
parente54e5bc415ceea61391a22cf0bfe88181690ce3e (diff)
downloadupstream-68a4c60b5cb3ec48d74a40fb403417ef1606893d.tar.gz
upstream-68a4c60b5cb3ec48d74a40fb403417ef1606893d.tar.bz2
upstream-68a4c60b5cb3ec48d74a40fb403417ef1606893d.zip
layerscape: armv8_64b: add Traverse Ten64 NAND variant
The Ten64 board[1] is based around NXP's Layerscape LS1088A SoC. It is capable of booting both standard Linux distributions from disk devices, using EFI, and booting OpenWrt from NAND. See the online manual for more information, including the flash layout[2]. This patchset adds support for generating Ten64 images for NAND boot. For disk boot, one can use the EFI support that was recently added to the armvirt target. We previously supported NAND users by building inside our armvirt/EFI target[3], but this approach is not suitable for OpenWrt upstream. Users who used our supplied NAND images will be able to upgrade to this via sysupgrade. Signed-off-by: Mathew McBride <matt@traverse.com.au> [1] - https://www.traverse.com.au/hardware/ten64 [2] - https://ten64doc.traverse.com.au/hardware/flash/ [3] - Example: https://gitlab.com/traversetech/ls1088firmware/openwrt/-/commit/285e4360e1604eb466880d245d48efd9962143a5 (cherry picked from commit af0546da3440dba24217949527e503820350ff05)
Diffstat (limited to 'target/linux/layerscape')
-rw-r--r--target/linux/layerscape/armv8_64b/config-5.153
-rw-r--r--target/linux/layerscape/base-files/etc/board.d/01_led4
-rw-r--r--target/linux/layerscape/base-files/etc/board.d/02_network4
-rw-r--r--target/linux/layerscape/base-files/etc/board.d/03_gpio_switches8
-rw-r--r--target/linux/layerscape/base-files/lib/upgrade/platform.sh27
-rw-r--r--target/linux/layerscape/image/Makefile13
-rw-r--r--target/linux/layerscape/image/armv8_64b.mk32
7 files changed, 90 insertions, 1 deletions
diff --git a/target/linux/layerscape/armv8_64b/config-5.15 b/target/linux/layerscape/armv8_64b/config-5.15
index 69edc7a3f0..0e8ab0c253 100644
--- a/target/linux/layerscape/armv8_64b/config-5.15
+++ b/target/linux/layerscape/armv8_64b/config-5.15
@@ -508,6 +508,7 @@ CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_FSL_IFC=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_SPLIT_FIRMWARE=y
@@ -515,7 +516,7 @@ CONFIG_MTD_SPLIT_FIT_FW=y
CONFIG_MTD_SST25L=y
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20
-# CONFIG_MTD_UBI_BLOCK is not set
+CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MULTIPLEXER=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
diff --git a/target/linux/layerscape/base-files/etc/board.d/01_led b/target/linux/layerscape/base-files/etc/board.d/01_led
index 7fddfa0824..a21c21980a 100644
--- a/target/linux/layerscape/base-files/etc/board.d/01_led
+++ b/target/linux/layerscape/base-files/etc/board.d/01_led
@@ -17,6 +17,10 @@ traverse,ls1043s)
ucidef_set_led_netdev "xgact" "10G Activity" "ls1043s:yellow:10gact" "eth6"
ucidef_set_led_netdev "xglink" "10G Link" "ls1043s:green:10glink" "eth6"
;;
+traverse,ten64)
+ ucidef_set_led_netdev "sfp1" "SFP 1" "ten64:green:sfp1:down" "eth8" "link tx rx"
+ ucidef_set_led_netdev "sfp2" "SFP 2" "ten64:green:sfp2:up" "eth9" "link tx rx"
+ ;;
esac
board_config_flush
diff --git a/target/linux/layerscape/base-files/etc/board.d/02_network b/target/linux/layerscape/base-files/etc/board.d/02_network
index 172172c12c..7bc5f9b502 100644
--- a/target/linux/layerscape/base-files/etc/board.d/02_network
+++ b/target/linux/layerscape/base-files/etc/board.d/02_network
@@ -17,6 +17,10 @@ case "$(board_name)" in
ucidef_set_interface_lan "eth0 eth1 eth2 eth3 eth6"
ucidef_set_interface_wan "eth4"
;;
+ traverse,ten64)
+ ucidef_set_interface_lan "eth0 eth1 eth2 eth3"
+ ucidef_set_interface_wan "eth6"
+ ;;
esac
board_config_flush
diff --git a/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches b/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches
index df3b759916..5e0e24ef28 100644
--- a/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches
+++ b/target/linux/layerscape/base-files/etc/board.d/03_gpio_switches
@@ -20,6 +20,14 @@ traverse,ls1043s)
ucidef_add_gpio_switch "lte_disable" "LTE Airplane Mode" "394"
ucidef_add_gpio_switch "lte_power" "LTE Power" "395"
;;
+traverse,ten64)
+ ucidef_add_gpio_switch "lte_reset" "Cell Modem Reset" "376"
+ ucidef_add_gpio_switch "lte_power" "Cell Modem Power" "377"
+ ucidef_add_gpio_switch "lte_disable" "Cell Modem Airplane mode" "378"
+ ucidef_add_gpio_switch "gnss_disable" "Cell Modem Disable GNSS receiver" "379"
+ ucidef_add_gpio_switch "lower_sfp_txidsable" "Lower SFP+ TX Disable" "369"
+ ucidef_add_gpio_switch "upper_sfp_txdisable" "Upper SFP+ TX Disable" "373"
+ ;;
esac
board_config_flush
diff --git a/target/linux/layerscape/base-files/lib/upgrade/platform.sh b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
index e88dfdf145..c63cf05e5c 100644
--- a/target/linux/layerscape/base-files/lib/upgrade/platform.sh
+++ b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
@@ -49,6 +49,26 @@ platform_do_upgrade_traverse_nandubi() {
nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
}
+
+platform_do_upgrade_traverse_slotubi() {
+ part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
+ echo "Active boot slot: ${part}"
+ new_active_sys="b"
+
+ if [ ! -z "${part}" ]; then
+ if [ "${part}" = "ubia" ]; then
+ CI_UBIPART="ubib"
+ else
+ CI_UBIPART="ubia"
+ new_active_sys="a"
+ fi
+ fi
+ echo "Updating UBI part ${CI_UBIPART}"
+ fw_setenv "openwrt_active_sys" "${new_active_sys}"
+ nand_do_upgrade "$1"
+ return $?
+}
+
platform_copy_config_sdboot() {
local diskdev partdev parttype=ext4
@@ -90,6 +110,10 @@ platform_check_image() {
nand_do_platform_check "traverse-ls1043" $1
return $?
;;
+ traverse,ten64)
+ nand_do_platform_check "ten64-mtd" $1
+ return $?
+ ;;
fsl,ls1012a-frdm | \
fsl,ls1012a-frwy-sdboot | \
fsl,ls1012a-rdb | \
@@ -130,6 +154,9 @@ platform_do_upgrade() {
traverse,ls1043s)
platform_do_upgrade_traverse_nandubi "$1"
;;
+ traverse,ten64)
+ platform_do_upgrade_traverse_slotubi "${1}"
+ ;;
fsl,ls1012a-frdm | \
fsl,ls1012a-rdb | \
fsl,ls1021a-twr | \
diff --git a/target/linux/layerscape/image/Makefile b/target/linux/layerscape/image/Makefile
index 52dc532c34..1463a3eaea 100644
--- a/target/linux/layerscape/image/Makefile
+++ b/target/linux/layerscape/image/Makefile
@@ -64,6 +64,19 @@ define Build/traverse-fit
@mv -f $@.new $@
endef
+define Build/traverse-fit-ls1088
+ ./mkits-multiple-config.sh -o $@.its -A $(LINUX_KARCH) \
+ -v $(LINUX_VERSION) -k $@ -a $(KERNEL_LOADADDR) \
+ -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+ -C gzip -c 1 -c 2 \
+ -d $(DTS_DIR)/freescale/fsl-ls1088a-ten64.dtb \
+ -D "TEN64" -n "ten64" -a $(FDT_LOADADDR) -c 1 \
+ -d $(DTS_DIR)/freescale/fsl-ls1088a-rdb.dtb \
+ -D "LS1088ARDB" -n "ls1088ardb" -a $(FDT_LOADADDR) -c 2
+ PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new
+ @mv -f $@.new $@
+endef
+
define Device/fix-sysupgrade
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := DTB was added to sysupgrade. Image format is different. \
diff --git a/target/linux/layerscape/image/armv8_64b.mk b/target/linux/layerscape/image/armv8_64b.mk
index f5a6a055fb..0016e3bde8 100644
--- a/target/linux/layerscape/image/armv8_64b.mk
+++ b/target/linux/layerscape/image/armv8_64b.mk
@@ -451,3 +451,35 @@ define Device/traverse_ls1043
SUPPORTED_DEVICES := traverse,ls1043s traverse,ls1043v
endef
TARGET_DEVICES += traverse_ls1043
+
+define Device/traverse_ten64_mtd
+ DEVICE_VENDOR := Traverse
+ DEVICE_MODEL := Ten64 (NAND boot)
+ DEVICE_NAME := ten64-mtd
+ DEVICE_PACKAGES += \
+ uboot-envtools \
+ kmod-rtc-rx8025 \
+ kmod-sfp \
+ kmod-i2c-mux-pca954x \
+ restool
+ DEVICE_DESCRIPTION = \
+ Generate images for booting from NAND/ubifs on Traverse Ten64 (LS1088A) \
+ family boards. For disk (NVMe/USB/SD) boot, use the armvirt target instead.
+ FILESYSTEMS := squashfs
+ KERNEL_LOADADDR := 0x80000000
+ KERNEL_ENTRY_POINT := 0x80000000
+ FDT_LOADADDR := 0x90000000
+ KERNEL_SUFFIX := -kernel.itb
+ DEVICE_DTS := freescale/fsl-ls1088a-ten64
+ IMAGES := nand.ubi sysupgrade.bin
+ KERNEL := kernel-bin | gzip | traverse-fit-ls1088 gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb $$(FDT_LOADADDR)
+ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+ IMAGE/nand.ubi := append-ubi
+ KERNEL_IN_UBI := 1
+ BLOCKSIZE := 128KiB
+ PAGESIZE := 2048
+ MKUBIFS_OPTS := -m $$(PAGESIZE) -e 124KiB -c 600
+ SUPPORTED_DEVICES = traverse,ten64
+endef
+TARGET_DEVICES += traverse_ten64_mtd
+