aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorOlaf Dabrunz <od@suse.de>2008-07-08 09:59:47 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-13 16:59:46 -0400
commit7725118815537bd481a81828fa125ee154ee74fc (patch)
tree58dc627ab1a16b68fba8a1b54c5e431290b89e83 /drivers/pci
parentdbbcfb2211761fa69e831a78119c9288fb87eb9d (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>
Diffstat (limited to 'drivers/pci')
-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 9871a3cca4d..d1f0281279c 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/*