From ee04458c7d5e2645d6ca0d45e30b34b846e32560 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Thu, 10 Jan 2019 14:03:36 +0000
Subject: [PATCH] Move flash functions to the end of boot setup

---
 src/freedombone-image-hardware-setup | 188 ++++++++++++++-------------
 1 file changed, 98 insertions(+), 90 deletions(-)

diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup
index 768749a44..2f83e99c3 100755
--- a/src/freedombone-image-hardware-setup
+++ b/src/freedombone-image-hardware-setup
@@ -38,87 +38,6 @@ enable_serial_console() {
     echo "T0:12345:respawn:/sbin/getty -L $device 115200 vt100" >> /etc/inittab
 }
 
-arm_setup_boot() {
-    dtb="$1"
-    arm_root_device='mmcblk0p2'
-    if [ "$EXTERNAL_DRIVE" ]; then
-        arm_root_device="$EXTERNAL_DRIVE"
-    fi
-
-    # Setup boot.cmd
-    if grep -q btrfs /etc/fstab ; then
-        fstype=btrfs
-    else
-        fstype=ext4
-    fi
-
-    # shellcheck disable=SC2012,SC2086
-    kernelVersion=$(ls /usr/lib/*/${dtb}.dtb | head -1 | cut -d/ -f4)
-    version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/')
-    initRd=initrd.img-$version
-    vmlinuz=vmlinuz-$version
-
-    arm_loadaddr='0x46000000'
-    arm_initrd_addr='0x48000000'
-    arm_fdtaddr='0x47000000'
-
-    case "$dtb" in
-        "am"*) arm_loadaddr='0x82000000'
-               arm_initrd_addr='0x88080000'
-               arm_fdtaddr='0x88000000'
-               ;;
-    esac
-
-    cat >> /boot/boot.cmd <<EOF
-setenv mmcdev 0
-setenv mmcpart 1
-
-setenv mmcroot /dev/${arm_root_device} ro
-setenv mmcrootfstype $fstype rootwait fixrtc
-setenv mmcrootflags subvol=@
-
-setenv console ttyS0,115200n8
-
-setenv kernel_file $vmlinuz
-setenv initrd_file $initRd
-setenv fdtfile ${dtb}.dtb
-
-setenv loadaddr $arm_loadaddr
-setenv initrd_addr $arm_initrd_addr
-setenv fdtaddr $arm_fdtaddr
-
-setenv initrd_high 0xffffffff
-setenv fdt_high 0xffffffff
-
-setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
-setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize}
-setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
-
-setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt
-setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1
-
-run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
-EOF
-
-    # Create boot.scr
-    mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
-
-    # Copy all DTBs
-    mkdir -p /boot/dtbs
-    # shellcheck disable=SC2086
-    cp /usr/lib/$kernelVersion/* /boot/dtbs
-
-    # extra boot modules
-    case "$dtb" in
-        "sun"*)
-            { echo "rtc_sunxi";
-              echo "vfat"; } >> /etc/initramfs-tools/modules
-            ;;
-        "r"*) echo "vfat" >> /etc/initramfs-tools/modules
-              ;;
-    esac
-}
-
 beaglebone_flash() {
     # allow flash-kernel to work without valid /proc contents
     # ** this doesn't *really* work, since there are too many checks
@@ -207,21 +126,110 @@ setup_flash_kernel() {
     $INSTALL_PACKAGES flash-kernel
 }
 
+arm_setup_boot() {
+    dtb="$1"
+    arm_root_device='mmcblk0p2'
+    if [ "$EXTERNAL_DRIVE" ]; then
+        arm_root_device="$EXTERNAL_DRIVE"
+    fi
+
+    arm_flash_name=
+    if [ "$2" ]; then
+        arm_flash_name="$2"
+    fi
+
+    # Setup boot.cmd
+    if grep -q btrfs /etc/fstab ; then
+        fstype=btrfs
+    else
+        fstype=ext4
+    fi
+
+    # shellcheck disable=SC2012,SC2086
+    kernelVersion=$(ls /usr/lib/*/${dtb}.dtb | head -1 | cut -d/ -f4)
+    version=$(echo "$kernelVersion" | sed 's/linux-image-\(.*\)/\1/')
+    initRd=initrd.img-$version
+    vmlinuz=vmlinuz-$version
+
+    arm_loadaddr='0x46000000'
+    arm_initrd_addr='0x48000000'
+    arm_fdtaddr='0x47000000'
+
+    case "$dtb" in
+        "am"*) arm_loadaddr='0x82000000'
+               arm_initrd_addr='0x88080000'
+               arm_fdtaddr='0x88000000'
+               ;;
+    esac
+
+    cat >> /boot/boot.cmd <<EOF
+setenv mmcdev 0
+setenv mmcpart 1
+
+setenv mmcroot /dev/${arm_root_device} ro
+setenv mmcrootfstype $fstype rootwait fixrtc
+setenv mmcrootflags subvol=@
+
+setenv console ttyS0,115200n8
+
+setenv kernel_file $vmlinuz
+setenv initrd_file $initRd
+setenv fdtfile ${dtb}.dtb
+
+setenv loadaddr $arm_loadaddr
+setenv initrd_addr $arm_initrd_addr
+setenv fdtaddr $arm_fdtaddr
+
+setenv initrd_high 0xffffffff
+setenv fdt_high 0xffffffff
+
+setenv loadkernel load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
+setenv loadinitrd load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize}
+setenv loadfdt load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
+
+setenv loadfiles run loadkernel\\; run loadinitrd\\; run loadfdt
+setenv mmcargs setenv bootargs init=/lib/systemd/systemd console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1
+
+run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
+EOF
+
+    # Create boot.scr
+    mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
+
+    # Copy all DTBs
+    mkdir -p /boot/dtbs
+    # shellcheck disable=SC2086
+    cp /usr/lib/$kernelVersion/* /boot/dtbs
+
+    # extra boot modules
+    case "$dtb" in
+        "sun"*)
+            { echo "rtc_sunxi";
+              echo "vfat"; } >> /etc/initramfs-tools/modules
+            ;;
+        "r"*) echo "vfat" >> /etc/initramfs-tools/modules
+              ;;
+    esac
+
+    if [ "$arm_flash_name" ]; then
+        case "$arm_flash_name" in
+            "TI "*)
+                beaglebone_flash "$arm_flash_name"
+                beaglebone_repack_kernel "${dtb}"
+                ;;
+        esac
+    fi
+}
+
 case "$MACHINE" in
     beagleboneblack)
-        arm_setup_boot am335x-boneblack
-        beaglebone_flash "TI AM335x BeagleBone Black"
-        beaglebone_repack_kernel am335x-boneblack
+        arm_setup_boot am335x-boneblack "TI AM335x BeagleBone Black"
         ;;
     beaglebonegreen)
-        arm_setup_boot am335x-bonegreen
-        beaglebone_flash "TI AM335x BeagleBone Green"
-        beaglebone_repack_kernel am335x-bonegreen
+        arm_setup_boot am335x-bonegreen "TI AM335x BeagleBone Green"
         ;;
     beaglex15)
-        arm_setup_boot am57xx-beagle-x15
-        beaglebone_flash "TI AM5728 BeagleBoard-X15"
-        beaglebone_repack_kernel am57xx-beagle-x15
+        arm_setup_boot am57xx-beagle-x15 "TI AM5728 BeagleBoard-X15"
         ;;
     cubietruck)
         arm_setup_boot sun7i-a20-cubietruck
-- 
GitLab