From 68089db6db83e78fa6637984612c81226a33b02b Mon Sep 17 00:00:00 2001 From: Jack Halpin Date: Fri, 25 Sep 2009 01:38:51 +0000 Subject: [PATCH] =?UTF-8?q?AMS=20Sansa:=20=20Add=20delay=20for=20=C2=B5SD?= =?UTF-8?q?=20writes=20to=20fix=20CRC=20failures=20with=20class=206=20?= =?UTF-8?q?=C2=B5SD=20cards.?= 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(+) 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)