|
@@ -1242,6 +1242,33 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_pc
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh);
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_pcie_pxh);
|
|
|
|
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Fixup the cardbus bridges on the IBM Dock II docking station
|
|
|
|
+ */
|
|
|
|
+static void __devinit quirk_ibm_dock2_cardbus(struct pci_dev *dev)
|
|
|
|
+{
|
|
|
|
+ u32 val;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * tie the 2 interrupt pins to INTA, and configure the
|
|
|
|
+ * multifunction routing register to handle this.
|
|
|
|
+ */
|
|
|
|
+ if ((dev->subsystem_vendor == PCI_VENDOR_ID_IBM) &&
|
|
|
|
+ (dev->subsystem_device == 0x0148)) {
|
|
|
|
+ printk(KERN_INFO "PCI: Found IBM Dock II Cardbus Bridge "
|
|
|
|
+ "applying quirk\n");
|
|
|
|
+ pci_read_config_dword(dev, 0x8c, &val);
|
|
|
|
+ val = ((val & 0xffffff00) | 0x1002);
|
|
|
|
+ pci_write_config_dword(dev, 0x8c, val);
|
|
|
|
+ pci_read_config_dword(dev, 0x80, &val);
|
|
|
|
+ val = ((val & 0x00ffff00) | 0x2864c077);
|
|
|
|
+ pci_write_config_dword(dev, 0x80, val);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1420,
|
|
|
|
+ quirk_ibm_dock2_cardbus);
|
|
|
|
+
|
|
static void __devinit quirk_netmos(struct pci_dev *dev)
|
|
static void __devinit quirk_netmos(struct pci_dev *dev)
|
|
{
|
|
{
|
|
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|
|
unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;
|