[prev in list] [next in list] [prev in thread] [next in thread]
List: rockbox-cvs
Subject: Revert "imx233: always keep cards in TRAN mode"
From: gerrit () rockbox ! org
Date: 2013-11-30 16:18:18
Message-ID: 201311301618.rAUGIIYR016942 () giant ! haxx ! se
[Download RAW message or body]
commit 2ce484c658d195d245987a63ac11e61992429867
Author: Amaury Pouly <amaury.pouly@gmail.com>
Date: Wed Nov 27 19:34:50 2013 +0000
Revert "imx233: always keep cards in TRAN mode"
This reverts commit 462adf2a0fefbfdbccfafa11c999ac6beb114e8a.
Leaving the card in TRAN results in a huge power consumption because some cards
and internal bridges do not automatically enter power saving mode in TRAN state.
Change-Id: If79efe8cf99b24174889b3a5ebbcb51b07085f58
diff --git a/firmware/target/arm/imx233/sdmmc-imx233.c b/firmware/target/arm/imx233/sdmmc-imx233.c
index a435b14..b43d3b2 100644
--- a/firmware/target/arm/imx233/sdmmc-imx233.c
+++ b/firmware/target/arm/imx233/sdmmc-imx233.c
@@ -530,6 +530,9 @@ static int init_mmc_drive(int drive)
window_start[drive] = 0;
window_end[drive] = *sec_count;
}
+ /* deselect card */
+ if(!send_cmd(drive, MMC_DESELECT_CARD, 0, MCI_NO_RESP, NULL))
+ return -13;
/* MMC always support CMD23 */
support_set_block_count[drive] = false;
@@ -608,6 +611,18 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf
ret = -201;
goto Lend;
}
+ /* select card.
+ * NOTE: rely on SD_SELECT_CARD=MMC_SELECT_CARD */
+ if(!send_cmd(drive, SD_SELECT_CARD, SDMMC_RCA(drive), MCI_NO_RESP, NULL))
+ {
+ ret = -20;
+ goto Lend;
+ }
+ /* wait for TRAN state */
+ /* NOTE: rely on SD_TRAN=MMC_TRAN */
+ ret = wait_for_state(drive, SD_TRAN);
+ if(ret < 0)
+ goto Ldeselect;
/**
* NOTE: we need to make sure dma transfers are aligned. This is handled
@@ -664,6 +679,12 @@ static int transfer_sectors(int drive, unsigned long start, int count, void *buf
else
ret = __xfer_sectors(drive, start, count, buf, read);
}
+ /* deselect card */
+ Ldeselect:
+ /* CMD7 w/rca =0 : deselects card & puts it in STBY state
+ * NOTE: rely on SD_DESELECT_CARD=MMC_DESELECT_CARD */
+ if(!send_cmd(drive, SD_DESELECT_CARD, 0, MCI_NO_RESP, NULL))
+ ret = -23;
Lend:
/* update led status */
led(false);
_______________________________________________
rockbox-cvs mailing list
rockbox-cvs@cool.haxx.se
http://cool.haxx.se/cgi-bin/mailman/listinfo/rockbox-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic