From 6f20c7bc709dd5875b1066d5dae99d52cc18d51c Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 23 Feb 2012 10:13:40 +0100 Subject: mmc i.MX esdhc: Add i.MX6 support Signed-off-by: Sascha Hauer --- drivers/mci/imx-esdhc.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'drivers/mci/imx-esdhc.c') diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c index 6d0883c68b..ae3c805997 100644 --- a/drivers/mci/imx-esdhc.c +++ b/drivers/mci/imx-esdhc.c @@ -24,7 +24,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ - #include #include #include @@ -60,7 +59,8 @@ struct fsl_esdhc { u32 autoc12err; u32 hostcapblt; u32 wml; - char reserved1[8]; + u32 mixctrl; + char reserved1[4]; u32 fevt; char reserved2[168]; u32 hostver; @@ -234,7 +234,7 @@ static int esdhc_setup_data(struct mci_host *mci, struct mci_data *data) static int esdhc_send_cmd(struct mci_host *mci, struct mci_cmd *cmd, struct mci_data *data) { - u32 xfertyp; + u32 xfertyp, mixctrl; u32 irqstat; struct fsl_esdhc_host *host = to_fsl_esdhc(mci); struct fsl_esdhc *regs = host->regs; @@ -266,6 +266,15 @@ esdhc_send_cmd(struct mci_host *mci, struct mci_cmd *cmd, struct mci_data *data) /* Send the command */ esdhc_write32(®s->cmdarg, cmd->cmdarg); + + if (cpu_is_mx6()) { + /* write lower-half of xfertyp to mixctrl */ + mixctrl = xfertyp & 0xFFFF; + /* Keep the bits 22-25 of the register as is */ + mixctrl |= (esdhc_read32(®s->mixctrl) & (0xF << 22)); + esdhc_write32(®s->mixctrl, mixctrl); + } + esdhc_write32(®s->xfertyp, xfertyp); /* Wait for the command to complete */ -- cgit v1.2.3