From 7243f6b343a88fa8f9929345edc80a81d1f6a3fe Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Mon, 7 Mar 2022 11:09:30 +0000 Subject: x1000: Add multiboot support Enables multiboot for the FiiO M3K, Shanling Q1, and Eros Q native port. Note this requires an up-to-date Rockbox _and_ bootloader. Usage instructions will (eventually) be found on the wiki: https://www.rockbox.org/wiki/MultibootBootloader Change-Id: Ia2da1ad6ef611e499d2fbafa93838387bc1023ba --- firmware/export/config/erosqnative.h | 5 +++++ firmware/export/config/fiiom3k.h | 5 +++++ firmware/export/config/shanlingq1.h | 5 +++++ firmware/target/mips/ingenic_x1000/crt0.S | 6 ++++++ 4 files changed, 21 insertions(+) diff --git a/firmware/export/config/erosqnative.h b/firmware/export/config/erosqnative.h index 3b83d52c0e..c71f7ade49 100644 --- a/firmware/export/config/erosqnative.h +++ b/firmware/export/config/erosqnative.h @@ -78,6 +78,7 @@ #define HAVE_HOTSWAP #define HAVE_HOTSWAP_STORAGE_AS_MAIN #define HAVE_MULTIDRIVE +#define HAVE_MULTIVOLUME #define NUM_DRIVES 1 #define STORAGE_WANTS_ALIGN #define STORAGE_NEEDS_BOUNCE_BUFFER @@ -103,6 +104,10 @@ #define CURRENT_BACKLIGHT 180 #define CURRENT_MAX_CHG 500 // bursts higher if needed +/* Multiboot */ +#define HAVE_BOOTDATA +#define BOOT_REDIR "rockbox_main.aigo_erosqn" + /* USB support */ #ifndef SIMULATOR #define CONFIG_USBOTG USBOTG_DESIGNWARE diff --git a/firmware/export/config/fiiom3k.h b/firmware/export/config/fiiom3k.h index 27aefc374f..ab3e274243 100644 --- a/firmware/export/config/fiiom3k.h +++ b/firmware/export/config/fiiom3k.h @@ -84,6 +84,7 @@ #define HAVE_HOTSWAP #define HAVE_HOTSWAP_STORAGE_AS_MAIN #define HAVE_MULTIDRIVE +#define HAVE_MULTIVOLUME #define NUM_DRIVES 1 #define STORAGE_WANTS_ALIGN #define STORAGE_NEEDS_BOUNCE_BUFFER @@ -109,6 +110,10 @@ #define BATTERY_CAPACITY_INC 0 #define BATTERY_TYPES_COUNT 1 +/* Multiboot */ +#define HAVE_BOOTDATA +#define BOOT_REDIR "rockbox_main.fiio_m3k" + /* USB support */ #ifndef SIMULATOR #define CONFIG_USBOTG USBOTG_DESIGNWARE diff --git a/firmware/export/config/shanlingq1.h b/firmware/export/config/shanlingq1.h index 222427716f..6f5365a97e 100644 --- a/firmware/export/config/shanlingq1.h +++ b/firmware/export/config/shanlingq1.h @@ -67,6 +67,7 @@ #define HAVE_HOTSWAP #define HAVE_HOTSWAP_STORAGE_AS_MAIN #define HAVE_MULTIDRIVE +#define HAVE_MULTIVOLUME #define NUM_DRIVES 1 #define STORAGE_WANTS_ALIGN #define STORAGE_NEEDS_BOUNCE_BUFFER @@ -94,6 +95,10 @@ #define BATTERY_CAPACITY_INC 0 #define BATTERY_TYPES_COUNT 1 +/* Multiboot */ +#define HAVE_BOOTDATA +#define BOOT_REDIR "rockbox_main.shanling_q1" + /* USB support */ #ifndef SIMULATOR #define CONFIG_USBOTG USBOTG_DESIGNWARE diff --git a/firmware/target/mips/ingenic_x1000/crt0.S b/firmware/target/mips/ingenic_x1000/crt0.S index fbac12861d..d079b01e2a 100644 --- a/firmware/target/mips/ingenic_x1000/crt0.S +++ b/firmware/target/mips/ingenic_x1000/crt0.S @@ -21,6 +21,7 @@ #include "config.h" #include "mips.h" +#include "bootdata.h" .text .extern main @@ -48,6 +49,11 @@ _header: .word _loadaddress .ascii "ENDH" /* end of header structure */ +#ifndef BOOTLOADER + /* Multiboot support header; this is not part of the above header. */ + put_boot_data_here +#endif + _realstart: /* Copy IRAM from BSS to low memory. */ la a0, _iramcopy -- cgit v1.2.3