diff options
| author | Olaf Dabrunz <od@suse.de> | 2008-07-08 09:59:47 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-13 16:59:46 -0400 |
| commit | 7725118815537bd481a81828fa125ee154ee74fc (patch) | |
| tree | 58dc627ab1a16b68fba8a1b54c5e431290b89e83 | |
| parent | dbbcfb2211761fa69e831a78119c9288fb87eb9d (diff) | |
PCI quirks: add quirk to disable boot interrupt generation on broadcom HT1000
Signed-off-by: Olaf Dabrunz <od@suse.de>
Signed-off-by: Stefan Assmann <sassmann@suse.de>
Cc: Jon Masters <jonathan@jonmasters.org>
Cc: Olaf Dabrunz <od@suse.de>
Cc: Stefan Assmann <sassmann@suse.de>
Cc: Ihno Krumreich <ihno@suse.de>
Cc: Sven Dietrich <sdietrich@suse.de>
Cc: Daniel Gollub <dgollub@suse.de>
Cc: Felix Foerster <ffoerster@suse.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | drivers/pci/quirks.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 9871a3cca4d4..d1f0281279c3 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -1417,6 +1417,38 @@ static void quirk_disable_intel_boot_interrupt(struct pci_dev *dev) | |||
| 1417 | dev->vendor, dev->device); | 1417 | dev->vendor, dev->device); |
| 1418 | } | 1418 | } |
| 1419 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt); | 1419 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt); |
| 1420 | |||
| 1421 | /* | ||
| 1422 | * disable boot interrupts on HT-1000 | ||
| 1423 | */ | ||
| 1424 | #define BC_HT1000_FEATURE_REG 0x64 | ||
| 1425 | #define BC_HT1000_PIC_REGS_ENABLE (1<<0) | ||
| 1426 | #define BC_HT1000_MAP_IDX 0xC00 | ||
| 1427 | #define BC_HT1000_MAP_DATA 0xC01 | ||
| 1428 | |||
| 1429 | static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev) | ||
| 1430 | { | ||
| 1431 | u32 pci_config_dword; | ||
| 1432 | u8 irq; | ||
| 1433 | |||
| 1434 | if (noioapicquirk) | ||
| 1435 | return; | ||
| 1436 | |||
| 1437 | pci_read_config_dword(dev, BC_HT1000_FEATURE_REG, &pci_config_dword); | ||
| 1438 | pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword | | ||
| 1439 | BC_HT1000_PIC_REGS_ENABLE); | ||
| 1440 | |||
| 1441 | for (irq = 0x10; irq < 0x10 + 32; irq++) { | ||
| 1442 | outb(irq, BC_HT1000_MAP_IDX); | ||
| 1443 | outb(0x00, BC_HT1000_MAP_DATA); | ||
| 1444 | } | ||
| 1445 | |||
| 1446 | pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword); | ||
| 1447 | |||
| 1448 | printk(KERN_INFO "disabled boot interrupts on PCI device" | ||
| 1449 | "0x%04x:0x%04x\n", dev->vendor, dev->device); | ||
| 1450 | } | ||
| 1451 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000SB, quirk_disable_broadcom_boot_interrupt); | ||
| 1420 | #endif /* CONFIG_X86_IO_APIC */ | 1452 | #endif /* CONFIG_X86_IO_APIC */ |
| 1421 | 1453 | ||
| 1422 | /* | 1454 | /* |
