aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;