mediatek: mt7623: make gen_banana_pi_img.sh more generic
authorDavid Woodhouse <dwmw2@infradead.org>
Tue, 21 Jul 2020 18:07:47 +0000 (19:07 +0100)
committerChuanhong Guo <gch981213@gmail.com>
Sun, 26 Jul 2020 09:08:21 +0000 (17:08 +0800)
This actually covers fairly much all the MediaTek platforms; they
only have different images because they don't include the preloader
and U-Boot, and rely on preinstalled stuff from the vendor.

So this script can slowly take over the world as we complete the
support for various other platforms, starting with UniElec U7623…

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
target/linux/mediatek/image/gen_banana_pi_img.sh
target/linux/mediatek/image/mt7623.mk

index d46e92fa4255d229fce77957b629ba687d747614..611a17edff2ef2f0afa2bf92d25dd657b57488a2 100755 (executable)
@@ -79,7 +79,7 @@
 # with the preloader loading 512KiB of U-Boot starting at 0x50000.
 
 usage() {
-    echo "SYNTAX: $0 sd <file> <preloader image> <u-boot image> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
+    echo "SYNTAX: $0 sd <file> <preloader image> <u-boot image> <u-boot offset> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
     echo " OR:    $0 emmc <file> <preloader image>"
     exit 1
 }
@@ -96,20 +96,21 @@ BRLYT="BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\
 
 case $1 in
  sd)
-       [ $# -eq 8 ] || usage
+       [ $# -eq 9 ] || usage
        OUTPUT="$2"
        PRELOADER="$3"
        UBOOT="$4"
-       BOOTFS="$5"
-       ROOTFS="$6"
-       BOOTFSSIZE="$7"
-       ROOTFSSIZE="$8"
+       UBOOTOFS="$5"
+       BOOTFS="$6"
+       ROOTFS="$7"
+       BOOTFSSIZE="$8"
+       ROOTFSSIZE="$9"
 
        head=4
        sect=63
 
        set $(ptgen -o $OUTPUT -h $head -s $sect -a 0 -l 1024 \
-                   -t 41 -p 512k@320k \
+                   -t 41 -p 512k@${UBOOTOFS} \
                    -t c -p ${BOOTFSSIZE}M \
                    -t 83 -p ${ROOTFSSIZE}M )
 
@@ -123,7 +124,11 @@ case $1 in
        echo -en "${SDMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0   conv=notrunc
        echo -en "${BRLYT}"      | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc
 
-       dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc
+       # For eMMC-only boards like U7623 the preloader doesn't need to be included in the
+       # main image as it's only ever needed in the eMMC boot partition.
+       if [ -r ${PRELOADER} ]; then
+           dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc
+       fi
        dd bs=512  if="${UBOOT}"     of="${OUTPUT}" seek="${UBOOT_OFFSET}"     conv=notrunc
        dd bs=512  if="${BOOTFS}"    of="${OUTPUT}" seek="${BOOTFS_OFFSET}"    conv=notrunc
        dd bs=512  if="${ROOTFS}"    of="${OUTPUT}" seek="${ROOTFS_OFFSET}"    conv=notrunc
index ef14969029bde11c9ce45ff63ce68f234cef1286..1061a0d281525b0d7e8c4877d6833428b8321fb8 100644 (file)
@@ -1,5 +1,5 @@
 KERNEL_LOADADDR := 0x80008000
-DEVICE_VARS += UBOOT_TARGET
+DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE
 
 ifneq ($(CONFIG_BANANA_PI_BOOT_PARTSIZE),)
 BOOTFS_BLOCK_SIZE := 1024
@@ -10,16 +10,18 @@ define Build/banana-pi-sdcard
        rm -f $@.boot
        mkfs.fat -C $@.boot $(BOOTFS_BLOCKS)
 
-       ./gen_banana_pi_img.sh emmc $@.emmc \
-               $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin
-
-       mkenvimage -s 0x2000 -o $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env $(UBOOT_TARGET)-uEnv.txt
+       if [ -r $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin ]; then \
+               ./gen_banana_pi_img.sh emmc $@.emmc \
+                       $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin; \
+               mcopy -i $@.boot $@.emmc ::eMMCboot.bin; \
+       fi
+       mkenvimage -s $(UBOOT_ENVSIZE) -o $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env $(UBOOT_TARGET)-uEnv.txt
        mcopy -i $@.boot $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env ::uboot.env
        mcopy -i $@.boot $(IMAGE_KERNEL) ::uImage
-       mcopy -i $@.boot $@.emmc ::eMMCboot.bin
        ./gen_banana_pi_img.sh sd $@ \
                $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin \
-               $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot.bin \
+               $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot*.bin \
+               $(UBOOT_OFFSET) \
                $@.boot \
                $(IMAGE_ROOTFS) \
                $(CONFIG_BANANA_PI_BOOT_PARTSIZE) \
@@ -41,6 +43,8 @@ define Device/bpi_bananapi-r2
   DEVICE_DTS := mt7623n-bananapi-bpi-r2
   DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
        mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
+  UBOOT_ENVSIZE := 0x2000
+  UBOOT_OFFSET := 320k
   UBOOT_TARGET := mt7623n_bpir2
   IMAGES := img.gz
   IMAGE/img.gz := banana-pi-sdcard | gzip | append-metadata