diff options
Diffstat (limited to 'drivers/firewire/ohci.c')
| -rw-r--r-- | drivers/firewire/ohci.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c index ecddd11b797a..76b321bb73f9 100644 --- a/drivers/firewire/ohci.c +++ b/drivers/firewire/ohci.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #include <linux/module.h> | 34 | #include <linux/module.h> |
| 35 | #include <linux/moduleparam.h> | 35 | #include <linux/moduleparam.h> |
| 36 | #include <linux/pci.h> | 36 | #include <linux/pci.h> |
| 37 | #include <linux/pci_ids.h> | ||
| 37 | #include <linux/spinlock.h> | 38 | #include <linux/spinlock.h> |
| 38 | #include <linux/string.h> | 39 | #include <linux/string.h> |
| 39 | 40 | ||
| @@ -2372,6 +2373,9 @@ static void ohci_pmac_off(struct pci_dev *dev) | |||
| 2372 | #define ohci_pmac_off(dev) | 2373 | #define ohci_pmac_off(dev) |
| 2373 | #endif /* CONFIG_PPC_PMAC */ | 2374 | #endif /* CONFIG_PPC_PMAC */ |
| 2374 | 2375 | ||
| 2376 | #define PCI_VENDOR_ID_AGERE PCI_VENDOR_ID_ATT | ||
| 2377 | #define PCI_DEVICE_ID_AGERE_FW643 0x5901 | ||
| 2378 | |||
| 2375 | static int __devinit pci_probe(struct pci_dev *dev, | 2379 | static int __devinit pci_probe(struct pci_dev *dev, |
| 2376 | const struct pci_device_id *ent) | 2380 | const struct pci_device_id *ent) |
| 2377 | { | 2381 | { |
| @@ -2422,6 +2426,16 @@ static int __devinit pci_probe(struct pci_dev *dev, | |||
| 2422 | version = reg_read(ohci, OHCI1394_Version) & 0x00ff00ff; | 2426 | version = reg_read(ohci, OHCI1394_Version) & 0x00ff00ff; |
| 2423 | ohci->use_dualbuffer = version >= OHCI_VERSION_1_1; | 2427 | ohci->use_dualbuffer = version >= OHCI_VERSION_1_1; |
| 2424 | 2428 | ||
| 2429 | /* dual-buffer mode is broken if more than one IR context is active */ | ||
| 2430 | if (dev->vendor == PCI_VENDOR_ID_AGERE && | ||
| 2431 | dev->device == PCI_DEVICE_ID_AGERE_FW643) | ||
| 2432 | ohci->use_dualbuffer = false; | ||
| 2433 | |||
| 2434 | /* dual-buffer mode is broken */ | ||
| 2435 | if (dev->vendor == PCI_VENDOR_ID_RICOH && | ||
| 2436 | dev->device == PCI_DEVICE_ID_RICOH_R5C832) | ||
| 2437 | ohci->use_dualbuffer = false; | ||
| 2438 | |||
| 2425 | /* x86-32 currently doesn't use highmem for dma_alloc_coherent */ | 2439 | /* x86-32 currently doesn't use highmem for dma_alloc_coherent */ |
| 2426 | #if !defined(CONFIG_X86_32) | 2440 | #if !defined(CONFIG_X86_32) |
| 2427 | /* dual-buffer mode is broken with descriptor addresses above 2G */ | 2441 | /* dual-buffer mode is broken with descriptor addresses above 2G */ |
