diff options
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525.c')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 35cb997629..d77c7133b6 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c | |||
@@ -52,7 +52,7 @@ | |||
52 | #include "disk.h" | 52 | #include "disk.h" |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | #define VERIFY_WRITE 1 | 55 | //#define VERIFY_WRITE 1 |
56 | 56 | ||
57 | /* command flags */ | 57 | /* command flags */ |
58 | #define MCI_NO_RESP (0<<0) | 58 | #define MCI_NO_RESP (0<<0) |
@@ -382,6 +382,7 @@ static int sd_init_card(const int drive) | |||
382 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP, &response)) | 382 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP, &response)) |
383 | return -10; | 383 | return -10; |
384 | 384 | ||
385 | #if 0 /* FIXME : it seems that reading fails on some models */ | ||
385 | /* Switch to to 4 bit widebus mode */ | 386 | /* Switch to to 4 bit widebus mode */ |
386 | if(sd_wait_for_tran_state(drive) < 0) | 387 | if(sd_wait_for_tran_state(drive) < 0) |
387 | return -11; | 388 | return -11; |
@@ -393,6 +394,7 @@ static int sd_init_card(const int drive) | |||
393 | return -13; | 394 | return -13; |
394 | /* Now that card is widebus make controller aware */ | 395 | /* Now that card is widebus make controller aware */ |
395 | MCI_CLOCK(drive) |= MCI_CLOCK_WIDEBUS; | 396 | MCI_CLOCK(drive) |= MCI_CLOCK_WIDEBUS; |
397 | #endif | ||
396 | 398 | ||
397 | /* | 399 | /* |
398 | * enable bank switching | 400 | * enable bank switching |
@@ -913,8 +915,11 @@ int sd_write_sectors(IF_MD2(int drive,) unsigned long start, int count, | |||
913 | ret = sd_transfer_sectors(IF_MD2(drive,) start, count, (void*)buf, true); | 915 | ret = sd_transfer_sectors(IF_MD2(drive,) start, count, (void*)buf, true); |
914 | 916 | ||
915 | #ifdef VERIFY_WRITE | 917 | #ifdef VERIFY_WRITE |
916 | if (ret) /* write failed, no point in verifying */ | 918 | if (ret) { |
917 | goto write_error; | 919 | /* write failed, no point in verifying */ |
920 | mutex_unlock(&sd_mtx); | ||
921 | return ret; | ||
922 | } | ||
918 | 923 | ||
919 | count = saved_count; | 924 | count = saved_count; |
920 | buf = saved_buf; | 925 | buf = saved_buf; |
@@ -937,7 +942,6 @@ int sd_write_sectors(IF_MD2(int drive,) unsigned long start, int count, | |||
937 | } | 942 | } |
938 | #endif | 943 | #endif |
939 | 944 | ||
940 | write_error: | ||
941 | mutex_unlock(&sd_mtx); | 945 | mutex_unlock(&sd_mtx); |
942 | 946 | ||
943 | return ret; | 947 | return ret; |