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 /drivers/pci/quirks.c | |
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>
Diffstat (limited to 'drivers/pci/quirks.c')
-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 | /* |