diff options
Diffstat (limited to 'firmware/target/arm/as3525')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525.c b/firmware/target/arm/as3525/sd-as3525.c index 02b0d725f7..7e61fa509f 100644 --- a/firmware/target/arm/as3525/sd-as3525.c +++ b/firmware/target/arm/as3525/sd-as3525.c | |||
@@ -319,9 +319,8 @@ static int sd_init_card(const int drive) | |||
319 | if(sd_v2) | 319 | if(sd_v2) |
320 | { | 320 | { |
321 | /* CMD7 w/rca: Select card to put it in TRAN state */ | 321 | /* CMD7 w/rca: Select card to put it in TRAN state */ |
322 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_ARG, NULL)) | 322 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP|MCI_ARG, &response)) |
323 | return -5; | 323 | return -5; |
324 | mci_delay(); | ||
325 | 324 | ||
326 | if(sd_wait_for_tran_state(drive)) | 325 | if(sd_wait_for_tran_state(drive)) |
327 | return -6; | 326 | return -6; |
@@ -359,9 +358,8 @@ static int sd_init_card(const int drive) | |||
359 | #endif | 358 | #endif |
360 | 359 | ||
361 | /* CMD7 w/rca: Select card to put it in TRAN state */ | 360 | /* CMD7 w/rca: Select card to put it in TRAN state */ |
362 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_ARG, NULL)) | 361 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP|MCI_ARG, &response)) |
363 | return -10; | 362 | return -10; |
364 | mci_delay(); | ||
365 | 363 | ||
366 | #ifndef BOOTLOADER | 364 | #ifndef BOOTLOADER |
367 | /* Switch to to 4 bit widebus mode */ | 365 | /* Switch to to 4 bit widebus mode */ |
@@ -395,7 +393,7 @@ static int sd_init_card(const int drive) | |||
395 | if(ret < 0) | 393 | if(ret < 0) |
396 | return ret -16; | 394 | return ret -16; |
397 | 395 | ||
398 | /* CMD7 w/rca = 0: Select card to put it in STBY state */ | 396 | /* CMD7 w/rca = 0: Unselect card to put it in STBY state */ |
399 | if(!send_cmd(drive, SD_SELECT_CARD, 0, MCI_ARG, NULL)) | 397 | if(!send_cmd(drive, SD_SELECT_CARD, 0, MCI_ARG, NULL)) |
400 | return -17; | 398 | return -17; |
401 | mci_delay(); | 399 | mci_delay(); |
@@ -410,9 +408,8 @@ static int sd_init_card(const int drive) | |||
410 | card_info[INTERNAL_AS3525].numblocks -= AMS_OF_SIZE; | 408 | card_info[INTERNAL_AS3525].numblocks -= AMS_OF_SIZE; |
411 | 409 | ||
412 | /* CMD7 w/rca: Select card to put it in TRAN state */ | 410 | /* CMD7 w/rca: Select card to put it in TRAN state */ |
413 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_ARG, NULL)) | 411 | if(!send_cmd(drive, SD_SELECT_CARD, card_info[drive].rca, MCI_RESP|MCI_ARG, &response)) |
414 | return -19; | 412 | return -19; |
415 | mci_delay(); | ||
416 | } | 413 | } |
417 | 414 | ||
418 | card_info[drive].initialized = 1; | 415 | card_info[drive].initialized = 1; |
@@ -729,6 +726,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start, | |||
729 | const int cmd = | 726 | const int cmd = |
730 | write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK; | 727 | write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK; |
731 | unsigned long bank_start = start; | 728 | unsigned long bank_start = start; |
729 | unsigned long status; | ||
732 | 730 | ||
733 | /* Only switch banks for internal storage */ | 731 | /* Only switch banks for internal storage */ |
734 | if(drive == INTERNAL_AS3525) | 732 | if(drive == INTERNAL_AS3525) |
@@ -816,7 +814,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start, | |||
816 | 814 | ||
817 | last_disk_activity = current_tick; | 815 | last_disk_activity = current_tick; |
818 | 816 | ||
819 | if(!send_cmd(drive, SD_STOP_TRANSMISSION, 0, MCI_NO_FLAGS, NULL)) | 817 | if(!send_cmd(drive, SD_STOP_TRANSMISSION, 0, MCI_RESP, &status)) |
820 | { | 818 | { |
821 | ret = -4*20; | 819 | ret = -4*20; |
822 | goto sd_transfer_error; | 820 | goto sd_transfer_error; |