aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@systec-electronic.com>2012-03-14 03:38:58 -0400
committerChris Ball <cjb@laptop.org>2012-03-27 12:20:14 -0400
commit296e0b0357e09fdc6f307953da51c0e5da5b84e7 (patch)
tree94450233bfbc03981cfdd09dea71758ccc98a728
parent6379b2375a0c5a6ad437616a4018e6b8fd95e97c (diff)
mmc: sdhci-pci: allow 8-bit bus width for Intel PCH
Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> Signed-off-by: Chris Ball <cjb@laptop.org>
-rw-r--r--drivers/mmc/host/sdhci-pci.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index bc666a4ed60..fbbebe251e0 100644
--- a/drivers/mmc/host/sdhci-pci.c
+++ b/drivers/mmc/host/sdhci-pci.c
@@ -29,6 +29,12 @@
29#include "sdhci.h" 29#include "sdhci.h"
30 30
31/* 31/*
32 * PCI device IDs
33 */
34#define PCI_DEVICE_ID_INTEL_PCH_SDIO0 0x8809
35#define PCI_DEVICE_ID_INTEL_PCH_SDIO1 0x880a
36
37/*
32 * PCI registers 38 * PCI registers
33 */ 39 */
34 40
@@ -174,6 +180,12 @@ static int mrst_hc_probe(struct sdhci_pci_chip *chip)
174 return 0; 180 return 0;
175} 181}
176 182
183static int pch_hc_probe_slot(struct sdhci_pci_slot *slot)
184{
185 slot->host->mmc->caps |= MMC_CAP_8_BIT_DATA;
186 return 0;
187}
188
177#ifdef CONFIG_PM_RUNTIME 189#ifdef CONFIG_PM_RUNTIME
178 190
179static irqreturn_t sdhci_pci_sd_cd(int irq, void *dev_id) 191static irqreturn_t sdhci_pci_sd_cd(int irq, void *dev_id)
@@ -285,6 +297,11 @@ static const struct sdhci_pci_fixes sdhci_intel_mfd_emmc = {
285 .probe_slot = mfd_emmc_probe_slot, 297 .probe_slot = mfd_emmc_probe_slot,
286}; 298};
287 299
300static const struct sdhci_pci_fixes sdhci_intel_pch_sdio = {
301 .quirks = SDHCI_QUIRK_BROKEN_ADMA,
302 .probe_slot = pch_hc_probe_slot,
303};
304
288/* O2Micro extra registers */ 305/* O2Micro extra registers */
289#define O2_SD_LOCK_WP 0xD3 306#define O2_SD_LOCK_WP 0xD3
290#define O2_SD_MULTI_VCC3V 0xEE 307#define O2_SD_MULTI_VCC3V 0xEE
@@ -821,6 +838,22 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
821 }, 838 },
822 839
823 { 840 {
841 .vendor = PCI_VENDOR_ID_INTEL,
842 .device = PCI_DEVICE_ID_INTEL_PCH_SDIO0,
843 .subvendor = PCI_ANY_ID,
844 .subdevice = PCI_ANY_ID,
845 .driver_data = (kernel_ulong_t)&sdhci_intel_pch_sdio,
846 },
847
848 {
849 .vendor = PCI_VENDOR_ID_INTEL,
850 .device = PCI_DEVICE_ID_INTEL_PCH_SDIO1,
851 .subvendor = PCI_ANY_ID,
852 .subdevice = PCI_ANY_ID,
853 .driver_data = (kernel_ulong_t)&sdhci_intel_pch_sdio,
854 },
855
856 {
824 .vendor = PCI_VENDOR_ID_O2, 857 .vendor = PCI_VENDOR_ID_O2,
825 .device = PCI_DEVICE_ID_O2_8120, 858 .device = PCI_DEVICE_ID_O2_8120,
826 .subvendor = PCI_ANY_ID, 859 .subvendor = PCI_ANY_ID,