mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-03 20:44:18 +00:00
924a5aabc7
Add support for NXP LS1028ARDB reference board. It's a dual core Coretex-A53 board with 4G RAM and 5 Eternet ports (4 ports are connected to MSCC Felix switch). The original layout of NXP board has been kept but firmware images are adapted to be more sysupgrade friendly. At the moment NOR and SD boots are supported. NOR flash instructions: * make sd card with sdboot image * boot * write firmware image to spi flash $ mtd write /tmp/openwrt-layerscape-armv8_64b-fsl_ls1028a-rdb- squashfs-firmware.bin /dev/mtd0 * change jumper to NOR boot and reset V3: * Added board specific network defaults for lan/wan v2: * Added INA220 curent monitor, PCF2129 RTC clock and NXP SA56004ED temperature sensor to default packages * removed compat fixups for thist board Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@protonmail.ch>
163 lines
3.8 KiB
Bash
163 lines
3.8 KiB
Bash
#
|
|
# Copyright 2015-2019 Traverse Technologies
|
|
# Copyright 2020 NXP
|
|
#
|
|
|
|
RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /usr/sbin/ubinfo /bin/echo"
|
|
RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock"
|
|
|
|
REQUIRE_IMAGE_METADATA=1
|
|
|
|
platform_do_upgrade_sdboot() {
|
|
local diskdev partdev parttype=ext4
|
|
local tar_file="$1"
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
|
|
export_bootdevice && export_partdevice diskdev 0 || {
|
|
echo "Unable to determine upgrade device"
|
|
return 1
|
|
}
|
|
|
|
if export_partdevice partdev 1; then
|
|
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
|
|
echo "Writing kernel..."
|
|
tar xf $tar_file ${board_dir}/kernel -O > /mnt/fitImage
|
|
umount /mnt
|
|
fi
|
|
|
|
echo "Erasing rootfs..."
|
|
dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M > /dev/null 2>&1
|
|
echo "Writing rootfs..."
|
|
tar xf $tar_file ${board_dir}/root -O | dd of=/dev/mmcblk0p2 bs=512k > /dev/null 2>&1
|
|
|
|
}
|
|
platform_do_upgrade_traverse_nandubi() {
|
|
bootsys=$(fw_printenv bootsys | awk -F= '{{print $2}}')
|
|
newbootsys=2
|
|
if [ "$bootsys" -eq "2" ]; then
|
|
newbootsys=1
|
|
fi
|
|
|
|
# If nand_do_upgrade succeeds, we don't have an opportunity to add any actions of
|
|
# our own, so do it here and set back on failure
|
|
echo "Setting bootsys to #${newbootsys}"
|
|
fw_setenv bootsys $newbootsys
|
|
CI_UBIPART="nandubi"
|
|
CI_KERNPART="kernel${newbootsys}"
|
|
CI_ROOTPART="rootfs${newbootsys}"
|
|
nand_do_upgrade "$1" || (echo "Upgrade failed, setting bootsys ${bootsys}" && fw_setenv bootsys $bootsys)
|
|
|
|
}
|
|
platform_copy_config_sdboot() {
|
|
local diskdev partdev parttype=ext4
|
|
|
|
export_bootdevice && export_partdevice diskdev 0 || {
|
|
echo "Unable to determine upgrade device"
|
|
return 1
|
|
}
|
|
|
|
if export_partdevice partdev 1; then
|
|
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
|
|
echo "Saving config backup..."
|
|
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
|
|
umount /mnt
|
|
fi
|
|
}
|
|
platform_copy_config() {
|
|
local board=$(board_name)
|
|
|
|
case "$board" in
|
|
fsl,ls1012a-frwy-sdboot | \
|
|
fsl,ls1021a-iot-sdboot | \
|
|
fsl,ls1021a-twr-sdboot | \
|
|
fsl,ls1028a-rdb-sdboot | \
|
|
fsl,ls1043a-rdb-sdboot | \
|
|
fsl,ls1046a-frwy-sdboot | \
|
|
fsl,ls1046a-rdb-sdboot | \
|
|
fsl,ls1088a-rdb-sdboot | \
|
|
fsl,lx2160a-rdb-sdboot)
|
|
platform_copy_config_sdboot
|
|
;;
|
|
esac
|
|
}
|
|
platform_check_image() {
|
|
local board=$(board_name)
|
|
|
|
case "$board" in
|
|
traverse,ls1043v | \
|
|
traverse,ls1043s)
|
|
nand_do_platform_check "traverse-ls1043" $1
|
|
return $?
|
|
;;
|
|
fsl,ls1012a-frdm | \
|
|
fsl,ls1012a-frwy-sdboot | \
|
|
fsl,ls1012a-rdb | \
|
|
fsl,ls1021a-iot-sdboot | \
|
|
fsl,ls1021a-twr | \
|
|
fsl,ls1021a-twr-sdboot | \
|
|
fsl,ls1028a-rdb | \
|
|
fsl,ls1028a-rdb-sdboot | \
|
|
fsl,ls1043a-rdb | \
|
|
fsl,ls1043a-rdb-sdboot | \
|
|
fsl,ls1046a-frwy | \
|
|
fsl,ls1046a-frwy-sdboot | \
|
|
fsl,ls1046a-rdb | \
|
|
fsl,ls1046a-rdb-sdboot | \
|
|
fsl,ls1088a-rdb | \
|
|
fsl,ls1088a-rdb-sdboot | \
|
|
fsl,ls2088a-rdb | \
|
|
fsl,lx2160a-rdb | \
|
|
fsl,lx2160a-rdb-sdboot)
|
|
return 0
|
|
;;
|
|
*)
|
|
echo "Sysupgrade is not currently supported on $board"
|
|
;;
|
|
esac
|
|
|
|
return 1
|
|
}
|
|
platform_do_upgrade() {
|
|
local board=$(board_name)
|
|
|
|
# Force the creation of fw_printenv.lock
|
|
mkdir -p /var/lock
|
|
touch /var/lock/fw_printenv.lock
|
|
|
|
case "$board" in
|
|
traverse,ls1043v | \
|
|
traverse,ls1043s)
|
|
platform_do_upgrade_traverse_nandubi "$1"
|
|
;;
|
|
fsl,ls1012a-frdm | \
|
|
fsl,ls1012a-rdb | \
|
|
fsl,ls1021a-twr | \
|
|
fsl,ls1028a-rdb | \
|
|
fsl,ls1043a-rdb | \
|
|
fsl,ls1046a-frwy | \
|
|
fsl,ls1046a-rdb | \
|
|
fsl,ls1088a-rdb | \
|
|
fsl,ls2088a-rdb | \
|
|
fsl,lx2160a-rdb)
|
|
PART_NAME=firmware
|
|
default_do_upgrade "$1"
|
|
;;
|
|
fsl,ls1012a-frwy-sdboot | \
|
|
fsl,ls1021a-iot-sdboot | \
|
|
fsl,ls1021a-twr-sdboot | \
|
|
fsl,ls1028a-rdb-sdboot | \
|
|
fsl,ls1043a-rdb-sdboot | \
|
|
fsl,ls1046a-frwy-sdboot | \
|
|
fsl,ls1046a-rdb-sdboot | \
|
|
fsl,ls1088a-rdb-sdboot | \
|
|
fsl,lx2160a-rdb-sdboot)
|
|
platform_do_upgrade_sdboot "$1"
|
|
return 0
|
|
;;
|
|
*)
|
|
echo "Sysupgrade is not currently supported on $board"
|
|
;;
|
|
esac
|
|
}
|