diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-02-23 10:13:40 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-04-24 10:31:47 +0200 |
commit | 6f20c7bc709dd5875b1066d5dae99d52cc18d51c (patch) | |
tree | 20f6c9dcaf3f0a2848e3d51a18c17e1614f0222e /drivers | |
parent | 86cfd96af42178a85ec085ddd5e2f471a02041db (diff) | |
download | barebox-6f20c7bc709dd5875b1066d5dae99d52cc18d51c.tar.gz barebox-6f20c7bc709dd5875b1066d5dae99d52cc18d51c.tar.xz |
mmc i.MX esdhc: Add i.MX6 support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mci/imx-esdhc.c | 15 |
1 files changed, 12 insertions, 3 deletions
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 <config.h> #include <common.h> #include <driver.h> @@ -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 */ |