aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristen Accardi <kristen.c.accardi@intel.com>2006-01-17 19:57:04 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-23 17:35:10 -0500
commitc408a3794d6222ab43ab26648385f850a82f0803 (patch)
tree08133e5100c56da1f7e9e8ccd02f0ec9760312ea
parente3ac86d8b3f5cee1afaa3e9e6984d0321149b948 (diff)
[PATCH] PCI: quirk for IBM Dock II cardbus controllers
The IBM Dock II cardbus bridges require some extra configuration before Yenta is loaded in order to setup the Interrupts to be routed properly. Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/quirks.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index dda6099903c1..7ec9fc9a9a42 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1242,6 +1242,33 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_pc
1242DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh); 1242DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh);
1243 1243
1244 1244
1245/*
1246 * Fixup the cardbus bridges on the IBM Dock II docking station
1247 */
1248static void __devinit quirk_ibm_dock2_cardbus(struct pci_dev *dev)
1249{
1250 u32 val;
1251
1252 /*
1253 * tie the 2 interrupt pins to INTA, and configure the
1254 * multifunction routing register to handle this.
1255 */
1256 if ((dev->subsystem_vendor == PCI_VENDOR_ID_IBM) &&
1257 (dev->subsystem_device == 0x0148)) {
1258 printk(KERN_INFO "PCI: Found IBM Dock II Cardbus Bridge "
1259 "applying quirk\n");
1260 pci_read_config_dword(dev, 0x8c, &val);
1261 val = ((val & 0xffffff00) | 0x1002);
1262 pci_write_config_dword(dev, 0x8c, val);
1263 pci_read_config_dword(dev, 0x80, &val);
1264 val = ((val & 0x00ffff00) | 0x2864c077);
1265 pci_write_config_dword(dev, 0x80, val);
1266 }
1267}
1268
1269DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1420,
1270 quirk_ibm_dock2_cardbus);
1271
1245static void __devinit quirk_netmos(struct pci_dev *dev) 1272static void __devinit quirk_netmos(struct pci_dev *dev)
1246{ 1273{
1247 unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4; 1274 unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;