#!/usr/bin/env bash
#
# This script is used only to create the "legacy" image for UniElec U7623,
# suitable for upgrading from the vendor OpenWrt or from OpenWrt 19.07.
#
OUTPUT_FILE=$1
KERNEL_FILE=$2
RECOVERY_FILE=$3
ROOTFS_FILE=$4

BS=512

# These two offsets are relative to the absolute location of the kernel on the mmc
# (0xA00), so their position in the image is -2560 blocks
#
# They must be kept in sync with the default command line for U7623.
# blkdevparts=mmcblk0:3M@6M(recovery),256M@9M(root)"
#
# For upgrading from the vendor firmware, the total image must fit in its
# MTD 'firmware' partition, which is typically 36MiB.

# In the legacy image, the uImage starts at block 0xa00. Allow 4864 KiB (9728) blocks.
RECOVERY_OFFSET=9728
# The recovery image is 3MiB, or 6144 blocks.
ROOTFS_OFFSET=15872

dd bs="$BS" of="$OUTPUT_FILE" if="$KERNEL_FILE"
dd bs="$BS" of="$OUTPUT_FILE" if="$RECOVERY_FILE" seek="$RECOVERY_OFFSET"
dd bs="$BS" of="$OUTPUT_FILE" if="$ROOTFS_FILE" seek="$ROOTFS_OFFSET"
dd if=/dev/zero of="$OUTPUT_FILE" bs=128k count=1 oflag=append conv=notrunc
