_sunxi_devices_list="
sun50i-a64-pine64-plus
sun50i-h5-orangepi-pc2
"

sunxi64_flash_cap="bootloader kernel"

sunxi64_is_available(){
	for i in $_sunxi_devices_list
	do
		if [ "$DEVICE_NAME" = "$i" ]; then
			return 0
		fi
	done
	return 1
}

sunxi64_do_flash_bootloader() {
	if [ -e "${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/u-boot-$DEVICE_NAME" ]; then
		if [ ! "$SUNXI_FIRMWARE_DEVICE" ]; then
			SUNXI_FIRMWARE_DEVICE=/dev/mmcblk0 # fallback
		fi
		if [ "$(echo "$(basename $SUNXI_FIRMWARE_DEVICE)" | cut -c 1-6)" = "spidev" ]; then
			echo "SPI Flashing is not still supported. Sorry." >&2
			return 1
		elif [ "$(echo "$(basename $SUNXI_FIRMWARE_DEVICE)" | cut -c 1-6)" = "mmcblk" ]; then
			dd if="${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/u-boot-$DEVICE_NAME/u-boot-sunxi-with-spl.bin" of="$SUNXI_FIRMWARE_DEVICE" bs=1024 seek=8
		else
			echo "Unsupported firmware device: $SUNXI_FIRMWARE_DEVICE" >&2
		fi
	else
		echo "Cannot find suitable U-Boot." >&2
	fi
}

sunxi64_do_flash_kernel() {
	mount_point=$(mktemp -d)
	if [ ! "$SUNXI_KERNEL_DEVICE" ]; then
		SUNXI_KERNEL_DEVICE=/dev/mmcblk0p1
	fi
	if [ -d "$SUNXI_KERNEL_DEVICE" ]; then
		# should be a /boot
		mount -o bind "$SUNXI_KERNEL_DEVICE" $mount_point
	else
		mount "$SUNXI_KERNEL_DEVICE" $mount_point
	fi
	if [ $? -gt 0 ]; then
		echo "Mount kernel device failed." >&2
		exit 1
	fi
	cp ${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/linux-kernel-sunxi64/Image $mount_point/
	mkdir -p ${TEST_ROOT}/usr/lib/modules
	cp -r ${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/linux-kernel-sunxi64/modules/* ${TEST_ROOT}/usr/lib/modules/
	if [ -e ${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/dtb-$DEVICE_NAME ]; then
		cp ${TEST_ROOT}/usr/lib/aosc-os-arm64-sunxi-boot/dtb-$DEVICE_NAME/dtb.dtb $mount_point/
	else
		echo "Suitable Device Tree binary not found, not updating it." >&2
	fi
	umount $mount_point
	rm -r $mount_point
}
