Skip to content

Commit aa0170f

Browse files
author
Stefan Richter
committed
firewire: ohci: fix TI TSB82AA2 regression since 2.6.35
Revert commit 5467238 "firewire: ohci: fix up configuration of TI chips". It caused massive slow-down and data corruption with a TSB82AA2 based StarTech EC1394B2 ExpressCard and FireWire 800 harddisks. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/657081 http://thread.gmane.org/gmane.linux.kernel.firewire.user/4013 The fact that some card EEPROMs do not program these enhancements may be related to TSB81BA3 phy chip errata, if not to bugs of TSB82AA2 itself. We could re-add these configuration steps, but only conditional on a whitelist of cards on which these enhancements bring a proven positive effect. Reported-and-tested-by: Eric Shattow <lucent@gmail.com> Cc: Clemens Ladisch <clemens@ladisch.de> Cc: <stable@kernel.org> 2.6.35 Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
1 parent cd07202 commit aa0170f

File tree

2 files changed

+1
-26
lines changed

2 files changed

+1
-26
lines changed

drivers/firewire/ohci.c

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,7 +2840,7 @@ static int __devinit pci_probe(struct pci_dev *dev,
28402840
const struct pci_device_id *ent)
28412841
{
28422842
struct fw_ohci *ohci;
2843-
u32 bus_options, max_receive, link_speed, version, link_enh;
2843+
u32 bus_options, max_receive, link_speed, version;
28442844
u64 guid;
28452845
int i, err, n_ir, n_it;
28462846
size_t size;
@@ -2894,23 +2894,6 @@ static int __devinit pci_probe(struct pci_dev *dev,
28942894
if (param_quirks)
28952895
ohci->quirks = param_quirks;
28962896

2897-
/* TI OHCI-Lynx and compatible: set recommended configuration bits. */
2898-
if (dev->vendor == PCI_VENDOR_ID_TI) {
2899-
pci_read_config_dword(dev, PCI_CFG_TI_LinkEnh, &link_enh);
2900-
2901-
/* adjust latency of ATx FIFO: use 1.7 KB threshold */
2902-
link_enh &= ~TI_LinkEnh_atx_thresh_mask;
2903-
link_enh |= TI_LinkEnh_atx_thresh_1_7K;
2904-
2905-
/* use priority arbitration for asynchronous responses */
2906-
link_enh |= TI_LinkEnh_enab_unfair;
2907-
2908-
/* required for aPhyEnhanceEnable to work */
2909-
link_enh |= TI_LinkEnh_enab_accel;
2910-
2911-
pci_write_config_dword(dev, PCI_CFG_TI_LinkEnh, link_enh);
2912-
}
2913-
29142897
ar_context_init(&ohci->ar_request_ctx, ohci,
29152898
OHCI1394_AsReqRcvContextControlSet);
29162899

drivers/firewire/ohci.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,4 @@
155155

156156
#define OHCI1394_phy_tcode 0xe
157157

158-
/* TI extensions */
159-
160-
#define PCI_CFG_TI_LinkEnh 0xf4
161-
#define TI_LinkEnh_enab_accel 0x00000002
162-
#define TI_LinkEnh_enab_unfair 0x00000080
163-
#define TI_LinkEnh_atx_thresh_mask 0x00003000
164-
#define TI_LinkEnh_atx_thresh_1_7K 0x00001000
165-
166158
#endif /* _FIREWIRE_OHCI_H */

0 commit comments

Comments
 (0)