mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 00:41:17 +00:00
6a27e8036e
The out-of-tree qcom-smem patches traditionally displayed mtd partition names in upper case, starting with the new mainline qcom-smem support in kernel v5.10, it switched to normalizing the partition names to lower case. While both 5.4 and 5.10 were supported in the target, we carried a workaround to support both of them. Since the target has dropped 5.4 recently, those can be removed now. Ref:2db9dded0a
("ipq806x: nbg6817: case-insensitive qcom-smem partitions")435dc2e77e
("ipq806x: ecw5410: case-insensitive qcom-smem partitions")f70e11cd97
("ipq806x: g10: case-insensitive qcom-smem partitions") Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
55 lines
1.5 KiB
Bash
55 lines
1.5 KiB
Bash
. /lib/functions.sh
|
|
|
|
asrock_bootconfig_mangle() {
|
|
local mtdnum="$(find_mtd_index 0:bootconfig)"
|
|
|
|
if [ -z "$mtdnum" ]; then
|
|
echo "cannot find bootconfig mtd partition"
|
|
return 1
|
|
fi
|
|
dd if=/dev/mtd$mtdnum of=/tmp/mtd$mtdnum bs=1k
|
|
|
|
local partition_byte="$(dd if=/tmp/mtd$mtdnum bs=1 skip=52 count=1)"
|
|
local upgrade_byte="$(dd if=/tmp/mtd$mtdnum bs=1 skip=4 count=1)"
|
|
|
|
if [ $1 = "bootcheck" ]; then
|
|
if [ ! -s $upgrade_byte ]; then
|
|
dd if=/dev/mtd$mtdnum of=/tmp/mtd$mtdnum bs=1k
|
|
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=4
|
|
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=56
|
|
else
|
|
return 1
|
|
fi
|
|
elif [ $1 = "sysupgrade" ]; then
|
|
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=4
|
|
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=56
|
|
fi
|
|
|
|
if [ -s $partition_byte ]; then
|
|
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=52
|
|
else
|
|
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=52
|
|
fi
|
|
|
|
mtd write /tmp/mtd$mtdnum /dev/mtd$mtdnum
|
|
return 0
|
|
}
|
|
|
|
asrock_upgrade_prepare() {
|
|
local ubidev="$( nand_find_ubi ubi )"
|
|
|
|
#Set upgrade flag. If something goes wrong, router will boot with
|
|
#factory firmware.
|
|
asrock_bootconfig_mangle 'sysupgrade'
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "cannot find bootconfig mtd partition"
|
|
exit 1
|
|
fi
|
|
|
|
# Just delete these partitions if present and use
|
|
# OpenWrt's standard names for those.
|
|
ubirmvol /dev/$ubidev -N ubi_rootfs &> /dev/null || true
|
|
ubirmvol /dev/$ubidev -N ubi_rootfs_data &> /dev/null || true
|
|
}
|