From 436571b3953d7dcd6ec2ef116b94bad49fc78fa2 Mon Sep 17 00:00:00 2001 From: Leonard Mai Date: Sat, 19 Nov 2011 08:29:18 -0800 Subject: [PATCH] mmc: adding mmc and sdio support for cloverview 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 Reviewed-by: Mark Gross Reviewed-on: http://android.intel.com:8080/26618 Reviewed-by: Yang, Fei Tested-by: Sun, Jianhua Reviewed-by: Seibel, Eric Reviewed-by: Dong, Chuanxiao Reviewed-by: buildbot Tested-by: buildbot --- drivers/mmc/host/sdhci-pci.c | 46 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/pci_ids.h | 5 +++++ 2 files changed, 51 insertions(+) diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c index 7095fc4..483764d 100644 --- a/drivers/mmc/host/sdhci-pci.c +++ b/drivers/mmc/host/sdhci-pci.c @@ -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, diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f8910e1..00092af 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -2459,6 +2459,11 @@ #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 -- 2.7.4