colibri_imx6: add distroboot support
authorStefan Agner <stefan.agner@toradex.com>
Fri, 8 Feb 2019 17:42:18 +0000 (18:42 +0100)
committerStefano Babic <sbabic@denx.de>
Sat, 13 Apr 2019 18:30:09 +0000 (20:30 +0200)
Add support for distro boot. This is especially helpful for external
devices. There is a global boot command which scans a predefined
list of boot targets:
  run distro_bootcmd

As well as direct boot commands such as:
  run bootcmd_mmc1
  run bootcmd_usb
  run bootcmd_dhcp
  ...

Refer to doc/README.distro fo details.

While at it, remove the CONFIG_DRIVE_TYPES define which has not
been used and was meant to be used for multi device boot support
which is now provided by distroboot.

Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
Acked-by: Max Krummenacher <max.krummenacher@toradex.com>
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
include/configs/colibri_imx6.h

index c782b29..77f884f 100644 (file)
 
 #define CONFIG_LOADADDR                        0x12000000
 
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_DRIVE_MMC "mmc "
+#ifndef CONFIG_SPL_BUILD
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 1) \
+       func(USB, usb, 0) \
+       func(DHCP, dhcp, na)
+#include <config_distro_bootcmd.h>
+#undef BOOTENV_RUN_NET_USB_START
+#define BOOTENV_RUN_NET_USB_START ""
 #else
-#define CONFIG_DRIVE_MMC
+#define BOOTENV
 #endif
 
-#define CONFIG_DRIVE_TYPES CONFIG_DRIVE_MMC
-
 #define DFU_ALT_EMMC_INFO \
        "u-boot.imx raw 0x2 0x3ff mmcpart 0;" \
        "boot part 0 1;" \
        "fdt_high=0xffffffff\0" \
        "initrd_high=0xffffffff\0" \
        "kernel_addr_r=0x11000000\0" \
-       "ramdisk_addr_r=0x12100000\0"
+       "pxefile_addr_r=0x17100000\0" \
+       "ramdisk_addr_r=0x12100000\0" \
+       "scriptaddr=0x17000000\0"
 
 #define NFS_BOOTCMD \
        "nfsargs=ip=:::::eth0:on root=/dev/nfs rw\0" \
 
 #define FDT_FILE "imx6dl-colibri-eval-v3.dtb"
 #define CONFIG_EXTRA_ENV_SETTINGS \
+       BOOTENV \
        "bootcmd=run emmcboot ; echo ; echo emmcboot failed ; " \
-               "run nfsboot ; echo ; echo nfsboot failed ; " \
-               "usb start ;" \
+               "run distro_bootcmd ; " \
+               "usb start ; " \
                "setenv stdout serial,vga ; setenv stdin serial,usbkbd\0" \
        "boot_file=uImage\0" \
        "console=ttymxc0\0" \