From 68089db6db83e78fa6637984612c81226a33b02b Mon Sep 17 00:00:00 2001 From: Jack Halpin Date: Fri, 25 Sep 2009 01:38:51 +0000 Subject: AMS Sansa: Add delay for µSD writes to fix CRC failures with class 6 µSD cards. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22825 a1c6a512-1295-4272-9138-f99709370657 --- firmware/target/arm/as3525/ata_sd_as3525.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'firmware') diff --git a/firmware/target/arm/as3525/ata_sd_as3525.c b/firmware/target/arm/as3525/ata_sd_as3525.c index 995bf932ca..fc5e2f880f 100644 --- a/firmware/target/arm/as3525/ata_sd_as3525.c +++ b/firmware/target/arm/as3525/ata_sd_as3525.c @@ -735,6 +735,14 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start, wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK); + + /* Higher speed class cards need a write delay here for some reason */ + if((drive == SD_SLOT_AS3525) && write) + { + int delay = 3500; + while(delay--) asm volatile ("nop\n"); + } + if(!transfer_error[drive]) { if(!write) -- cgit