platform_do_upgrade() {                 
	local board=$(board_name)
	case "$board" in
	"unielec,u7623"*)
		#Keep the persisten random mac address (if it exists)
		mkdir -p /tmp/recovery
		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
		[ -f "/tmp/recovery/mac_addr" ] && \
			mv -f /tmp/recovery/mac_addr /tmp/
		umount /tmp/recovery

		#1310720 is the offset in bytes from the start of eMMC and to
		#the location of the kernel (2560 512 byte sectors)
		get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync

		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
		[ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery
		sync
		umount /tmp/recovery
		;;
	*)
		default_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-r2|\
	"unielec,u7623"*)
		[ "$magic" != "27051956" ] && {   
			echo "Invalid image type."
			return 1                                     
		}                                                    
		return 0                                             
		;;                                                   

	*)                                                           
		echo "Sysupgrade is not supported on your board yet."
		return 1                                             
		;;                                
	esac                                      

	return 0                                                                                         
}

platform_copy_config_emmc() {
	mkdir -p /recovery
	mount -o rw,noatime /dev/mmcblk0p1 /recovery
	cp -af "$UPGRADE_BACKUP" "/recovery/$BACKUP_FILE"
	sync
	umount /recovery
}

platform_copy_config() {
	case "$(board_name)" in
	"unielec,u7623"*)
		platform_copy_config_emmc
		;;
	esac
}
