firewire: ohci: fix Ricoh R5C832, video reception
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Fri, 28 Aug 2009 11:26:03 +0000 (13:26 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 5 Sep 2009 13:59:34 +0000 (15:59 +0200)
In dual-buffer DMA mode, no video frames are ever received from R5C832
by libdc1394.  Fallback to packet-per-buffer DMA works reliably.
http://thread.gmane.org/gmane.linux.kernel.firewire.devel/13393/focus=13476

Reported-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/ohci.c

index 3486bc49c177b5de82f0de8c52b5ee8708e40628..76b321bb73f9419aa52c826a944047388d53cd0a 100644 (file)
@@ -2431,6 +2431,11 @@ static int __devinit pci_probe(struct pci_dev *dev,
            dev->device == PCI_DEVICE_ID_AGERE_FW643)
                ohci->use_dualbuffer = false;
 
+       /* dual-buffer mode is broken */
+       if (dev->vendor == PCI_VENDOR_ID_RICOH &&
+           dev->device == PCI_DEVICE_ID_RICOH_R5C832)
+               ohci->use_dualbuffer = false;
+
 /* x86-32 currently doesn't use highmem for dma_alloc_coherent */
 #if !defined(CONFIG_X86_32)
        /* dual-buffer mode is broken with descriptor addresses above 2G */