firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others
Camcorders have a tendency to fail read requests to their config ROM and write request to their FCP command register with ack_busy_X. This has become a problem with newer kernels and especially Panasonic camcorders, causing AV/C in dvgrab and kino to fail. Dvgrab for example frequently logs "send oops"; kino reports loss of AV/C control. I suspect that lower CPU scheduling latencies in newer kernels made this issue more prominent now. According to https://sourceforge.net/tracker/?func=detail&atid=114103&aid=2492640&group_id=14103 this can be fixed by configuring the FireWire controller for more hardware retries for request transmission; these retries are evidently more successful than libavc1394's own retry loop (typically 3 tries on top of hardware retries). Presumably the same issue has been reported at https://bugzilla.redhat.com/show_bug.cgi?id=449252 and https://bugzilla.redhat.com/show_bug.cgi?id=477279 . In a quick test with a JVC camcorder (which didn't malfunction like the reported camcorders), this change decreased the number of ack_busy_X from 16 in three runs of dvgrab to 4 in three runs of the same capture duration. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
b006854955
commit
8b7b6afaa8
|
@ -226,7 +226,7 @@ static inline struct fw_ohci *fw_ohci(struct fw_card *card)
|
||||||
#define CONTEXT_DEAD 0x0800
|
#define CONTEXT_DEAD 0x0800
|
||||||
#define CONTEXT_ACTIVE 0x0400
|
#define CONTEXT_ACTIVE 0x0400
|
||||||
|
|
||||||
#define OHCI1394_MAX_AT_REQ_RETRIES 0x2
|
#define OHCI1394_MAX_AT_REQ_RETRIES 0xf
|
||||||
#define OHCI1394_MAX_AT_RESP_RETRIES 0x2
|
#define OHCI1394_MAX_AT_RESP_RETRIES 0x2
|
||||||
#define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8
|
#define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue