|
@@ -1417,6 +1417,38 @@ static void quirk_disable_intel_boot_interrupt(struct pci_dev *dev)
|
|
|
dev->vendor, dev->device);
|
|
|
}
|
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt);
|
|
|
+
|
|
|
+/*
|
|
|
+ * disable boot interrupts on HT-1000
|
|
|
+ */
|
|
|
+#define BC_HT1000_FEATURE_REG 0x64
|
|
|
+#define BC_HT1000_PIC_REGS_ENABLE (1<<0)
|
|
|
+#define BC_HT1000_MAP_IDX 0xC00
|
|
|
+#define BC_HT1000_MAP_DATA 0xC01
|
|
|
+
|
|
|
+static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev)
|
|
|
+{
|
|
|
+ u32 pci_config_dword;
|
|
|
+ u8 irq;
|
|
|
+
|
|
|
+ if (noioapicquirk)
|
|
|
+ return;
|
|
|
+
|
|
|
+ pci_read_config_dword(dev, BC_HT1000_FEATURE_REG, &pci_config_dword);
|
|
|
+ pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword |
|
|
|
+ BC_HT1000_PIC_REGS_ENABLE);
|
|
|
+
|
|
|
+ for (irq = 0x10; irq < 0x10 + 32; irq++) {
|
|
|
+ outb(irq, BC_HT1000_MAP_IDX);
|
|
|
+ outb(0x00, BC_HT1000_MAP_DATA);
|
|
|
+ }
|
|
|
+
|
|
|
+ pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword);
|
|
|
+
|
|
|
+ printk(KERN_INFO "disabled boot interrupts on PCI device"
|
|
|
+ "0x%04x:0x%04x\n", dev->vendor, dev->device);
|
|
|
+}
|
|
|
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000SB, quirk_disable_broadcom_boot_interrupt);
|
|
|
#endif /* CONFIG_X86_IO_APIC */
|
|
|
|
|
|
/*
|