diff options
Diffstat (limited to 'drivers/mmc/fsl_esdhc.c')
| -rw-r--r-- | drivers/mmc/fsl_esdhc.c | 9 | 
1 files changed, 4 insertions, 5 deletions
| diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index 861f4b9d6..973b19f33 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -178,7 +178,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)  	int timeout;  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;  	struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; -#ifdef CONFIG_SYS_FSL_ESDHC_USE_PIO +#ifndef CONFIG_SYS_FSL_ESDHC_USE_PIO  	uint wml_value;  	wml_value = data->blocksize/4; @@ -310,6 +310,9 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)  	/* Figure out the transfer arguments */  	xfertyp = esdhc_xfertyp(cmd, data); +	/* Mask all irqs */ +	esdhc_write32(®s->irqsigen, 0); +  	/* Send the command */  	esdhc_write32(®s->cmdarg, cmd->cmdarg);  #if defined(CONFIG_FSL_USDHC) @@ -320,15 +323,11 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)  	esdhc_write32(®s->xfertyp, xfertyp);  #endif -	/* Mask all irqs */ -	esdhc_write32(®s->irqsigen, 0); -  	/* Wait for the command to complete */  	while (!(esdhc_read32(®s->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))  		;  	irqstat = esdhc_read32(®s->irqstat); -	esdhc_write32(®s->irqstat, irqstat);  	/* Reset CMD and DATA portions on error */  	if (irqstat & (CMD_ERR | IRQSTAT_CTOE)) { |