On 18/11/2011 08:11, Jason Liu wrote:
> The mmc host controller on the i.mx6q is called usdhc which
> is redesigned based on the freescale esdhc controller.
> 
> The usdhc controller is almost compatible with esdhc except
> it adds one mix register to support debug/SD3.0 and move
> the low bit 0-6 of XFERTYP register to the mix control reg
> low bit 0-6. Thus on i.mx6q, we have the following compared
> with the previous soc: (can refer to RM of chapter 56.3.3)
> 
> i.mx6q:
> mix control:
> bit 31 - bit 7: Added for debug/SD3.0 support
> bit 6  - bit 0: move in the XFERTYP register bit 6-0 on previous soc
> XFERTYP register:
> bit 31 - bit 7: the same as before,
> bit 6  - bit 0: no-use
> 
> previous soc
> mix control: no
> XFERTYP register:
> bit 31 - bit 0: xfertype information
> 
> Signed-off-by: Jason Liu <jason....@linaro.org>
> CC:Stefano Babic <sba...@denx.de>
> Acked-by: Stefano Babic <sba...@denx.de>
> ---
> v2: extend the commit message by adding mix/xtertype register change
>     remove one #ifdef as Marek suggested
>     change the print of USDHC/ESDHC to SDHC
> ---
>  drivers/mmc/fsl_esdhc.c |   12 +++++++++---
>  1 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index ec953f0..ddd1b4c 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -58,7 +58,8 @@ struct fsl_esdhc {
>       uint    autoc12err;
>       uint    hostcapblt;
>       uint    wml;
> -     char    reserved1[8];
> +     uint    mixctrl;
> +     char    reserved1[4];
>       uint    fevt;
>       char    reserved2[168];
>       uint    hostver;
> @@ -298,8 +299,13 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, 
> struct mmc_data *data)
>  
>       /* Send the command */
>       esdhc_write32(&regs->cmdarg, cmd->cmdarg);
> +#if defined(CONFIG_FSL_USDHC)
> +     esdhc_write32(&regs->mixctrl,
> +     (esdhc_read32(&regs->mixctrl) & 0xFFFFFF80) | (xfertyp & 0x7F));
> +     esdhc_write32(&regs->xfertyp, xfertyp & 0xFFFF0000);
> +#else
>       esdhc_write32(&regs->xfertyp, xfertyp);
> -
> +#endif
>       /* Wait for the command to complete */
>       while (!(esdhc_read32(&regs->irqstat) & IRQSTAT_CC))
>               ;
> @@ -482,7 +488,7 @@ int fsl_esdhc_initialize(bd_t *bis, struct fsl_esdhc_cfg 
> *cfg)
>  
>       mmc = malloc(sizeof(struct mmc));
>  
> -     sprintf(mmc->name, "FSL_ESDHC");
> +     sprintf(mmc->name, "FSL_SDHC");
>       regs = (struct fsl_esdhc *)cfg->esdhc_base;

Jason,

I have no issues about this patch, but it was not forwarded to Andy (MMC
Maintainer).

>From my site:

Acked-by: Stefano Babic <sba...@denx.de>

Best regards,
Stefano Babic


-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: off...@denx.de
=====================================================================
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to