summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Artiukhin <bahusdrive@gmail.com>2024-03-29 14:43:28 +0200
committerRoman Artiukhin <bahusdrive@gmail.com>2024-03-30 09:10:45 +0200
commit777098fca9765900202d8d9c1698c57f136c7338 (patch)
treecabb69623ea72b8f56ac3c9025fe58f44498a1bc
parent52e22b253d7b7d2419a9fb22e2f40c5aeeaa821d (diff)
downloadrockbox-777098fca9765900202d8d9c1698c57f136c7338.tar.gz
rockbox-777098fca9765900202d8d9c1698c57f136c7338.zip
usb: fix usb_storage_disconnect shouldn't call core_free for static buffer
Fixes Sansa e200v2 bootloader doesn't boot after 3301c5a Change-Id: I8f4780961203beb18863f5d2b1f1e61857c4fe27
-rw-r--r--firmware/usbstack/usb_storage.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index 714af9d535..81d90d01db 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -425,17 +425,20 @@ int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size)
425 425
426 return (dest - orig_dest); 426 return (dest - orig_dest);
427} 427}
428 428#if (CONFIG_CPU == IMX31L || defined(CPU_TCC780X) || \
429static int usb_handle; 429 CONFIG_CPU == S5L8702 || CONFIG_CPU == S5L8701 || CONFIG_CPU == AS3525v2 || \
430 defined(BOOTLOADER) || CONFIG_CPU == DM320) && !defined(CPU_PP502x)
431#define USB_STATIC_ALLOC
432#else
433static int usb_handle = 0;
434#endif
430void usb_storage_init_connection(void) 435void usb_storage_init_connection(void)
431{ 436{
432 logf("ums: set config"); 437 logf("ums: set config");
433 /* prime rx endpoint. We only need room for commands */ 438 /* prime rx endpoint. We only need room for commands */
434 state = WAITING_FOR_COMMAND; 439 state = WAITING_FOR_COMMAND;
435 440
436#if (CONFIG_CPU == IMX31L || defined(CPU_TCC780X) || \ 441#ifdef USB_STATIC_ALLOC
437 CONFIG_CPU == S5L8702 || CONFIG_CPU == S5L8701 || CONFIG_CPU == AS3525v2 || \
438 defined(BOOTLOADER) || CONFIG_CPU == DM320) && !defined(CPU_PP502x)
439 static unsigned char _cbw_buffer[MAX_CBW_SIZE] 442 static unsigned char _cbw_buffer[MAX_CBW_SIZE]
440 USB_DEVBSS_ATTR __attribute__((aligned(32))); 443 USB_DEVBSS_ATTR __attribute__((aligned(32)));
441 cbw_buffer = (void *)_cbw_buffer; 444 cbw_buffer = (void *)_cbw_buffer;
@@ -480,7 +483,9 @@ void usb_storage_init_connection(void)
480 483
481void usb_storage_disconnect(void) 484void usb_storage_disconnect(void)
482{ 485{
486#ifndef USB_STATIC_ALLOC
483 usb_handle = core_free(usb_handle); 487 usb_handle = core_free(usb_handle);
488#endif
484} 489}
485 490
486/* called by usb_core_transfer_complete() */ 491/* called by usb_core_transfer_complete() */