static void configure_pcie_bridge(struct pci_dev *pci)
 {
-       enum { PI7C9X110 };
+       enum { PEX811X, PI7C9X110 };
        static const struct pci_device_id bridge_ids[] = {
+               { PCI_VDEVICE(PLX, 0x8111), .driver_data = PEX811X },
+               { PCI_VDEVICE(PLX, 0x8112), .driver_data = PEX811X },
                { PCI_DEVICE(0x12d8, 0xe110), .driver_data = PI7C9X110 },
                { }
        };
                return;
 
        switch (id->driver_data) {
+       case PEX811X:   /* PLX PEX8111/PEX8112 PCIe/PCI bridge */
+               pci_read_config_dword(bridge, 0x48, &tmp);
+               tmp |= 1;       /* enable blind prefetching */
+               tmp |= 1 << 11; /* enable beacon generation */
+               pci_write_config_dword(bridge, 0x48, tmp);
+
+               pci_write_config_dword(bridge, 0x84, 0x0c);
+               pci_read_config_dword(bridge, 0x88, &tmp);
+               tmp &= ~(7 << 27);
+               tmp |= 2 << 27; /* set prefetch size to 128 bytes */
+               pci_write_config_dword(bridge, 0x88, tmp);
+               break;
+
        case PI7C9X110: /* Pericom PI7C9X110 PCIe/PCI bridge */
                pci_read_config_dword(bridge, 0x40, &tmp);
                tmp |= 1;       /* park the PCI arbiter to the sound chip */