diff options
Diffstat (limited to 'drivers/firewire/ohci.c')
-rw-r--r-- | drivers/firewire/ohci.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index e934713f3fce..6a27a0ef3b63 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
@@ -2431,7 +2431,7 @@ static int __devinit pci_probe(struct pci_dev *dev, | |||
2431 | const struct pci_device_id *ent) | 2431 | const struct pci_device_id *ent) |
2432 | { | 2432 | { |
2433 | struct fw_ohci *ohci; | 2433 | struct fw_ohci *ohci; |
2434 | u32 bus_options, max_receive, link_speed, version; | 2434 | u32 bus_options, max_receive, link_speed, version, link_enh; |
2435 | u64 guid; | 2435 | u64 guid; |
2436 | int i, err, n_ir, n_it; | 2436 | int i, err, n_ir, n_it; |
2437 | size_t size; | 2437 | size_t size; |
@@ -2484,6 +2484,23 @@ static int __devinit pci_probe(struct pci_dev *dev, | |||
2484 | if (param_quirks) | 2484 | if (param_quirks) |
2485 | ohci->quirks = param_quirks; | 2485 | ohci->quirks = param_quirks; |
2486 | 2486 | ||
2487 | /* TI OHCI-Lynx and compatible: set recommended configuration bits. */ | ||
2488 | if (dev->vendor == PCI_VENDOR_ID_TI) { | ||
2489 | pci_read_config_dword(dev, PCI_CFG_TI_LinkEnh, &link_enh); | ||
2490 | |||
2491 | /* adjust latency of ATx FIFO: use 1.7 KB threshold */ | ||
2492 | link_enh &= ~TI_LinkEnh_atx_thresh_mask; | ||
2493 | link_enh |= TI_LinkEnh_atx_thresh_1_7K; | ||
2494 | |||
2495 | /* use priority arbitration for asynchronous responses */ | ||
2496 | link_enh |= TI_LinkEnh_enab_unfair; | ||
2497 | |||
2498 | /* required for aPhyEnhanceEnable to work */ | ||
2499 | link_enh |= TI_LinkEnh_enab_accel; | ||
2500 | |||
2501 | pci_write_config_dword(dev, PCI_CFG_TI_LinkEnh, link_enh); | ||
2502 | } | ||
2503 | |||
2487 | ar_context_init(&ohci->ar_request_ctx, ohci, | 2504 | ar_context_init(&ohci->ar_request_ctx, ohci, |
2488 | OHCI1394_AsReqRcvContextControlSet); | 2505 | OHCI1394_AsReqRcvContextControlSet); |
2489 | 2506 | ||