diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-06 13:47:30 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-06 13:47:30 +0000 |
commit | 5c9e76a1e0b1e6017acc6d8503eb12b42b4d0de7 (patch) | |
tree | ddc980eda66c9e4446ec6c8cf417207dc615ecd1 /firmware/target/arm/as3525/sd-as3525v2.c | |
parent | a1a9084160077ab4fd05d5c94a09139d62fc6ff0 (diff) | |
download | rockbox-5c9e76a1e0b1e6017acc6d8503eb12b42b4d0de7.tar.gz rockbox-5c9e76a1e0b1e6017acc6d8503eb12b42b4d0de7.zip |
sd-as3525v2: check the (supposedly) card data line for business when writing
Fix panics when deleting large files from µSD
Tested on problematic Transcend 4GB Class 6
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26631 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525v2.c')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c index 1a555e745d..a668f65e0c 100644 --- a/firmware/target/arm/as3525/sd-as3525v2.c +++ b/firmware/target/arm/as3525/sd-as3525v2.c | |||
@@ -878,6 +878,12 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start, | |||
878 | 878 | ||
879 | last_disk_activity = current_tick; | 879 | last_disk_activity = current_tick; |
880 | 880 | ||
881 | if(write) | ||
882 | { | ||
883 | /* wait for the card to exit programming state */ | ||
884 | while(MCI_STATUS & DATA_BUSY) ; | ||
885 | } | ||
886 | |||
881 | if(!send_cmd(drive, SD_STOP_TRANSMISSION, 0, MCI_NO_RESP, NULL)) | 887 | if(!send_cmd(drive, SD_STOP_TRANSMISSION, 0, MCI_NO_RESP, NULL)) |
882 | { | 888 | { |
883 | ret = -666; | 889 | ret = -666; |