Skip to content

Commit

Permalink
firewire: ohci: fix up configuration of TI chips
Browse files Browse the repository at this point in the history
On TI chips (OHCI-Lynx and later), enable link enhancements features
that TI recommends to be used.  None of these are required for proper
operation, but they are safe and nice to have.

In theory, these bits should have been set by default, but in practice,
some BIOS/EEPROM writers apparently do not read the datasheet, or get
spooked by names like "unfair".

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
  • Loading branch information
Clemens Ladisch authored and Stefan Richter committed Apr 10, 2010
1 parent 925e7a6 commit 5467238
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
19 changes: 18 additions & 1 deletion drivers/firewire/ohci.c
Original file line number Diff line number Diff line change
Expand Up @@ -2431,7 +2431,7 @@ static int __devinit pci_probe(struct pci_dev *dev,
const struct pci_device_id *ent)
{
struct fw_ohci *ohci;
u32 bus_options, max_receive, link_speed, version;
u32 bus_options, max_receive, link_speed, version, link_enh;
u64 guid;
int i, err, n_ir, n_it;
size_t size;
Expand Down Expand Up @@ -2484,6 +2484,23 @@ static int __devinit pci_probe(struct pci_dev *dev,
if (param_quirks)
ohci->quirks = param_quirks;

/* TI OHCI-Lynx and compatible: set recommended configuration bits. */
if (dev->vendor == PCI_VENDOR_ID_TI) {
pci_read_config_dword(dev, PCI_CFG_TI_LinkEnh, &link_enh);

/* adjust latency of ATx FIFO: use 1.7 KB threshold */
link_enh &= ~TI_LinkEnh_atx_thresh_mask;
link_enh |= TI_LinkEnh_atx_thresh_1_7K;

/* use priority arbitration for asynchronous responses */
link_enh |= TI_LinkEnh_enab_unfair;

/* required for aPhyEnhanceEnable to work */
link_enh |= TI_LinkEnh_enab_accel;

pci_write_config_dword(dev, PCI_CFG_TI_LinkEnh, link_enh);
}

ar_context_init(&ohci->ar_request_ctx, ohci,
OHCI1394_AsReqRcvContextControlSet);

Expand Down
8 changes: 8 additions & 0 deletions drivers/firewire/ohci.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,4 +154,12 @@

#define OHCI1394_phy_tcode 0xe

/* TI extensions */

#define PCI_CFG_TI_LinkEnh 0xf4
#define TI_LinkEnh_enab_accel 0x00000002
#define TI_LinkEnh_enab_unfair 0x00000080
#define TI_LinkEnh_atx_thresh_mask 0x00003000
#define TI_LinkEnh_atx_thresh_1_7K 0x00001000

#endif /* _FIREWIRE_OHCI_H */

0 comments on commit 5467238

Please sign in to comment.