[U-Boot] [PATCH 1/1] fsl_esdhc: Fix multi-block read restriction on i.MX53 eSDHCv2

Jason Liu liu.h.jason at gmail.com
Mon Apr 11 06:43:59 CEST 2011


Hi, Kumar Gala

2011/3/22 Jason Liu <jason.hui at linaro.org>:
> For freescale i.MX53 eSDHCv2, when using CMD12, cmdtype need
> to be set to ABORT, otherwise, next read command will hang.
>
> This is a software Software Restrictions in i.MX53 reference manual:
>
> 29.7.8 Multi-block Read
> For pre-defined multi-block read operation, that is,the number of blocks
> to read has been defined by previous CMD23 for MMC, or pre-defined number
> of blocks in CMD53 for SDIO/SDCombo,or whatever multi-block read without
> abort command at card side, an abort command, either automatic or manual
> CMD12/CMD52, is still required by ESDHC after the pre-defined number of
> blocks are done, to drive the internal state machine to idle mode. In this
> case, the card may not respond to this extra abort command and ESDHC will
> get Response Timeout.  It is recommended to manually send an abort command
> with RSPTYP[1:0] both bits cleared.
>
> Signed-off-by: Jason Liu <jason.hui at linaro.org>
> ---
>  drivers/mmc/fsl_esdhc.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index f3cccbe..5c3618b 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -99,6 +99,10 @@ uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data)
>        else if (cmd->resp_type & MMC_RSP_PRESENT)
>                xfertyp |= XFERTYP_RSPTYP_48;
>
> +#ifdef CONFIG_MX53
> +       if (cmd->cmdidx == MMC_CMD_STOP_TRANSMISSION)
> +               xfertyp |= XFERTYP_CMDTYP_ABORT;
> +#endif
>        return XFERTYP_CMD(cmd->cmdidx) | xfertyp;
>  }

Ping, Any comments?

>
> --
> 1.7.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>


More information about the U-Boot mailing list