diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2015-01-16 16:15:43 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-01-16 16:44:36 -0500 |
commit | a5a335336715d8648ffb1b105ea625790b9d984e (patch) | |
tree | b11b87614b3137b89f6eb7deea831b5557601509 /sound/pci | |
parent | 0902fbb9ccf7e3be67b9774b0d5f096da44e7c65 (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.c | 11 |
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 | ||
320 | static void configure_pcie_bridge(struct pci_dev *pci) | 320 | static 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 | ||