diff options
| -rw-r--r-- | sound/pci/oxygen/oxygen_lib.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index d10cc6ee1a68..e5ebe56fb0c5 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c | |||
| @@ -310,8 +310,10 @@ static void oxygen_restore_eeprom(struct oxygen *chip, | |||
| 310 | 310 | ||
| 311 | static void configure_pcie_bridge(struct pci_dev *pci) | 311 | static void configure_pcie_bridge(struct pci_dev *pci) |
| 312 | { | 312 | { |
| 313 | enum { PI7C9X110 }; | 313 | enum { PEX811X, PI7C9X110 }; |
| 314 | static const struct pci_device_id bridge_ids[] = { | 314 | static const struct pci_device_id bridge_ids[] = { |
| 315 | { PCI_VDEVICE(PLX, 0x8111), .driver_data = PEX811X }, | ||
| 316 | { PCI_VDEVICE(PLX, 0x8112), .driver_data = PEX811X }, | ||
| 315 | { PCI_DEVICE(0x12d8, 0xe110), .driver_data = PI7C9X110 }, | 317 | { PCI_DEVICE(0x12d8, 0xe110), .driver_data = PI7C9X110 }, |
| 316 | { } | 318 | { } |
| 317 | }; | 319 | }; |
| @@ -328,6 +330,19 @@ static void configure_pcie_bridge(struct pci_dev *pci) | |||
| 328 | return; | 330 | return; |
| 329 | 331 | ||
| 330 | switch (id->driver_data) { | 332 | switch (id->driver_data) { |
| 333 | case PEX811X: /* PLX PEX8111/PEX8112 PCIe/PCI bridge */ | ||
| 334 | pci_read_config_dword(bridge, 0x48, &tmp); | ||
| 335 | tmp |= 1; /* enable blind prefetching */ | ||
| 336 | tmp |= 1 << 11; /* enable beacon generation */ | ||
| 337 | pci_write_config_dword(bridge, 0x48, tmp); | ||
| 338 | |||
| 339 | pci_write_config_dword(bridge, 0x84, 0x0c); | ||
| 340 | pci_read_config_dword(bridge, 0x88, &tmp); | ||
| 341 | tmp &= ~(7 << 27); | ||
| 342 | tmp |= 2 << 27; /* set prefetch size to 128 bytes */ | ||
| 343 | pci_write_config_dword(bridge, 0x88, tmp); | ||
| 344 | break; | ||
| 345 | |||
| 331 | case PI7C9X110: /* Pericom PI7C9X110 PCIe/PCI bridge */ | 346 | case PI7C9X110: /* Pericom PI7C9X110 PCIe/PCI bridge */ |
| 332 | pci_read_config_dword(bridge, 0x40, &tmp); | 347 | pci_read_config_dword(bridge, 0x40, &tmp); |
| 333 | tmp |= 1; /* park the PCI arbiter to the sound chip */ | 348 | tmp |= 1; /* park the PCI arbiter to the sound chip */ |
