mmc: adding mmc and sdio support for cloverview
authorLeonard Mai <leonard.mai@intel.com>
Sat, 19 Nov 2011 16:29:18 +0000 (08:29 -0800)
committerbuildbot <buildbot@intel.com>
Tue, 13 Dec 2011 15:36:08 +0000 (07:36 -0800)
BZ: 16722

Cloverview SOC use different PCI Device IDs for eMMC/SDIO controllers
hence existing eMMC/SDIO driver won't be initialized on Cloverview SOC.

This patch adds eMMC and SDIO probing support for Cloverview SOC. Also,
Cloverview does not support eMMC mutex as comparing to Penwell hence not
to expose the Dekker's mutex mechanism for Cloverview.

Change-Id: I47927feef3c6cc62acc0c5912e1e2e8d7c0c7f2c
Signed-off-by: Leonard D Mai <leonard.mai@intel.com>
Reviewed-by: Mark Gross <mark.gross@intel.com>
Reviewed-on: http://android.intel.com:8080/26618
Reviewed-by: Yang, Fei <fei.yang@intel.com>
Tested-by: Sun, Jianhua <jianhua.sun@intel.com>
Reviewed-by: Seibel, Eric <eric.seibel@intel.com>
Reviewed-by: Dong, Chuanxiao <chuanxiao.dong@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/mmc/host/sdhci-pci.c
include/linux/pci_ids.h

index 7095fc4..483764d 100644 (file)
@@ -382,7 +382,13 @@ static int mfd_emmc_probe_slot(struct sdhci_pci_slot *slot)
                name = "eMMC0_reset";
                sdhci_alloc_panic_host(slot->host);
                break;
+       case PCI_DEVICE_ID_INTEL_CLV_EMMC0:
+               gpio = mfd_emmc0_rst_gpio;
+               name = "eMMC0_reset";
+               sdhci_alloc_panic_host(slot->host);
+               break;
        case PCI_DEVICE_ID_INTEL_MFD_EMMC1:
+       case PCI_DEVICE_ID_INTEL_CLV_EMMC1:
                gpio = mfd_emmc1_rst_gpio;
                name = "eMMC1_reset";
                break;
@@ -972,6 +978,46 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
        },
 
        {
+               .vendor         = PCI_VENDOR_ID_INTEL,
+               .device         = PCI_DEVICE_ID_INTEL_CLV_SDIO0,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (kernel_ulong_t)&sdhci_intel_mfd_sd,
+       },
+
+       {
+               .vendor         = PCI_VENDOR_ID_INTEL,
+               .device         = PCI_DEVICE_ID_INTEL_CLV_SDIO1,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (kernel_ulong_t)&sdhci_intel_mfd_sdio,
+       },
+
+       {
+               .vendor         = PCI_VENDOR_ID_INTEL,
+               .device         = PCI_DEVICE_ID_INTEL_CLV_SDIO2,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (kernel_ulong_t)&sdhci_intel_mfd_sdio,
+       },
+
+       {
+               .vendor         = PCI_VENDOR_ID_INTEL,
+               .device         = PCI_DEVICE_ID_INTEL_CLV_EMMC0,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (kernel_ulong_t)&sdhci_intel_mfd_emmc,
+       },
+
+       {
+               .vendor         = PCI_VENDOR_ID_INTEL,
+               .device         = PCI_DEVICE_ID_INTEL_CLV_EMMC1,
+               .subvendor      = PCI_ANY_ID,
+               .subdevice      = PCI_ANY_ID,
+               .driver_data    = (kernel_ulong_t)&sdhci_intel_mfd_emmc,
+       },
+
+       {
                .vendor         = PCI_VENDOR_ID_O2,
                .device         = PCI_DEVICE_ID_O2_8120,
                .subvendor      = PCI_ANY_ID,
index f8910e1..00092af 100644 (file)
 #define PCI_DEVICE_ID_INTEL_MFD_EMMC0  0x0823
 #define PCI_DEVICE_ID_INTEL_MFD_EMMC1  0x0824
 #define PCI_DEVICE_ID_INTEL_MRST_SD2   0x084F
+#define PCI_DEVICE_ID_INTEL_CLV_SDIO0  0x08F9
+#define PCI_DEVICE_ID_INTEL_CLV_SDIO1  0x08FA
+#define PCI_DEVICE_ID_INTEL_CLV_SDIO2  0x08FB
+#define PCI_DEVICE_ID_INTEL_CLV_EMMC0  0x08E5
+#define PCI_DEVICE_ID_INTEL_CLV_EMMC1  0x08E6
 #define PCI_DEVICE_ID_INTEL_I960       0x0960
 #define PCI_DEVICE_ID_INTEL_I960RM     0x0962
 #define PCI_DEVICE_ID_INTEL_8257X_SOL  0x1062