Skip to content
Snippets Groups Projects
platform.sh 2.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • platform_check_image() {
    
    	# shellcheck disable=SC2155
    
    	local board_name="$(board_name)"
    
    
    	# This needs to go before generic device compatibility check
    	# because old IOWRT 6.x/7.0 images have differing model in their metadata
    	__check_image_70_65_downgrade "$image" "$board_name" || return 1
    
    	iopsys_check_image "$image" "$board_name" || return
    
    	__check_image_emmc_gpt_support "$image" "$board_name" || return
    }
    
    
    __check_image_emmc_gpt_support() {
    	local image=$1
    	local board_name=$2
    	local configuration="$(get_configuration "$image" "$board_name")" || return 1
    
    	if [ "$(get_root_device_type)" = emmc ] && ! get_image_component_ref "$image" bootloader-emmc "$configuration" > /dev/null ; then
    
    		log "ERROR: Can not downgrade to image with missing eMMC GPT support."
    		return 1
    	fi
    	return 0
    
    }
    
    # These are images using old legacy Airoha SPI NAND driver
    __check_image_70_65_downgrade() {
    	local image=$1
    	local board_name=$2
    
    	# We treat no fitting config found and legacy config (i.e. no configs at all) the same here,
    	# because it does not matter for the check for the squashfs image component, because
    	# those images did not have configs to begin with
    	# shellcheck disable=SC2155
    	local configuration="$(get_configuration "$image" "$board_name")"
    	if get_image_component_ref "$image" squashfs "$configuration"; then
    
    		log "ERROR: Downgrading to a version older than 7.1.0ALPHA3 is not supported."
    
    platform_do_upgrade() {
    	local image="$1"
    	iopsys_do_upgrade "$image" "$(board_name)" "$(platform_list_image_components "$image")"  || return
    
    }
    
    # Tell the bootloader to boot from flash "bank" $1 next time.
    # $1: bank identifier (1 or 2)
    platform_set_bootbank() {
    	iopsys_set_bootbank "$1"
    }
    
    platform_get_bootbank() {
    	iopsys_get_bootbank
    }
    
    platform_copy_config() {
    
    	log "Copy config files"
    
    	iopsys_copy_config "$image"
    
    }
    
    __get_bootloader_device() {
    	local boot_dev="u-boot"
    
    	case "$(get_root_device_type)" in
    	emmc)
    
    		boot_dev=$(get_default_loader_device)
    
    platform_list_image_components() {
    	local image=$1
    	local boot_dev
    
    	boot_dev="$(__get_bootloader_device)"
    	#		<type>			/configuration/<name>	<required>	<target device>
    	echo 	"pre_upgrade		upgrade_bundle		optional"
    	echo	"image				boot				required	boot\${next_bank_id}"
    
    	echo	"image				rootfs				optional	rootfs\${next_bank_id}"
    
    if  bootloader_upgrade_enabled 2>/dev/null "$image" "bootloader" "$boot_dev" ; then
    
      case "$(get_root_device_type)" in
        emmc)
    	echo	"bootloader			bootloader-emmc			optional	$boot_dev"
    	;;
        *)
    
    	echo	"bootloader			bootloader			optional	$boot_dev"
    
    fi
    	echo	"u_boot_env			u-boot-env			required"
    	echo	"post_upgrade		upgrade_bundle		optional"