summaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2015-01-16 16:15:43 -0500
committerTakashi Iwai <tiwai@suse.de>2015-01-16 16:44:36 -0500
commita5a335336715d8648ffb1b105ea625790b9d984e (patch)
treeb11b87614b3137b89f6eb7deea831b5557601509 /sound/pci
parent0902fbb9ccf7e3be67b9774b0d5f096da44e7c65 (diff)
ALSA: oxygen: add XIO2001 initialization
Configure the XIO2001 bridge on PCI Express cards so that it does less needless prefetching. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/oxygen/oxygen_lib.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
index ab47c1ca21c4..ffff3b25fd73 100644
--- a/sound/pci/oxygen/oxygen_lib.c
+++ b/sound/pci/oxygen/oxygen_lib.c
@@ -319,11 +319,12 @@ static void oxygen_restore_eeprom(struct oxygen *chip,
319 319
320static void configure_pcie_bridge(struct pci_dev *pci) 320static void configure_pcie_bridge(struct pci_dev *pci)
321{ 321{
322 enum { PEX811X, PI7C9X110 }; 322 enum { PEX811X, PI7C9X110, XIO2001 };
323 static const struct pci_device_id bridge_ids[] = { 323 static const struct pci_device_id bridge_ids[] = {
324 { PCI_VDEVICE(PLX, 0x8111), .driver_data = PEX811X }, 324 { PCI_VDEVICE(PLX, 0x8111), .driver_data = PEX811X },
325 { PCI_VDEVICE(PLX, 0x8112), .driver_data = PEX811X }, 325 { PCI_VDEVICE(PLX, 0x8112), .driver_data = PEX811X },
326 { PCI_DEVICE(0x12d8, 0xe110), .driver_data = PI7C9X110 }, 326 { PCI_DEVICE(0x12d8, 0xe110), .driver_data = PI7C9X110 },
327 { PCI_VDEVICE(TI, 0x8240), .driver_data = XIO2001 },
327 { } 328 { }
328 }; 329 };
329 struct pci_dev *bridge; 330 struct pci_dev *bridge;
@@ -357,6 +358,14 @@ static void configure_pcie_bridge(struct pci_dev *pci)
357 tmp |= 1; /* park the PCI arbiter to the sound chip */ 358 tmp |= 1; /* park the PCI arbiter to the sound chip */
358 pci_write_config_dword(bridge, 0x40, tmp); 359 pci_write_config_dword(bridge, 0x40, tmp);
359 break; 360 break;
361
362 case XIO2001: /* Texas Instruments XIO2001 PCIe/PCI bridge */
363 pci_read_config_dword(bridge, 0xe8, &tmp);
364 tmp &= ~0xf; /* request length limit: 64 bytes */
365 tmp &= ~(0xf << 8);
366 tmp |= 1 << 8; /* request count limit: one buffer */
367 pci_write_config_dword(bridge, 0xe8, tmp);
368 break;
360 } 369 }
361} 370}
362 371