fsl_esdhc: Add the workaround for erratum ESDHC111 (enable on P4080)
Do not issue a manual asynchronous CMD12. Instead, use a (software) synchronous CMD12 or AUTOCMD12 to abort data transfer. Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com> Signed-off-by: Roy Zang <tie-fei.zang@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
28a096e7f2
commit
d621da0066
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2010 Freescale Semiconductor, Inc.
|
||||
* Copyright 2010-2011 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -49,6 +49,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
#endif
|
||||
#if defined(CONFIG_SYS_FSL_ERRATUM_DDR_MSYNC_IN)
|
||||
puts("Work-around for DDR MSYNC_IN Erratum enabled\n");
|
||||
#endif
|
||||
#if defined(CONFIG_SYS_FSL_ERRATUM_ESDHC111)
|
||||
puts("Work-around for Erratum ESDHC111 enabled\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2007,2010 Freescale Semiconductor, Inc
|
||||
* Copyright 2007, 2010-2011 Freescale Semiconductor, Inc
|
||||
* Andy Fleming
|
||||
*
|
||||
* Based vaguely on the pxa mmc code:
|
||||
|
@ -79,6 +79,9 @@ uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data)
|
|||
if (data->blocks > 1) {
|
||||
xfertyp |= XFERTYP_MSBSEL;
|
||||
xfertyp |= XFERTYP_BCEN;
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111
|
||||
xfertyp |= XFERTYP_AC12EN;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (data->flags & MMC_DATA_READ)
|
||||
|
@ -234,6 +237,11 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
|
|||
struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
|
||||
volatile struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;
|
||||
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_ESDHC111
|
||||
if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
esdhc_write32(®s->irqstat, -1);
|
||||
|
||||
sync();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2009-2010 Freescale Semiconductor, Inc.
|
||||
* Copyright 2009-2011 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
|
@ -35,6 +35,8 @@
|
|||
|
||||
#define CONFIG_ICS307_REFCLK_HZ 33333000 /* ICS307 ref clk freq */
|
||||
|
||||
#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
|
||||
|
||||
#define CONFIG_SYS_P4080_ERRATUM_CPU22
|
||||
#define CONFIG_SYS_P4080_ERRATUM_SERDES8
|
||||
|
||||
|
|
Loading…
Reference in New Issue