diff options
author | Alexander Stein <alexander.stein@systec-electronic.com> | 2012-03-14 03:38:58 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-03-27 12:20:14 -0400 |
commit | 296e0b0357e09fdc6f307953da51c0e5da5b84e7 (patch) | |
tree | 94450233bfbc03981cfdd09dea71758ccc98a728 /drivers/mmc/host/sdhci-pci.c | |
parent | 6379b2375a0c5a6ad437616a4018e6b8fd95e97c (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>
Diffstat (limited to 'drivers/mmc/host/sdhci-pci.c')
-rw-r--r-- | drivers/mmc/host/sdhci-pci.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c index bc666a4ed604..fbbebe251e01 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 | ||
183 | static 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 | ||
179 | static irqreturn_t sdhci_pci_sd_cd(int irq, void *dev_id) | 191 | static 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 | ||
300 | static 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, |