diff options
Diffstat (limited to 'sound/pci')
-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 */ |