Messages in this thread Patch in this message | | | From | Olaf Dabrunz <> | Subject | [PATCH 4/7] disable broadcomm legacy boot interrupt generation | Date | Mon, 2 Jun 2008 14:45:04 +0200 |
| |
From: Olaf Dabrunz <od@suse.de>
Add a quirk to disable legacy boot interrupt generation on broadcomm HT1000.
Signed-off-by: Olaf Dabrunz <od@suse.de> Signed-off-by: Stefan Assmann <sassmann@suse.de> --- drivers/pci/quirks.c | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 8f09f8f..e2fed6c 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1377,6 +1377,36 @@ int nobootirqquirk_setup(char *str) __setup("nobootirqquirk", nobootirqquirk_setup); /* + * disabled boot interrupts on HT-1000 + */ +static void quirk_disable_broadcom_boot_interrupt(struct pci_dev *dev) +{ + u32 feature_enable; + u32 saved_feature_enable; + u8 irq; + + if (nobootirqquirk) + return; + + pci_read_config_dword(dev, 0x64, + &feature_enable); + saved_feature_enable = feature_enable; + feature_enable |= (1<<0); + pci_write_config_dword(dev, 0x64, feature_enable); + + for (irq = 0x10; irq < 0x10 + 32; irq++) { + outb(irq, 0xC00); + outb(0x00, 0xC01); + } + + pci_write_config_dword(dev, 0x64, saved_feature_enable); + + 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); + +/* * On some chipsets we can disable the generation of legacy INTx boot * interrupts. */ -- 1.5.2.4 -- Olaf Dabrunz (od/odabrunz), SUSE Linux Products GmbH, Nürnberg
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |