From 20105bddd633e877c32192823298b763b17b9042 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Fri, 11 Jan 2019 17:08:14 +0000
Subject: [PATCH] Enable uboot from usb

---
 src/freedombone-image-hardware-setup | 35 +++++++++++++++++++---------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/freedombone-image-hardware-setup b/src/freedombone-image-hardware-setup
index 1b3f676bd..aaef7cb0a 100755
--- a/src/freedombone-image-hardware-setup
+++ b/src/freedombone-image-hardware-setup
@@ -155,12 +155,23 @@ arm_setup_boot() {
     arm_initrd_addr='0x48000000'
     arm_fdtaddr='0x47000000'
     arm_boot_script=/boot/boot.cmd
+    arm_boot_device=mmc
+    arm_boot_start=
+    arm_boot_dev=
 
     case "$dtb" in
         "am"*) arm_loadaddr='0x82000000'
                arm_initrd_addr='0x88080000'
                arm_fdtaddr='0x88000000'
                arm_boot_script=/boot/uEnv.txt
+               if [ "$EXTERNAL_DRIVE" ]; then
+                   arm_boot_dev='bootdev=0:1'
+                   arm_boot_device=usb
+                   arm_loadaddr='0x80300000'
+                   arm_initrd_addr='0x81600000'
+                   arm_fdtaddr='0x815f0000'
+                   arm_boot_start='usb start; '
+               fi
                ;;
     esac
 
@@ -169,6 +180,7 @@ arm_setup_boot() {
 mmcroot=/dev/${arm_root_device} ro
 mmcrootfstype=$fstype rootwait fixrtc
 mmcrootflags=subvol=@
+${arm_boot_dev}
 
 console=ttyO0,115200n8
 
@@ -182,14 +194,14 @@ fdtaddr=$arm_fdtaddr
 initrd_high=0xffffffff
 fdt_high=0xffffffff
 
-loadkernel=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
-loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv initrd_size \${filesize}
-loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
+loadkernel=load ${arm_boot_device} \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
+loadinitrd=load ${arm_boot_device} \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv initrd_size \${filesize}
+loadfdt=load ${arm_boot_device} \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
 
 loadfiles=run loadkernel; run loadinitrd; run loadfdt
 mmcargs=setenv bootargs init=/lib/systemd/systemd console=tty0 console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} rootflags=\${mmcrootflags} ifnames=0 slub_debug=FZP slab_nomerge page_poison=1
 
-uenvcmd=run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
+uenvcmd=${arm_boot_start}run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
 EOF
                ;;
         *) cat >> $arm_boot_script <<EOF
@@ -199,6 +211,7 @@ setenv mmcpart 1
 setenv mmcroot /dev/${arm_root_device} ro
 setenv mmcrootfstype $fstype rootwait fixrtc
 setenv mmcrootflags subvol=@
+${arm_boot_dev}
 
 setenv console ttyS0,115200n8
 
@@ -206,21 +219,21 @@ setenv kernel_file $vmlinuz
 setenv initrd_file $initRd
 setenv fdtfile $dtb
 
-setenv loadaddr 0x46000000
-setenv initrd_addr 0x48000000
-setenv fdtaddr 0x47000000
+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 loadkernel load ${arm_boot_device} \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
+setenv loadinitrd load ${arm_boot_device} \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}\\; setenv initrd_size \\\${filesize}
+setenv loadfdt load ${arm_boot_device} \${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}
+${arm_boot_start}run loadfiles; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
 EOF
             ;;
     esac
-- 
GitLab