35_turris-omnia_uboot-env 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # This must be sourced after 30_uboot-envtools
  2. . /lib/functions.sh
  3. board=$(board_name)
  4. case "$board" in
  5. cznic,turris-omnia)
  6. # Do nothing if this is not the old U-Boot
  7. grep -q 'U-Boot 2015.10-rc2' /dev/mtd0 || exit 0
  8. # Do nothing if we already have distro_bootcmd
  9. fw_printenv distro_bootcmd >/dev/null 2>/dev/null && exit 0
  10. # Set the complete environment, since U-Boot does not merge the default environment from its own image!
  11. fw_setenv -s - <<-"EOF"
  12. baudrate 115200
  13. bootdelay 3
  14. ethact neta2
  15. fdt_high 0x10000000
  16. initrd_high 0x10000000
  17. bootargs earlyprintk console=ttyS0,115200 rootfstype=btrfs rootdelay=2 root=b301 rootflags=subvol=@,commit=5 rw
  18. bootcmd i2c dev 1; i2c read 0x2a 0x9 1 0x00FFFFF0; setexpr.b rescue *0x00FFFFF0; if test $rescue -ge 1; then echo BOOT RESCUE; run rescueboot; else echo BOOT eMMC FS; run mmcboot; setenv bootargs; run distro_bootcmd; fi
  19. rescueboot i2c mw 0x2a.1 0x3 0x1c 1; i2c mw 0x2a.1 0x4 0x1c 1; mw.l 0x01000000 0x00ff000c; i2c write 0x01000000 0x2a.1 0x5 4 -s; setenv bootargs "$bootargs omniarescue=$rescue"; sf probe; sf read 0x1000000 0x100000 0x700000; bootz 0x1000000
  20. mmcboot btrload mmc 0 ${kernel_addr_r} boot/zImage @ && btrload mmc 0 ${fdt_addr_r} boot/dtb @ && setenv bootargs ${bootargs} cfg80211.freg=${regdomain} && bootz ${kernel_addr_r} - ${fdt_addr_r}
  21. kernel_addr_r 0x1000000
  22. scriptaddr 0x1800000
  23. fdt_addr_r 0x2000000
  24. boot_targets mmc0 scsi0
  25. boot_prefixes / /boot/
  26. boot_scripts boot.scr
  27. distro_bootcmd scsi_need_init=true; for target in ${boot_targets}; do run bootcmd_${target}; done
  28. bootcmd_mmc0 devnum=0; run mmc_boot
  29. mmc_boot if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
  30. bootcmd_scsi0 devnum=0; run scsi_boot
  31. scsi_boot run scsi_init; if scsi dev ${devnum}; then devtype=scsi; run scan_dev_for_boot_part; fi
  32. scsi_init if ${scsi_need_init}; then scsi_need_init=false; scsi scan; fi
  33. scan_dev_for_boot_part for distro_bootpart in 1; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
  34. scan_dev_for_boot echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_scripts; done
  35. scan_dev_for_scripts for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
  36. boot_a_script load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
  37. EOF
  38. ;;
  39. esac
  40. exit 0