diff --git a/firmware/common/rb-loader.c b/firmware/common/rb-loader.c index e3fc90342c..430ed6ec7b 100644 --- a/firmware/common/rb-loader.c +++ b/firmware/common/rb-loader.c @@ -106,7 +106,7 @@ int load_firmware(unsigned char* buf, const char* firmware, int buffer_size) * 0 is the default boot volume, it is not checked here * if found /rockbox_main. and firmware * has a bootdata region this firmware will be loaded */ - for (unsigned int i = NUM_VOLUMES - 1; i > 0 && ret < 0; i--) + for (int i = NUM_VOLUMES - 1; i >= MULTIBOOT_MIN_VOLUME && ret < 0; i--) { if (get_redirect_dir(filename, sizeof(filename), i, BOOTDIR, firmware) > 0) diff --git a/firmware/export/config.h b/firmware/export/config.h index 7002b2a3c5..6465bdcb0e 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -869,6 +869,12 @@ Lyre prototype 1 */ #define HAVE_MULTIBOOT #endif +/* The lowest numbered volume to read a multiboot redirect from; default is to + * allow any volume but some targets may wish to exclude the internal drive. */ +#if defined(HAVE_MULTIBOOT) && !defined(MULTIBOOT_MIN_VOLUME) +# define MULTIBOOT_MIN_VOLUME 0 +#endif + #ifndef NUM_DRIVES #define NUM_DRIVES 1 #endif diff --git a/firmware/export/config/sansaclipplus.h b/firmware/export/config/sansaclipplus.h index e0df0c28c3..e78063ef02 100644 --- a/firmware/export/config/sansaclipplus.h +++ b/firmware/export/config/sansaclipplus.h @@ -11,6 +11,7 @@ #define HAVE_BOOTDATA /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.clip+" +#define MULTIBOOT_MIN_VOLUME 1 #define HAVE_MULTIDRIVE #define NUM_DRIVES 2 diff --git a/firmware/export/config/sansaclipzip.h b/firmware/export/config/sansaclipzip.h index 6afe6e129e..d8b18e1a18 100644 --- a/firmware/export/config/sansaclipzip.h +++ b/firmware/export/config/sansaclipzip.h @@ -11,6 +11,7 @@ #define HAVE_BOOTDATA /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.clipzip" +#define MULTIBOOT_MIN_VOLUME 1 #define HAVE_MULTIDRIVE #define NUM_DRIVES 2 diff --git a/firmware/export/config/sansae200.h b/firmware/export/config/sansae200.h index 59e531241f..6bb2df9bc8 100644 --- a/firmware/export/config/sansae200.h +++ b/firmware/export/config/sansae200.h @@ -13,6 +13,7 @@ /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.e200" +#define MULTIBOOT_MIN_VOLUME 1 /* define this if you have recording possibility */ #define HAVE_RECORDING diff --git a/firmware/export/config/sansafuze.h b/firmware/export/config/sansafuze.h index b72f5b5198..e8f7157deb 100644 --- a/firmware/export/config/sansafuze.h +++ b/firmware/export/config/sansafuze.h @@ -10,6 +10,7 @@ /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.fuze" +#define MULTIBOOT_MIN_VOLUME 1 #define HW_SAMPR_CAPS SAMPR_CAP_ALL_96 diff --git a/firmware/export/config/sansafuzeplus.h b/firmware/export/config/sansafuzeplus.h index a853cb13b5..9b91e114bc 100644 --- a/firmware/export/config/sansafuzeplus.h +++ b/firmware/export/config/sansafuzeplus.h @@ -12,6 +12,7 @@ #define HAVE_BOOTDATA /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.fuze+" +#define MULTIBOOT_MIN_VOLUME 1 // HW can do it but we don't have the IRAM for mix buffers //#define HW_SAMPR_CAPS SAMPR_CAP_ALL_192 diff --git a/firmware/export/config/sansafuzev2.h b/firmware/export/config/sansafuzev2.h index fc2ff68257..96d3b2deee 100644 --- a/firmware/export/config/sansafuzev2.h +++ b/firmware/export/config/sansafuzev2.h @@ -10,6 +10,7 @@ /* define boot redirect file name allows booting from external drives */ #define BOOT_REDIR "rockbox_main.fuze2" +#define MULTIBOOT_MIN_VOLUME 1 #define HW_SAMPR_CAPS SAMPR_CAP_ALL_96