diff options
| author | Davide Bonfanti <davide.bonfanti@bticino.it> | 2012-11-29 01:06:53 +0000 | 
|---|---|---|
| committer | Andy Fleming <afleming@freescale.com> | 2013-05-06 16:26:24 -0500 | 
| commit | 3ba36d603a6fc2806fc55fd814d8c5cc4ca93547 (patch) | |
| tree | be2ab3ab5d02bc2924cbf2d6af42c2e407150a0f /drivers/mmc/davinci_mmc.c | |
| parent | e95504497ecac46907204b0ee3460b708a2981ac (diff) | |
| download | olio-uboot-2014.01-3ba36d603a6fc2806fc55fd814d8c5cc4ca93547.tar.xz olio-uboot-2014.01-3ba36d603a6fc2806fc55fd814d8c5cc4ca93547.zip | |
davinci, mmc: Added a delay reading ext CSD register
Without this additional delay, some eMMC don't negotiate properly bus width
Tested on:
 - Toshiba THGBM2G8D8FBAIB
 - Toshiba THGBM4G4D1HBAR
 - Micron MTFC4GMVEA (the one giving the problem)
 - Hynix H26M64002BNR
 - SanDisk SDIN5E1-32G
Signed-off-by: Davide Bonfanti <davide.bonfanti@bticino.it>
Acked-by: Tom Rini <trini@ti.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
Diffstat (limited to 'drivers/mmc/davinci_mmc.c')
| -rw-r--r-- | drivers/mmc/davinci_mmc.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/drivers/mmc/davinci_mmc.c b/drivers/mmc/davinci_mmc.c index e2379e326..5aa218426 100644 --- a/drivers/mmc/davinci_mmc.c +++ b/drivers/mmc/davinci_mmc.c @@ -285,8 +285,11 @@ dmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)  			 */  			if (bytes_left > fifo_bytes)  				dmmc_wait_fifo_status(regs, 0x4a); -			else if (bytes_left == fifo_bytes) +			else if (bytes_left == fifo_bytes) {  				dmmc_wait_fifo_status(regs, 0x40); +				if (cmd->cmdidx == MMC_CMD_SEND_EXT_CSD) +					udelay(600); +			}  			for (i = 0; bytes_left && (i < fifo_words); i++) {  				cmddata = get_val(®s->mmcdrr); |