]> git.baikalelectronics.ru Git - kernel.git/commit
firewire: fix use of multiple AV/C devices, allow multiple FCP listeners
authorClemens Ladisch <cladisch@fastmail.net>
Thu, 24 Dec 2009 11:05:58 +0000 (12:05 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 29 Dec 2009 18:58:16 +0000 (19:58 +0100)
commit7f61d9a6cd8f1f683e0a84abecd6ad9bf81509e6
tree630586f3bdeea2df01c349d3cf27fb2e6317370c
parent1bed234ad63b32b7153b32f25670f986d996fe15
firewire: fix use of multiple AV/C devices, allow multiple FCP listeners

Control of more than one AV/C device at once --- e.g. camcorders, tape
decks, audio devices, TV tuners --- failed or worked only unreliably,
depending on driver implementation.  This affected kernelspace and
userspace drivers alike and was caused by firewire-core's inability to
accept multiple registrations of FCP listeners.

The fix allows multiple address handlers to be registered for the FCP
command and response registers.  When a request for these registers is
received, all handlers are invoked, and the Firewire response is
generated by the core and not by any handler.

The cdev API does not change, i.e., userspace is still expected to send
a response for FCP requests; this response is silently ignored.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (changelog, rebased, whitespace)
drivers/firewire/core-cdev.c
drivers/firewire/core-transaction.c
drivers/media/dvb/firewire/firedtv-fw.c
include/linux/firewire-cdev.h
include/linux/firewire.h