aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c32
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}
1419DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt); 1419DECLARE_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
1429static 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}
1451DECLARE_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/*