]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: Olaf Dabrunz <od@suse.de> |
2 | ||
3 | Subject: Add quirk to disable boot interrupt generation on broadcom HT1000 | |
4 | ||
5 | Signed-off-by: Olaf Dabrunz <od@suse.de> | |
6 | Signed-off-by: Stefan Assmann <sassmann@suse.de> | |
7 | --- | |
8 | drivers/pci/quirks.c | 32 ++++++++++++++++++++++++++++++++ | |
9 | 1 file changed, 32 insertions(+) | |
10 | ||
11 | --- a/drivers/pci/quirks.c | |
12 | +++ b/drivers/pci/quirks.c | |
13 | @@ -1477,6 +1477,38 @@ static void quirk_disable_intel_boot_int | |
14 | dev->vendor, dev->device); | |
15 | } | |
16 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_10, quirk_disable_intel_boot_interrupt); | |
17 | + | |
18 | +/* | |
19 | + * disable boot interrupts on HT-1000 | |
20 | + */ | |
21 | +#define BC_HT1000_FEATURE_REG 0x64 | |
22 | +#define BC_HT1000_PIC_REGS_ENABLE (1<<0) | |
23 | +#define BC_HT1000_MAP_IDX 0xC00 | |
24 | +#define BC_HT1000_MAP_DATA 0xC01 | |
25 | + | |
26 | +static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev) | |
27 | +{ | |
28 | + u32 pci_config_dword; | |
29 | + u8 irq; | |
30 | + | |
31 | + if (noioapicquirk) | |
32 | + return; | |
33 | + | |
34 | + pci_read_config_dword(dev, BC_HT1000_FEATURE_REG, &pci_config_dword); | |
35 | + pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword | | |
36 | + BC_HT1000_PIC_REGS_ENABLE); | |
37 | + | |
38 | + for (irq = 0x10; irq < 0x10 + 32; irq++) { | |
39 | + outb(irq, BC_HT1000_MAP_IDX); | |
40 | + outb(0x00, BC_HT1000_MAP_DATA); | |
41 | + } | |
42 | + | |
43 | + pci_write_config_dword(dev, BC_HT1000_FEATURE_REG, pci_config_dword); | |
44 | + | |
45 | + printk(KERN_INFO "disabled boot interrupts on PCI device" | |
46 | + "0x%04x:0x%04x\n", dev->vendor, dev->device); | |
47 | +} | |
48 | +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT1000SB, quirk_disable_broadcom_boot_interrupt); | |
49 | #endif /* CONFIG_X86_IO_APIC */ | |
50 | ||
51 | /* |