]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00139229-4 SDHC: Add SDHC support for i.MX6
authorZeng Zhaoming <b32542@freescale.com>
Fri, 24 Jun 2011 01:26:28 +0000 (09:26 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:32:55 +0000 (08:32 +0200)
Add sdhc support to make it easy mount rootfs from SD card.
Merge from imx6_bringup branch.

Signed-off-by: Anish Trivedi <anish@freescale.com>
Signed-off-by: Dong Aisheng <b29396@freescale.com>
Signed-off-by: Richard Zhu <r65037@freescale.com>
Merged-by: Zeng Zhaoming <b32542@freescale.com>
drivers/mmc/host/Kconfig
drivers/mmc/host/sdhci-esdhc-imx.c
drivers/mmc/host/sdhci-esdhc.h

index 56dbf3f6ad08a495075b2e254dccc1cb61d2c707..64aac78983344b97ba259371258921344c73b815 100644 (file)
@@ -134,7 +134,7 @@ config MMC_SDHCI_CNS3XXX
 
 config MMC_SDHCI_ESDHC_IMX
        bool "SDHCI platform support for the Freescale eSDHC i.MX controller"
-       depends on MMC_SDHCI_PLTFM && (ARCH_MX25 || ARCH_MX35 || ARCH_MX5)
+       depends on MMC_SDHCI_PLTFM && (ARCH_MX25 || ARCH_MX35 || ARCH_MX5 || ARCH_MX6)
        select MMC_SDHCI_IO_ACCESSORS
        help
          This selects the Freescale eSDHC controller support on the platform
index 0cc60ef540e3713f68584df91320d13f25dfbac4..29b973be7140dac80cc274257baa7f140ea94e39 100644 (file)
@@ -30,6 +30,7 @@
 /* VENDOR SPEC register */
 #define SDHCI_VENDOR_SPEC              0xC0
 #define  SDHCI_VENDOR_SPEC_SDIO_QUIRK  0x00000002
+#define SDHCI_MIX_CTRL                 0x48
 
 #define ESDHC_FLAG_GPIO_FOR_CD_WP      (1 << 0)
 /*
@@ -143,8 +144,17 @@ static void esdhc_writew_le(struct sdhci_host *host, u16 val, int reg)
                     host->cmd->opcode == MMC_SET_BLOCK_COUNT) &&
                    (imx_data->flags & ESDHC_FLAG_MULTIBLK_NO_INT))
                        val |= SDHCI_CMD_ABORTCMD;
-               writel(val << 16 | imx_data->scratchpad,
-                       host->ioaddr + SDHCI_TRANSFER_MODE);
+
+               writel(0x08800880, host->ioaddr + SDHCI_CAPABILITIES_1);
+               if (cpu_is_mx6q()) {
+                       writel(imx_data->scratchpad,
+                               host->ioaddr + SDHCI_MIX_CTRL);
+                       writel(val << 16,
+                               host->ioaddr + SDHCI_TRANSFER_MODE);
+               } else {
+                       writel(val << 16 | imx_data->scratchpad,
+                               host->ioaddr + SDHCI_TRANSFER_MODE);
+               }
                return;
        case SDHCI_BLOCK_SIZE:
                val &= ~SDHCI_MAKE_BLKSZ(0x7, 0);
index c3b08f1119426d66d7f7ee1f4e0d466038631f9d..02ff6da7ccabaf7fb6dd36a1e20fcbd3eb15bc5b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Freescale eSDHC controller driver generics for OF and pltfm.
  *
- * Copyright (c) 2007 Freescale Semiconductor, Inc.
+ * Copyright (C) 2007, 2011 Freescale Semiconductor, Inc.
  * Copyright (c) 2009 MontaVista Software, Inc.
  * Copyright (c) 2010 Pengutronix e.K.
  *   Author: Wolfram Sang <w.sang@pengutronix.de>