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(®s->cmdarg, cmd->cmdarg); > +#if defined(CONFIG_FSL_USDHC) > + esdhc_write32(®s->mixctrl, > + (esdhc_read32(®s->mixctrl) & 0xFFFFFF80) | (xfertyp & 0x7F)); > + esdhc_write32(®s->xfertyp, xfertyp & 0xFFFF0000); > +#else > esdhc_write32(®s->xfertyp, xfertyp); > - > +#endif > /* Wait for the command to complete */ > while (!(esdhc_read32(®s->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