diff --git a/airoha/image/u-boot-script b/airoha/image/u-boot-script index c412b11755835b049627d1251f5cace31806b1c2..81b147bbf89ed5dc8cd726aee3e897ab2f645aa6 100644 --- a/airoha/image/u-boot-script +++ b/airoha/image/u-boot-script @@ -36,8 +36,38 @@ setenv __script_emmc_write_gpt ' env delete gpt_entry_start gpt_alt_start fileaddr filesize tmp; run do_report_result; '; +setenv __script_emmc_clear_part ' + test $? -eq 0 && part size mmc 0 ${part_name} part_size; + test $? -eq 0 && setexpr mw_size ${part_size} * 0x80; + test $? -eq 0 && mw.l ${loadaddr} 0 ${mw_size}; + test $? -eq 0 && write mmc 0#${part_name} ${loadaddr} 0 ${part_size}; + env set result $?; + echo; + echo -n "Clear partition ${part_name} -- "; + env delete part_name part_size mw_size; + run do_report_result; +'; +# This command by design should delete all environment variables added by +# this script during its sourcing. All variables, including this one... +setenv __script_cleanup_env ' + echo Cleanup...; + env delete __script_get_sysupgrade_cfg_name __script_emmc_write_gpt __script_emmc_clear_part; + env delete __script_emmc_write_sysupgrade __script_emmc_write_production; + env delete __script_cleanup_env; +'; +# Used by u-boot 'update_itb_force_all_emmc' command +setenv __script_emmc_write_sysupgrade ' + run __script_emmc_write_gpt update_itb_prepare do_update_bank2 do_update_bank1 do_update_uboot_img do_update_uboot_env clear_overlay2 clear_overlay1; + test $? -eq 0 && run __script_cleanup_env; + test $? -eq 0 && run update_itb_reset_active_image; +'; +# Used by production image. This command can't "run __script_emmc_write_sysupgrade" +# because __script_cleanup_env by design should remove all script variables (including +# __script_emmc_clear_part one). setenv __script_emmc_write_production ' run __script_emmc_write_gpt update_itb_prepare do_update_bank2 do_update_bank1 do_update_uboot_img do_update_uboot_env clear_overlay2 clear_overlay1; - test $? -eq 0 && env delete __script_get_sysupgrade_cfg_name __script_emmc_write_gpt __script_emmc_write_production; + test $? -eq 0 && setenv part_name art && run __script_emmc_clear_part; + test $? -eq 0 && setenv part_name boarddata && run __script_emmc_clear_part; + test $? -eq 0 && run __script_cleanup_env; test $? -eq 0 && run update_itb_reset_active_image; ';