From 163e3507f87b7de7b9e1bdfc7b2c5d5e0357da51 Mon Sep 17 00:00:00 2001 From: Tomasz Moń Date: Wed, 9 Jun 2021 20:50:30 +0200 Subject: Sansa Connect: Working USB Mass Storage Acknowledge SYS_USB_CONNECTED in all queues so USB task can gain exclusive access to the storage. Reduce CPPI requeue timeout to speed up disk access. Change-Id: I322aae4cac679696bb8186ccacf838a18f0715e9 --- .../arm/tms320dm320/sansa-connect/avr-sansaconnect.c | 8 +++++++- .../arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c | 4 ++-- firmware/target/arm/tms320dm320/sdmmc-dm320.c | 14 -------------- 3 files changed, 9 insertions(+), 17 deletions(-) (limited to 'firmware/target/arm/tms320dm320') diff --git a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c index 611bdbfde5..1af9789174 100644 --- a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c +++ b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c @@ -374,7 +374,13 @@ void btn_thread(void) while (1) { queue_wait(&btn_queue, &ev); - + + if (ev.id == SYS_USB_CONNECTED) + { + /* Allow USB to gain exclusive storage access */ + usb_acknowledge(SYS_USB_CONNECTED_ACK); + } + /* Ignore all messages except BTN_INTERRUPT */ if (ev.id != BTN_INTERRUPT) continue; diff --git a/firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c b/firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c index 56251a96db..00c9c2b80d 100644 --- a/firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c +++ b/firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c @@ -1034,7 +1034,7 @@ static int cppi_timeout_cb(struct timeout *tmo) int flags = disable_irq_save(); bool requeue = tnetv_handle_cppi(); restore_irq(flags); - return requeue ? HZ/10 : 0; + return requeue ? 1 : 0; } void VLYNQ(void) __attribute__ ((section(".icode"))); @@ -1205,7 +1205,7 @@ void VLYNQ(void) if (tnetv_handle_cppi()) { - timeout_register(&cppi_timeout, cppi_timeout_cb, HZ/10, 0); + timeout_register(&cppi_timeout, cppi_timeout_cb, 1, 0); } } } diff --git a/firmware/target/arm/tms320dm320/sdmmc-dm320.c b/firmware/target/arm/tms320dm320/sdmmc-dm320.c index fdc3e041a0..cc5c4a822e 100644 --- a/firmware/target/arm/tms320dm320/sdmmc-dm320.c +++ b/firmware/target/arm/tms320dm320/sdmmc-dm320.c @@ -781,20 +781,10 @@ int sd_read_sectors(IF_MD(int card_no,) unsigned long start, int incount, int sd_write_sectors(IF_MD(int card_no,) unsigned long start, int count, const void* outbuf) { -#ifndef BOOTLOADER #ifndef HAVE_MULTIDRIVE const int card_no = 0; #endif return sd_transfer_sectors(card_no, start, count, (void*)outbuf, true); -#else /* we don't need write support in bootloader */ -#ifdef HAVE_MULTIDRIVE - (void)card_no; -#endif - (void)start; - (void)count; - (void)outbuf; - return 0; -#endif } int sd_init(void) @@ -809,9 +799,7 @@ int sd_init(void) mutex_lock(&sd_mtx); -#ifndef BOOTLOADER enable_controller(false); -#endif /* based on linux/drivers/mmc/dm320mmc.c Copyright (C) 2006 ZSI, All Rights Reserved. @@ -859,8 +847,6 @@ int sd_init(void) #endif #endif - sd_select_device(1); - /* Disable Memory Card CLK - it is enabled on demand by TMS320DM320 */ bitclr16(&IO_MMC_MEM_CLK_CONTROL, (1 << 8)); mutex_unlock(&sd_mtx); -- cgit