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 } platform_check_image() { return 0; } platform_pre_upgrade() { case "$(board_name)" in 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,wax218|\ netgear,wax620|\ netgear,wax630|\ zbtlink,zbt-z800ax) 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) 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) kernelname="0:HLOS" rootfsname="rootfs" mmc_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" ;; 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" ;; 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 kernelname="0:HLOS" rootfsname="rootfs" mmc_do_upgrade "$1" else kernelname="0:HLOS_1" rootfsname="rootfs_1" mmc_do_upgrade "$1" fi ;; *) default_do_upgrade "$1" ;; esac }