Files
Arch-R/projects/Rockchip/bootloader/update.sh
Alex Bee cbae81460f Rockchip: bootloader: use rk3288-tinker-s.dtb for updates
Since we using rk3288-tinker-s.dtb as default device tree for images
for TinkerBoard, we should use it for updates as well instead of
rk3288-tinker.dtb
2021-03-02 13:10:08 +01:00

88 lines
3.0 KiB
Bash

# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
[ -z "${SYSTEM_ROOT}" ] && SYSTEM_ROOT=""
[ -z "${BOOT_ROOT}" ] && BOOT_ROOT="/flash"
[ -z "${BOOT_PART}" ] && BOOT_PART=$(df "${BOOT_ROOT}" | tail -1 | awk {' print $1 '})
if [ -z "${BOOT_DISK}" ]; then
case ${BOOT_PART} in
/dev/sd[a-z][0-9]*)
BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,[0-9]*,,g")
;;
/dev/mmcblk*)
BOOT_DISK=$(echo ${BOOT_PART} | sed -e "s,p[0-9]*,,g")
;;
esac
fi
# mount ${BOOT_ROOT} r/w
mount -o remount,rw ${BOOT_ROOT}
# update device tree
for all_dtb in ${BOOT_ROOT}/*.dtb; do
dtb=$(basename ${all_dtb})
# device tree mappings for update from vendor to mainline kernel
case "${dtb}" in
rk3288-miniarm.dtb)
new_dtb=rk3288-tinker-s.dtb
;;
rk3328-box.dtb|rk3328-box-trn9.dtb|rk3328-box-z28.dtb|rk3328-rockbox.dtb)
new_dtb=rk3328-a1.dtb
;;
rk3399-rock-pi-4.dtb)
new_dtb=rk3399-rock-pi-4a.dtb
;;
*)
new_dtb="${dtb}"
;;
esac
if [ "${dtb}" != "${new_dtb}" -a -f ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ]; then
echo -n "Replacing ${dtb} with ${new_dtb} ... "
cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${new_dtb} ${BOOT_ROOT} && \
sed -e "s/FDT \/${dtb}/FDT \/${new_dtb}/g" \
-i ${BOOT_ROOT}/extlinux/extlinux.conf && \
rm -f ${BOOT_ROOT}/${dtb}
echo "done"
else
if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ]; then
echo -n "Updating ${dtb}... "
cp -p ${SYSTEM_ROOT}/usr/share/bootloader/${dtb} ${BOOT_ROOT}
echo "done"
elif [ "$(grep -c "FDT /${dtb}" ${BOOT_ROOT}/extlinux/extlinux.conf)" -ne 0 ]; then
non_existend_dtb="${dtb}"
fi
fi
done
# update bootloader
if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img ]; then
echo -n "Updating idbloader.img... "
dd if=${SYSTEM_ROOT}/usr/share/bootloader/idbloader.img of=${BOOT_DISK} bs=32k seek=1 conv=fsync &>/dev/null
echo "done"
fi
if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/uboot.img ]; then
echo -n "Updating uboot.img... "
dd if=${SYSTEM_ROOT}/usr/share/bootloader/uboot.img of=${BOOT_DISK} bs=64k seek=128 conv=fsync &>/dev/null
echo "done"
fi
if [ -f ${SYSTEM_ROOT}/usr/share/bootloader/trust.img ]; then
echo -n "Updating trust.img... "
dd if=${SYSTEM_ROOT}/usr/share/bootloader/trust.img of=${BOOT_DISK} bs=64k seek=192 conv=fsync &>/dev/null
echo "done"
fi
# mount ${BOOT_ROOT} r/o
sync
mount -o remount,ro ${BOOT_ROOT}
# warning if device tree was not updated
if [ -n "${non_existend_dtb}" ]; then
echo "The device tree ${non_existend_dtb} your installation uses does not exist in this update package."
echo "The updated system will continue to use the device tree from the previous system and your installation might be broken."
echo "Please check documentation to find out which boards are supported by this package."
sleep 10
fi