lkml.org 
[lkml]   [2004]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Re: PCI IRQ problems -- update
> The ICH3-M datasheet says offset 0x09 is the Programming Interface
> register. Default value is 0x8A (legacy on both), value here is 0x8E
> (legacy on primary, native on secondary). This mixed-mode setting
> is noted as a disallowed combination in the datasheet.
>
> So it looks like my BIOS is screwing me. Where could/should I fix
> this up?

I added a quirk for this case. This is against 2.6.10-rc3, and it
makes all of my problems go away cleanly. Is this reasonable?

-jim

--- a/drivers/pci/quirks.c 2004-12-10 19:18:50.000000000 -0500
+++ b/drivers/pci/quirks.c 2004-12-11 16:32:41.000000000 -0500
@@ -717,6 +717,26 @@
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_CSB5IDE, quirk_svwks_csb5ide );

+/*
+ * Intel 82801CAM ICH3-M datasheet says IDE modes must be the same
+ */
+static void __init quirk_ide_samemode(struct pci_dev *pdev)
+{
+ u8 prog;
+ pci_read_config_byte(pdev, PCI_CLASS_PROG, &prog);
+ if ( ((prog & 1) && !(prog & 4)) || ((prog & 4) && !(prog & 1)) )
+ {
+ printk(KERN_INFO
+ "PCI: IDE mode mismatch; forcing legacy mode\n");
+ prog &= ~5;
+ pdev->class &= ~5;
+ pci_write_config_byte(pdev, PCI_CLASS_PROG, prog);
+ /* need to re-assign BARs for compat mode */
+ quirk_ide_bases(pdev);
+ }
+}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_10, quirk_ide_samemode);
+
/* This was originally an Alpha specific thing, but it really fits here.
* The i82375 PCI/EISA bridge appears as non-classified. Fix that.
*/
-
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/
\
 
 \ /
  Last update: 2005-03-22 14:08    [W:1.091 / U:0.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site