summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2021-10-02 02:19:10 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2021-10-04 10:56:33 -0400
commit7c67a48332d0519c43618efd943f19d2e4bf5788 (patch)
tree98b20f656f3d79f426bde2a6f625dc605655c77b /firmware
parent75524a7eeca2a5771486762b65c7e0e5ad3e4a65 (diff)
Sansa E200v1 Bootloader attempt at enabling USB in boot loader
there is a 1MB free region that is used to load the firmware but we shouldn't need that till after a USB connection so here is my 2nd try Change-Id: I2552db3a7fba019d7e7188984432f758ddafe548
Diffstat (limited to 'firmware')
-rw-r--r--firmware/core_alloc.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/firmware/core_alloc.c b/firmware/core_alloc.c
index df1b4d3213..bf2f8e8298 100644
--- a/firmware/core_alloc.c
+++ b/firmware/core_alloc.c
@@ -8,16 +8,27 @@
/* not static so it can be discovered by core_get_data() */
struct buflib_context core_ctx;
-/* defined in linker script */
#if (CONFIG_PLATFORM & PLATFORM_NATIVE) && !defined(__PCTOOL__)
+
#if defined(IPOD_VIDEO) && !defined(BOOTLOADER)
+/* defined in linker script */
+extern unsigned char audiobuffer[];
extern unsigned char *audiobufend_lds[];
+/* pointer to end of audio buffer filled at runtime allocator_init */
unsigned char *audiobufend;
-#else /* !IPOD_VIDEO */
-extern unsigned char audiobufend[];
-#endif
+#elif defined(SANSA_E200) && defined(HAVE_BOOTLOADER_USB_MODE)
+/* defined in linker script */
+extern unsigned char freebuffer[];
+extern unsigned char freebufferend[];
+/* map linker symbol to the audiobuffer in order to use core_alloc */
+unsigned char *audiobuffer = (unsigned char *)freebuffer;
+unsigned char *audiobufend = (unsigned char *)freebufferend;
+#else /* !IPOD_VIDEO, !SANSA_E200&&BOOTLOADERUSB */
/* defined in linker script */
extern unsigned char audiobuffer[];
+extern unsigned char audiobufend[];
+#endif
+
#else /* PLATFORM_HOSTED */
static unsigned char audiobuffer[((MEMORYSIZE)*1024-768)*1024];
unsigned char *audiobufend = audiobuffer + sizeof(audiobuffer);