Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761331AbYFBNwO (ORCPT ); Mon, 2 Jun 2008 09:52:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755600AbYFBNv6 (ORCPT ); Mon, 2 Jun 2008 09:51:58 -0400 Received: from mx1.suse.de ([195.135.220.2]:53239 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753473AbYFBNv5 (ORCPT ); Mon, 2 Jun 2008 09:51:57 -0400 From: Olaf Dabrunz To: Thomas Gleixner Cc: Ingo Molnar , "H. Peter Anvin" , Jon Masters , linux-kernel@vger.kernel.org, Olaf Dabrunz , Stefan Assmann Subject: [PATCH 4/7] disable broadcomm legacy boot interrupt generation Date: Mon, 2 Jun 2008 14:45:04 +0200 Message-Id: <12124107072891-git-send-email-od@suse.de> X-Mailer: git-send-email 1.5.2.4 In-Reply-To: <12124107071847-git-send-email-od@suse.de> References: <12124107071847-git-send-email-od@suse.de> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1805 Lines: 62 From: Olaf Dabrunz Add a quirk to disable legacy boot interrupt generation on broadcomm HT1000. Signed-off-by: Olaf Dabrunz Signed-off-by: Stefan Assmann --- 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/