[PATCH] VIA IRQ quirk fixup only in XT_PIC mode take 1 was [PATCH] Add SATA device to VIA IRQ quirk fixup list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi , 
Ok here is my first try against 2.6.17, I like the solution , but I have
time to test it, because I have to build the kernel again, I test if
compiles. 
Just though that I should send this patch soon as possible.
Any feed-back is welcome !
Thanks, 
 

Cc: Alan Cox <[email protected]>
Cc: "Scott J. Harmon" <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Chris Wedgwood <[email protected]>
Cc: Greg KH <[email protected]>
Signed-off-by: Sergio Monteiro Basto <[email protected]>
---

 quirks.c |   20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

--- linux-2.6.17.orig/drivers/pci/quirks.c	2006-06-18 02:49:35.000000000 +0100
+++ linux-2.6.17/drivers/pci/quirks.c	2006-07-28 02:20:00.000000000 +0100
@@ -642,22 +653,18 @@ static void quirk_via_irq(struct pci_dev
 {
 	u8 irq, new_irq;
 
-	new_irq = dev->irq & 0xf;
-	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
-	if (new_irq != irq) {
-		printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
-			pci_name(dev), irq, new_irq);
-		udelay(15);	/* unknown if delay really needed */
-		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
-	}
-}
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
+	if (!smp_found_config && !cpu_has_apic) {
+		new_irq = dev->irq & 0xf;
+		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
+		if (new_irq != irq) {
+			printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
+				pci_name(dev), irq, new_irq);
+			udelay(15);	/* unknown if delay really needed */
+			pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
+		}
+	}
+}
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq);
 
 /*
  * VIA VT82C598 has its device ID settable and many BIOSes


--- linux-2.6.17.orig/drivers/pci/quirks.c	2006-06-18 02:49:35.000000000 +0100
+++ linux-2.6.17/drivers/pci/quirks.c	2006-07-28 02:20:00.000000000 +0100
@@ -642,22 +653,18 @@ static void quirk_via_irq(struct pci_dev
 {
 	u8 irq, new_irq;
 
-	new_irq = dev->irq & 0xf;
-	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
-	if (new_irq != irq) {
-		printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
-			pci_name(dev), irq, new_irq);
-		udelay(15);	/* unknown if delay really needed */
-		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
-	}
-}
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
+	if (!smp_found_config && !cpu_has_apic) {
+		new_irq = dev->irq & 0xf;
+		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
+		if (new_irq != irq) {
+			printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
+				pci_name(dev), irq, new_irq);
+			udelay(15);	/* unknown if delay really needed */
+			pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
+		}
+	}
+}
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq);
 
 /*
  * VIA VT82C598 has its device ID settable and many BIOSes

Attachment: smime.p7s
Description: S/MIME cryptographic signature


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux