SDHC2 is newly added in C0 stepping of Langwell. Without the Moorestown
PATCH 1/1 SDHC2 is newly added in C0 stepping of Langwell. Without the Moorestown
From: Jacob Pan <[email protected]>
specific quirk, the default pci_probe will be called and crash the kernel.
This patch unblocks the crash problem on C0 by using the same probing function as HC1, which limits the number of slots to one.
Signed-off-by Jacob Pan <[email protected]>
Signed-off-by Alan Cox <[email protected]>
---
drivers/mmc/host/sdhci-pci.c | 20 ++++++++++++++------ include/linux/pci_ids.h | 1 + 2 files changed, 15 insertions(+), 6 deletions(-)
drivers/mmc/host/sdhci-pci.c +14 -6
@@ -149,11 +149,11 @@ static const struct sdhci_pci_fixes sdhci_cafe = {* ADMA operation is disabled for Moorestown platform due to * hardware bugs. */ -static int mrst_hc1_probe (struct sdhci_pci_chip *chip) +static int mrst_hc_probe (struct sdhci_pci_chip *chip) {/* -* slots number is fixed here for MRST as SDIO3 is never used and has -* hardware bugs. +* slots number is fixed here for MRST as SDIO3/5 are never used and +* have hardware bugs. */ chip->num_slots =1 ;return 0 ;
@@ -163,9 +163,9 @@ static const struct sdhci_pci_fixes sdhci_intel_mrst_hc0 = { .quirks = SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_NO_HISPD_BIT, }; -static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1 = { +static const struct sdhci_pci_fixes sdhci_intel_mrst_hc1_hc2 = { .quirks =SDHCI_QUIRK_BROKEN_ADMA |SDHCI_QUIRK_NO_HISPD_BIT , - .probe = mrst_hc1_probe, + .probe = mrst_hc_probe, };static const struct sdhci_pci_fixes sdhci_intel_mfd_sd = {
@@ -538,7 +538,15 @@ static const struct pci_device_id pci_ids[] __devinitdata = { .device = PCI_DEVICE_ID_INTEL_MRST_SD1, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, - .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1, + .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1_hc2, + }, + + { + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_MRST_SD2, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .driver_data = (kernel_ulong_t)&sdhci_intel_mrst_hc1_hc2, }, {
include/linux/pci_ids.h +1 -0
@@ -2440,6 +2440,7 @@#define PCI_DEVICE_ID_INTEL_MFD_SDIO2 0x0822#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_I960 0x0960#define PCI_DEVICE_ID_INTEL_I960RM 0x0962#define PCI_DEVICE_ID_INTEL_8257X_SOL 0x1062
Quoted 10 lines · Alan Cox
From: Jacob Pan <[email protected]>
specific quirk, the default
pci_probewill be called and crash the kernel.This patch unblocks the crash problem on C0 by using the same probing function as HC1, which limits the number of slots to one.
Signed-off-by Jacob Pan <[email protected]>Signed-off-by Alan Cox <[email protected]>---
Hi Alan -- could you resend this with a summary/subject line, please?
Thanks,
- Chris.
Signature · 2 lines
Chris Ball <[email protected]> <http://printf.net/> One Laptop Per Child