diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index 9ecaf38..44047cf 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -314,6 +314,10 @@ #define BOOTENV_BOOT_TARGETS \ "boot_targets=" BOOT_TARGET_DEVICES(BOOTENV_DEV_NAME) "\0" +#ifndef BOOTENV_BOOTCMD_PRE_BOOT +#define BOOTENV_BOOTCMD_PRE_BOOT +#endif + #define BOOTENV_DEV(devtypeu, devtypel, instance) \ BOOTENV_DEV_##devtypeu(devtypeu, devtypel, instance) #define BOOTENV \ @@ -384,7 +388,9 @@ \ BOOT_TARGET_DEVICES(BOOTENV_DEV) \ \ - "distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \ + "distro_bootcmd=" \ + BOOTENV_SET_SCSI_NEED_INIT \ + BOOTENV_BOOTCMD_PRE_BOOT \ "for target in ${boot_targets}; do " \ "run bootcmd_${target}; " \ "done\0" diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h index 8363414..b0e6a2a 100644 --- a/include/configs/sunxi-common.h +++ b/include/configs/sunxi-common.h @@ -448,6 +448,24 @@ extern int soft_i2c_gpio_scl; func(PXE, pxe, na) \ func(DHCP, dhcp, na) +#if CONFIG_MMC_SUNXI_SLOT_EXTRA == 2 + +#define BOOT_TARGET_DEVICES_MMC_SWAP(func) \ + func(FEL, fel, na) \ + BOOT_TARGET_DEVICES_MMC_EXTRA(func) \ + BOOT_TARGET_DEVICES_MMC(func) \ + BOOT_TARGET_DEVICES_SCSI(func) \ + BOOT_TARGET_DEVICES_USB(func) \ + func(PXE, pxe, na) \ + func(DHCP, dhcp, na) + +#define BOOTENV_BOOTCMD_PRE_BOOT \ + "if test ${bootdev} = sdc2; then " \ + " boot_targets=" BOOT_TARGET_DEVICES_MMC_SWAP(BOOTENV_DEV_NAME) "; " \ + "fi; " + +#endif + #ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT #define BOOTCMD_SUNXI_COMPAT \ "bootcmd_sunxi_compat=" \