summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2022-03-07 11:09:30 +0000
committerAidan MacDonald <amachronic@protonmail.com>2022-03-27 10:35:02 -0400
commit7243f6b343a88fa8f9929345edc80a81d1f6a3fe (patch)
tree1197004fab63951d625d05823a5079cbd50e1e9f
parentbcbb5a8b00770ac0d2794e59876d8187ccfea6af (diff)
downloadrockbox-7243f6b343a88fa8f9929345edc80a81d1f6a3fe.tar.gz
rockbox-7243f6b343a88fa8f9929345edc80a81d1f6a3fe.zip
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
-rw-r--r--firmware/export/config/erosqnative.h5
-rw-r--r--firmware/export/config/fiiom3k.h5
-rw-r--r--firmware/export/config/shanlingq1.h5
-rw-r--r--firmware/target/mips/ingenic_x1000/crt0.S6
4 files changed, 21 insertions, 0 deletions
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