diff options
Diffstat (limited to 'drivers/mmc/fsl_esdhc.c')
| -rw-r--r-- | drivers/mmc/fsl_esdhc.c | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 54b536316..e945c0a47 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -327,9 +327,6 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)  	while (!(esdhc_read32(®s->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))  		; -	if (data && (data->flags & MMC_DATA_READ)) -		check_and_invalidate_dcache_range(cmd, data); -  	irqstat = esdhc_read32(®s->irqstat);  	esdhc_write32(®s->irqstat, irqstat); @@ -400,9 +397,10 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)  			if (irqstat & DATA_ERR)  				return COMM_ERR; -		} while (!(irqstat & IRQSTAT_TC) && -				(esdhc_read32(®s->prsstat) & PRSSTAT_DLA)); +		} while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE);  #endif +		if (data->flags & MMC_DATA_READ) +			check_and_invalidate_dcache_range(cmd, data);  	}  	esdhc_write32(®s->irqstat, -1); @@ -580,6 +578,13 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg *cfg)  	mmc->host_caps = MMC_MODE_4BIT | MMC_MODE_8BIT | MMC_MODE_HC; +	if (cfg->max_bus_width > 0) { +		if (cfg->max_bus_width < 8) +			mmc->host_caps &= ~MMC_MODE_8BIT; +		if (cfg->max_bus_width < 4) +			mmc->host_caps &= ~MMC_MODE_4BIT; +	} +  	if (caps & ESDHC_HOSTCAPBLT_HSS)  		mmc->host_caps |= MMC_MODE_HS_52MHz | MMC_MODE_HS; |