mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2024-11-22 21:16:13 +00:00
17f84bba44
Alphabetically sort devices in platform.sh Signed-off-by: Rodrigo Balerdi <lanchon@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16505 Signed-off-by: Robert Marko <robimarko@gmail.com>
278 lines
5.8 KiB
Bash
278 lines
5.8 KiB
Bash
PART_NAME=firmware
|
|
REQUIRE_IMAGE_METADATA=1
|
|
|
|
RAMFS_COPY_BIN='fw_printenv fw_setenv head'
|
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
|
|
|
xiaomi_initramfs_prepare() {
|
|
# Wipe UBI if running initramfs
|
|
[ "$(rootfs_type)" = "tmpfs" ] || return 0
|
|
|
|
local rootfs_mtdnum="$( find_mtd_index rootfs )"
|
|
if [ ! "$rootfs_mtdnum" ]; then
|
|
echo "unable to find mtd partition rootfs"
|
|
return 1
|
|
fi
|
|
|
|
local kern_mtdnum="$( find_mtd_index ubi_kernel )"
|
|
if [ ! "$kern_mtdnum" ]; then
|
|
echo "unable to find mtd partition ubi_kernel"
|
|
return 1
|
|
fi
|
|
|
|
ubidetach -m "$rootfs_mtdnum"
|
|
ubiformat /dev/mtd$rootfs_mtdnum -y
|
|
|
|
ubidetach -m "$kern_mtdnum"
|
|
ubiformat /dev/mtd$kern_mtdnum -y
|
|
}
|
|
|
|
asus_initial_setup() {
|
|
# Remove existing linux and jffs2 volumes
|
|
[ "$(rootfs_type)" = "tmpfs" ] || return 0
|
|
|
|
ubirmvol /dev/ubi0 -N linux
|
|
ubirmvol /dev/ubi0 -N jffs2
|
|
}
|
|
|
|
remove_oem_ubi_volume() {
|
|
local oem_volume_name="$1"
|
|
local oem_ubivol
|
|
local mtdnum
|
|
local ubidev
|
|
|
|
mtdnum=$(find_mtd_index "$CI_UBIPART")
|
|
if [ ! "$mtdnum" ]; then
|
|
return
|
|
fi
|
|
|
|
ubidev=$(nand_find_ubi "$CI_UBIPART")
|
|
if [ ! "$ubidev" ]; then
|
|
ubiattach --mtdn="$mtdnum"
|
|
ubidev=$(nand_find_ubi "$CI_UBIPART")
|
|
fi
|
|
|
|
if [ "$ubidev" ]; then
|
|
oem_ubivol=$(nand_find_volume "$ubidev" "$oem_volume_name")
|
|
[ "$oem_ubivol" ] && ubirmvol "/dev/$ubidev" --name="$oem_volume_name"
|
|
fi
|
|
}
|
|
|
|
tplink_get_boot_part() {
|
|
local cur_boot_part
|
|
local args
|
|
|
|
# Try to find rootfs from kernel arguments
|
|
read -r args < /proc/cmdline
|
|
for arg in $args; do
|
|
local ubi_mtd_arg=${arg#ubi.mtd=}
|
|
case "$ubi_mtd_arg" in
|
|
rootfs|rootfs_1)
|
|
echo "$ubi_mtd_arg"
|
|
return
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Fallback to u-boot env (e.g. when running initramfs)
|
|
cur_boot_part="$(/usr/sbin/fw_printenv -n tp_boot_idx)"
|
|
case $cur_boot_part in
|
|
1)
|
|
echo rootfs_1
|
|
;;
|
|
0|*)
|
|
echo rootfs
|
|
;;
|
|
esac
|
|
}
|
|
|
|
tplink_do_upgrade() {
|
|
local new_boot_part
|
|
|
|
case $(tplink_get_boot_part) in
|
|
rootfs)
|
|
CI_UBIPART="rootfs_1"
|
|
new_boot_part=1
|
|
;;
|
|
rootfs_1)
|
|
CI_UBIPART="rootfs"
|
|
new_boot_part=0
|
|
;;
|
|
esac
|
|
|
|
fw_setenv -s - <<-EOF
|
|
tp_boot_idx $new_boot_part
|
|
EOF
|
|
|
|
remove_oem_ubi_volume ubi_rootfs
|
|
nand_do_upgrade "$1"
|
|
}
|
|
|
|
platform_check_image() {
|
|
return 0;
|
|
}
|
|
|
|
platform_pre_upgrade() {
|
|
case "$(board_name)" in
|
|
asus,rt-ax89x)
|
|
asus_initial_setup
|
|
;;
|
|
redmi,ax6|\
|
|
xiaomi,ax3600|\
|
|
xiaomi,ax9000)
|
|
xiaomi_initramfs_prepare
|
|
;;
|
|
esac
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
case "$(board_name)" in
|
|
arcadyan,aw1000|\
|
|
cmcc,rm2-6|\
|
|
compex,wpq873|\
|
|
dynalink,dl-wrx36|\
|
|
edimax,cax1800|\
|
|
netgear,rax120v2|\
|
|
netgear,sxr80|\
|
|
netgear,sxs80|\
|
|
netgear,wax218|\
|
|
netgear,wax620|\
|
|
netgear,wax630)
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
asus,rt-ax89x)
|
|
CI_UBIPART="UBI_DEV"
|
|
CI_KERNPART="linux"
|
|
CI_ROOTPART="jffs2"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
buffalo,wxr-5950ax12)
|
|
CI_KERN_UBIPART="rootfs"
|
|
CI_ROOT_UBIPART="user_property"
|
|
buffalo_upgrade_prepare
|
|
nand_do_flash_file "$1" || nand_do_upgrade_failed
|
|
nand_do_restore_config || nand_do_upgrade_failed
|
|
buffalo_upgrade_optvol
|
|
;;
|
|
edgecore,eap102)
|
|
active="$(fw_printenv -n active)"
|
|
if [ "$active" -eq "1" ]; then
|
|
CI_UBIPART="rootfs2"
|
|
else
|
|
CI_UBIPART="rootfs1"
|
|
fi
|
|
# force altbootcmd which handles partition change in u-boot
|
|
fw_setenv bootcount 3
|
|
fw_setenv upgrade_available 1
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
linksys,mx4200v1|\
|
|
linksys,mx4200v2|\
|
|
linksys,mx5300|\
|
|
linksys,mx8500)
|
|
boot_part="$(fw_printenv -n boot_part)"
|
|
if [ "$boot_part" -eq "1" ]; then
|
|
fw_setenv boot_part 2
|
|
CI_KERNPART="alt_kernel"
|
|
CI_UBIPART="alt_rootfs"
|
|
else
|
|
fw_setenv boot_part 1
|
|
CI_UBIPART="rootfs"
|
|
fi
|
|
fw_setenv boot_part_ready 3
|
|
fw_setenv auto_recovery yes
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
prpl,haze|\
|
|
qnap,301w)
|
|
CI_KERNPART="0:HLOS"
|
|
CI_ROOTPART="rootfs"
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
redmi,ax6|\
|
|
xiaomi,ax3600|\
|
|
xiaomi,ax9000)
|
|
# Make sure that UART is enabled
|
|
fw_setenv boot_wait on
|
|
fw_setenv uart_en 1
|
|
|
|
# Enforce single partition.
|
|
fw_setenv flag_boot_rootfs 0
|
|
fw_setenv flag_last_success 0
|
|
fw_setenv flag_boot_success 1
|
|
fw_setenv flag_try_sys1_failed 8
|
|
fw_setenv flag_try_sys2_failed 8
|
|
|
|
# Kernel and rootfs are placed in 2 different UBI
|
|
CI_KERN_UBIPART="ubi_kernel"
|
|
CI_ROOT_UBIPART="rootfs"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
spectrum,sax1v1k)
|
|
CI_KERNPART="0:HLOS"
|
|
CI_ROOTPART="rootfs"
|
|
CI_DATAPART="rootfs_data"
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
tplink,eap660hd-v1)
|
|
tplink_do_upgrade "$1"
|
|
;;
|
|
yuncore,ax880)
|
|
active="$(fw_printenv -n active)"
|
|
if [ "$active" -eq "1" ]; then
|
|
CI_UBIPART="rootfs_1"
|
|
else
|
|
CI_UBIPART="rootfs"
|
|
fi
|
|
# force altbootcmd which handles partition change in u-boot
|
|
fw_setenv bootcount 3
|
|
fw_setenv upgrade_available 1
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
zbtlink,zbt-z800ax)
|
|
local mtdnum="$(find_mtd_index 0:bootconfig)"
|
|
local alt_mtdnum="$(find_mtd_index 0:bootconfig1)"
|
|
part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$mtdnum | cut -f 1 -d "|" | head -n1)"
|
|
# vendor firmware may swap the rootfs partition location, u-boot append: ubi.mtd=rootfs
|
|
# since we use fixed-partitions, need to force boot from the first rootfs partition
|
|
if [ "$part_num" -eq "1" ]; then
|
|
mtd erase /dev/mtd$mtdnum
|
|
mtd erase /dev/mtd$alt_mtdnum
|
|
fi
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
zte,mf269)
|
|
CI_KERN_UBIPART="ubi_kernel"
|
|
CI_ROOT_UBIPART="rootfs"
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
zyxel,nbg7815)
|
|
local config_mtdnum="$(find_mtd_index 0:bootconfig)"
|
|
[ -z "$config_mtdnum" ] && reboot
|
|
part_num="$(hexdump -e '1/1 "%01x|"' -n 1 -s 168 -C /dev/mtd$config_mtdnum | cut -f 1 -d "|" | head -n1)"
|
|
if [ "$part_num" -eq "0" ]; then
|
|
CI_KERNPART="0:HLOS"
|
|
CI_ROOTPART="rootfs"
|
|
else
|
|
CI_KERNPART="0:HLOS_1"
|
|
CI_ROOTPART="rootfs_1"
|
|
fi
|
|
emmc_do_upgrade "$1"
|
|
;;
|
|
*)
|
|
default_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
platform_copy_config() {
|
|
case "$(board_name)" in
|
|
prpl,haze|\
|
|
qnap,301w|\
|
|
spectrum,sax1v1k|\
|
|
zyxel,nbg7815)
|
|
emmc_copy_config
|
|
;;
|
|
esac
|
|
}
|