rockbox/firmware/target
Marcin Bukat 2ce1cdcd8e rk27xx: don't switch SD cards to high-speed mode
Every SD write failed. The card took the write command and went to
receive-data state, but never saw the block: CMD12 still found it there,
and the controller reported a missing CRC status after each block, 20
retries over. Reads worked. Stress-tested over USB mass storage on a
generic rk2705, with a SDHC card, in the normal firmware and in the
bootloader alike.

sd_init_card() switched the card to high-speed mode with CMD6. This host
is an SD 1.01 controller with a card clock of at most 25 MHz, per the
rk27xx datasheet; high speed and CMD6 came with SD 1.10, and a card
switched to it evidently does not take the data this host drives. The
original firmware never switches: after selecting the card it sets the
block length and a 1-bit bus and stays at default speed. A slower card
clock did not help; dropping the switch alone did.

Leave the card at default speed. Tested on a generic rk2705:
ums_stress.py over a 32 MiB window of the card - fill, verify, edge
sizes, a mixed read/write soak - passes at 2.3 MB/s writing and reading,
about 75% of what a 1-bit bus at 25 MHz carries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: Icfafab0bb460c8c0fda3dea455df9a36622bf764
2026-10-01 20:18:10 +02:00
..
arm rk27xx: don't switch SD cards to high-speed mode 2026-10-01 20:18:10 +02:00
coldfire firmware: move iriver flash helper functions into target tree 2026-09-23 13:44:45 -04:00
hosted Add "rbfs" prefix to native filesystem functions 2026-09-17 16:22:31 -04:00
mips usb: let controller drivers handle SET_ADDRESS requests 2026-09-26 13:23:01 -04:00