diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2011-06-29 07:23:47 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-07-20 17:21:07 -0400 |
commit | 0d013bcf5c272faea1f8e7a5ef3cb2e98103d5cb (patch) | |
tree | 9b80b7b83cd753a39bb74f9eabfaf778988de29a /drivers/mmc/host/sdhci-pci.c | |
parent | 68077b0261f00e4eb2d26f066efca1edb89488a8 (diff) |
mmc: sdhci-pci: allow 8-bit bus width for Intel Medfield eMMCs
Unless MMC_CAP_8_BIT_DATA is set, the bus width defaults to 4.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.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 | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c index e1ae855960b9..26c528648f3c 100644 --- a/drivers/mmc/host/sdhci-pci.c +++ b/drivers/mmc/host/sdhci-pci.c | |||
@@ -163,6 +163,12 @@ static int mrst_hc_probe(struct sdhci_pci_chip *chip) | |||
163 | return 0; | 163 | return 0; |
164 | } | 164 | } |
165 | 165 | ||
166 | static int mfd_emmc_probe_slot(struct sdhci_pci_slot *slot) | ||
167 | { | ||
168 | slot->host->mmc->caps |= MMC_CAP_8_BIT_DATA; | ||
169 | return 0; | ||
170 | } | ||
171 | |||
166 | static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = { | 172 | static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = { |
167 | .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT, | 173 | .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT, |
168 | .probe_slot = mrst_hc_probe_slot, | 174 | .probe_slot = mrst_hc_probe_slot, |
@@ -177,8 +183,13 @@ static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = { | |||
177 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, | 183 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, |
178 | }; | 184 | }; |
179 | 185 | ||
180 | static const struct sdhci_pci_fixes sdhci_intel_mfd_emmc_sdio = { | 186 | static const struct sdhci_pci_fixes sdhci_intel_mfd_sdio = { |
187 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, | ||
188 | }; | ||
189 | |||
190 | static const struct sdhci_pci_fixes sdhci_intel_mfd_emmc = { | ||
181 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, | 191 | .quirks = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC, |
192 | .probe_slot = mfd_emmc_probe_slot, | ||
182 | }; | 193 | }; |
183 | 194 | ||
184 | /* O2Micro extra registers */ | 195 | /* O2Micro extra registers */ |
@@ -689,7 +700,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = { | |||
689 | .device = PCI_DEVICE_ID_INTEL_MFD_SDIO1, | 700 | .device = PCI_DEVICE_ID_INTEL_MFD_SDIO1, |
690 | .subvendor = PCI_ANY_ID, | 701 | .subvendor = PCI_ANY_ID, |
691 | .subdevice = PCI_ANY_ID, | 702 | .subdevice = PCI_ANY_ID, |
692 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc_sdio, | 703 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, |
693 | }, | 704 | }, |
694 | 705 | ||
695 | { | 706 | { |
@@ -697,7 +708,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = { | |||
697 | .device = PCI_DEVICE_ID_INTEL_MFD_SDIO2, | 708 | .device = PCI_DEVICE_ID_INTEL_MFD_SDIO2, |
698 | .subvendor = PCI_ANY_ID, | 709 | .subvendor = PCI_ANY_ID, |
699 | .subdevice = PCI_ANY_ID, | 710 | .subdevice = PCI_ANY_ID, |
700 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc_sdio, | 711 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_sdio, |
701 | }, | 712 | }, |
702 | 713 | ||
703 | { | 714 | { |
@@ -705,7 +716,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = { | |||
705 | .device = PCI_DEVICE_ID_INTEL_MFD_EMMC0, | 716 | .device = PCI_DEVICE_ID_INTEL_MFD_EMMC0, |
706 | .subvendor = PCI_ANY_ID, | 717 | .subvendor = PCI_ANY_ID, |
707 | .subdevice = PCI_ANY_ID, | 718 | .subdevice = PCI_ANY_ID, |
708 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc_sdio, | 719 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, |
709 | }, | 720 | }, |
710 | 721 | ||
711 | { | 722 | { |
@@ -713,7 +724,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = { | |||
713 | .device = PCI_DEVICE_ID_INTEL_MFD_EMMC1, | 724 | .device = PCI_DEVICE_ID_INTEL_MFD_EMMC1, |
714 | .subvendor = PCI_ANY_ID, | 725 | .subvendor = PCI_ANY_ID, |
715 | .subdevice = PCI_ANY_ID, | 726 | .subdevice = PCI_ANY_ID, |
716 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc_sdio, | 727 | .driver_data = (kernel_ulong_t)&sdhci_intel_mfd_emmc, |
717 | }, | 728 | }, |
718 | 729 | ||
719 | { | 730 | { |