| echo "Gateworks Ventana OpenWrt Boot script v1.02" |
| |
| # set some defaults |
| # set some defaults |
| test -n "$fs" || fs=ext2 |
| test -n "$disk" || disk=0 |
| setenv nextcon 0 |
| setenv bootargs console=${console},${baudrate} |
| setenv loadaddr 10800000 |
| setenv fdt_addr 18000000 |
| |
| # detect dtype by looking for kernel on media the bootloader |
| # has mounted (in order of preference: usb/mmc/sata) |
| # |
| # This assumes the bootloader has already started the respective subsystem |
| # or mounted the filesystem if appropriate to get to this bootscript |
| # |
| # To Speed up boot set dtype manually |
| if test -n "$dtype" ; then |
| echo "Using dtype from env: $dtype" |
| else |
| echo "Detecting boot device (dtype)..." |
| if ${fs}load usb ${disk}:1 ${loadaddr} ${bootdir}/uImage ; then |
| dtype=usb |
| elif ${fs}load mmc ${disk}:1 ${loadaddr} ${bootdir}/uImage ; then |
| dtype=mmc |
| elif ${fs}load sata ${disk}:1 ${loadaddr} ${bootdir}/uImage ; then |
| dtype=sata |
| elif ubifsload ${loadaddr} ${bootdir}/uImage ; then |
| dtype=nand |
| fi |
| echo "detected dtype:$dtype" |
| fi |
| |
| echo "Booting from ${dtype}..." |
| if itest.s "x${dtype}" == "xnand" ; then |
| # fix partition name |
| # OpenWrt kernel bug prevents partition name of 'rootfs' from booting |
| # instead name the partition ubi which is what is looked for by |
| # procd sysupgrade |
| mtdparts del rootfs && mtdparts add nand0 - ubi |
| echo "mtdparts:${mtdparts}" |
| setenv fsload ubifsload |
| setenv root "ubi0:ubi ubi.mtd=2 rootfstype=squashfs,ubifs" |
| else |
| setenv fsload "${fs}load ${dtype} ${disk}:1" |
| part uuid ${dtype} ${disk}:1 uuid |
| if test -z "${uuid}"; then |
| # fallback to bootdev |
| if test -n "$bootdev" ; then |
| echo "Using bootdev from env: $bootdev" |
| else |
| if itest.s "x${dtype}" == "xmmc" ; then |
| bootdev=mmcblk0p1 |
| else |
| bootdev=sda1 |
| fi |
| fi |
| setenv root "root=/dev/${bootdev}" |
| else |
| setenv root "root=PARTUUID=${uuid}" |
| fi |
| setenv root "$root rootfstype=${fs} rootwait rw" |
| fi |
| |
| setenv bootargs "${bootargs}" "${root}" "${video}" "${extra}" |
| if ${fsload} ${loadaddr} ${bootdir}/uImage; then |
| if ${fsload} ${fdt_addr} ${bootdir}/${fdt_file}; then |
| echo Loaded DTB from ${bootdir}/${fdt_file} |
| test -n "$fixfdt" && run fixfdt |
| bootm ${loadaddr} - ${fdt_addr} |
| elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file1}; then |
| echo Loaded DTB from ${bootdir}/${fdt_file1} |
| test -n "$fixfdt" && run fixfdt |
| bootm ${loadaddr} - ${fdt_addr} |
| elif ${fsload} ${fdt_addr} ${bootdir}/${fdt_file2}; then |
| echo Loaded DTB from ${bootdir}/${fdt_file2} |
| test -n "$fixfdt" && run fixfdt |
| bootm ${loadaddr} - ${fdt_addr} |
| else |
| echo "Error loading device-tree" |
| fi |
| else |
| echo "Error loading kernel image" |
| fi |