Daniel Golle 684807843b mediatek: adapt BananaPi-R4 with upstream DT
* the variant with 2.5G PHY instead of LAN SFP is called '2p5'
   upstream and 'poe' in our downstream Linux DT. Use the right
   DTS depending on the kernel version and set an additional
   compatible.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-05-29 19:00:15 +08:00

127 lines
2.1 KiB
Bash
Executable File

REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fitblk'
asus_initial_setup()
{
# initialize UBI if it's running on initramfs
[ "$(rootfs_type)" = "tmpfs" ] || return 0
ubirmvol /dev/ubi0 -N rootfs
ubirmvol /dev/ubi0 -N rootfs_data
ubirmvol /dev/ubi0 -N jffs2
ubimkvol /dev/ubi0 -N jffs2 -s 0x3e000
}
platform_do_upgrade() {
local board=$(board_name)
case "$board" in
asus,tuf-ax4200|\
asus,tuf-ax6000)
CI_UBIPART="UBI_DEV"
CI_KERNPART="linux"
nand_do_upgrade "$1"
;;
bananapi,bpi-r3|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe)
[ -e /dev/fit0 ] && fitblk /dev/fit0
[ -e /dev/fitrw ] && fitblk /dev/fitrw
bootdev="$(fitblk_get_bootdev)"
case "$bootdev" in
mmc*)
EMMC_KERN_DEV="/dev/$bootdev"
emmc_do_upgrade "$1"
;;
mtdblock*)
PART_NAME="/dev/mtd${bootdev:8}"
default_do_upgrade "$1"
;;
ubiblock*)
CI_KERNPART="fit"
nand_do_upgrade "$1"
;;
esac
;;
cmcc,rax3000m-emmc|\
glinet,gl-mt2500|\
glinet,gl-mt6000|\
glinet,gl-x3000|\
glinet,gl-xe3000|\
hf,m7986r1-emmc|\
huasifei,wh3000-emmc|\
jdcloud,re-cs-05)
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
emmc_do_upgrade "$1"
;;
*)
nand_do_upgrade "$1"
;;
esac
}
PART_NAME=firmware
platform_check_image() {
local board=$(board_name)
local magic="$(get_magic_long "$1")"
[ "$#" -gt 1 ] && return 1
case "$board" in
bananapi,bpi-r3|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe)
[ "$magic" != "d00dfeed" ] && {
echo "Invalid image type."
return 1
}
return 0
;;
*)
nand_do_platform_check "$board" "$1"
return 0
;;
esac
return 0
}
platform_copy_config() {
case "$(board_name)" in
bananapi,bpi-r3|\
bananapi,bpi-r4|\
bananapi,bpi-r4-2g5|\
bananapi,bpi-r4-poe)
case "$(cmdline_get_var root)" in
/dev/mmc*)
emmc_copy_config
;;
esac
;;
cmcc,rax3000m-emmc|\
glinet,gl-mt2500|\
glinet,gl-mt6000|\
glinet,gl-x3000|\
glinet,gl-xe3000|\
hf,m7986r1-emmc|\
huasifei,wh3000-emmc|\
jdcloud,re-cs-05)
emmc_copy_config
;;
esac
}
platform_pre_upgrade() {
local board=$(board_name)
case "$board" in
asus,tuf-ax4200)
asus_initial_setup
;;
esac
}