mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-04-12 00:47:49 -04:00
Confirmed on iFlash-modded ipodvideo, USB mass storage connections frequently fail with bus resets during mount on macOS, and trigger "reset high-speed USB device" errors on Linux during sequential reads. The root cause is: storage_read_sectors() calls yield() via ata_wait_intrq(), which switches to the main thread running handle_usb_events() loop. This calls send_event(GUI_EVENT_ACTIONUPDATE), triggering LCD redraw that takes approximately 110ms. This stalls the ATA DMA completion, causing the USB bulk transfer to time out from the host's perspective. This commit removes the yield to prevent the reading thread from being preempted by the lengthy LCD redraw during DMA completion. This also improves sequential read throughput from ~13MB/s to ~18MB/s. Change-Id: Ia552f97aa0169c93c4f21e250d13dc3a626661d4 |
||
|---|---|---|
| .. | ||
| adc-pp5020.c | ||
| app-pp.lds | ||
| ascodec-pp.c | ||
| ata-pp5002.c | ||
| ata-pp5020.c | ||
| ata-sd-pp.c | ||
| ata-target.h | ||
| audio-pp.c | ||
| boot-pp.lds | ||
| boot-pp502x-bl-usb.lds | ||
| crt0-pp-bl.S | ||
| crt0-pp.S | ||
| crt0-pp502x-bl-usb.S | ||
| debug-pp.c | ||
| i2c-pp.c | ||
| i2s-pp.c | ||
| kernel-pp.c | ||
| mi4-loader.c | ||
| pcm-pp.c | ||
| sd-pp-target.h | ||
| system-pp502x.c | ||
| system-pp5002.c | ||
| system-target.h | ||
| thread-pp.c | ||
| timer-pp.c | ||
| uart-pp.c | ||
| usb-fw-pp502x.c | ||
| usb-fw-pp5002.c | ||
| wmcodec-pp.c | ||