diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-08-21 11:10:05 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-08-21 20:18:36 +0200 |
commit | 462adf2a0fefbfdbccfafa11c999ac6beb114e8a (patch) | |
tree | c913884505143715791afbf64877ce116c501252 | |
parent | e90a5efe543914264bf697518ebf9564ff8a9964 (diff) | |
download | rockbox-462adf2a0fefbfdbccfafa11c999ac6beb114e8a.tar.gz rockbox-462adf2a0fefbfdbccfafa11c999ac6beb114e8a.zip |
imx233: always keep cards in TRAN mode
Instead of going back and forth between TRAN and STBY modes,
stay in TRAN mode all the time, this avoid two commands on each
read/write and a potential delay to wait for the card.
Change-Id: Iafd456ab9a581d870331b622eeb48dcc254eda7f
-rw-r--r-- | firmware/target/arm/imx233/sdmmc-imx233.c | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c index 5ebf0c7d3b..99dd817ec6 100644 --- a/firmware/target/arm/imx233/sdmmc-imx233.c +++ b/firmware/target/arm/imx233/sdmmc-imx233.c | |||
@@ -497,9 +497,6 @@ static int init_mmc_drive(int drive) | |||
497 | window_start[drive] = 0; | 497 | window_start[drive] = 0; |
498 | window_end[drive] = *sec_count; | 498 | window_end[drive] = *sec_count; |
499 | } | 499 | } |
500 | /* deselect card */ | ||
501 | if(!send_cmd(drive, MMC_DESELECT_CARD, 0, MCI_NO_RESP, NULL)) | ||
502 | return -13; | ||
503 | 500 | ||
504 | /* MMC always support CMD23 */ | 501 | /* MMC always support CMD23 */ |
505 | support_set_block_count[drive] = false; | 502 | support_set_block_count[drive] = false; |
@@ -578,18 +575,6 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf | |||
578 | ret = -201; | 575 | ret = -201; |
579 | goto Lend; | 576 | goto Lend; |
580 | } | 577 | } |
581 | /* select card. | ||
582 | * NOTE: rely on SD_SELECT_CARD=MMC_SELECT_CARD */ | ||
583 | if(!send_cmd(drive, SD_SELECT_CARD, SDMMC_RCA(drive), MCI_NO_RESP, NULL)) | ||
584 | { | ||
585 | ret = -20; | ||
586 | goto Lend; | ||
587 | } | ||
588 | /* wait for TRAN state */ | ||
589 | /* NOTE: rely on SD_TRAN=MMC_TRAN */ | ||
590 | ret = wait_for_state(drive, SD_TRAN); | ||
591 | if(ret < 0) | ||
592 | goto Ldeselect; | ||
593 | 578 | ||
594 | /** | 579 | /** |
595 | * NOTE: we need to make sure dma transfers are aligned. This is handled | 580 | * NOTE: we need to make sure dma transfers are aligned. This is handled |
@@ -646,13 +631,6 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf | |||
646 | else | 631 | else |
647 | ret = __xfer_sectors(drive, start, count, buf, read); | 632 | ret = __xfer_sectors(drive, start, count, buf, read); |
648 | } | 633 | } |
649 | |||
650 | /* deselect card */ | ||
651 | Ldeselect: | ||
652 | /* CMD7 w/rca =0 : deselects card & puts it in STBY state | ||
653 | * NOTE: rely on SD_DESELECT_CARD=MMC_DESELECT_CARD */ | ||
654 | if(!send_cmd(drive, SD_DESELECT_CARD, 0, MCI_NO_RESP, NULL)) | ||
655 | ret = -23; | ||
656 | Lend: | 634 | Lend: |
657 | /* update led status */ | 635 | /* update led status */ |
658 | led(false); | 636 | led(false); |