ALSA: firewire-tascam: add support for incoming MIDI messages by asynchronous transaction
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 12 Oct 2015 10:10:21 +0000 (19:10 +0900)
committerTakashi Iwai <tiwai@suse.de>
Mon, 12 Oct 2015 12:16:17 +0000 (14:16 +0200)
commit107cc0129a685e88d09af88b8a371caec5c51ff0
tree7f0421ba74c87b31c3d32558320f16eb7d61ba41
parente8bd577ae6df59160cd6fd82b8d3562bbbdd3c1d
ALSA: firewire-tascam: add support for incoming MIDI messages by asynchronous transaction

TASCAM FireWire series use asynchronous transaction to transfer MIDI
messages. The transaction is sent to a registered address.

This commit supports the incoming MIDI messages. The messages in the
transaction include some quirks:
 * Two quadlets are used for one MIDI message and one timestamp.
 * Usually, the first byte of the first quadlet includes MIDI port and MSB
   4 bit of MIDI status. For system exclusive message, the first byte
   includes MIDI port and 0x04, or 0x07 in the end of the message.
 * The rest of the first quadlet includes MIDI bytes up to 3.
 * Several set of MIDI messages and timestamp can be transferred in one
   block transaction, up to 8 sets.

I note that TASCAM FireWire series ignores ID bytes of system exclusive
message. When receiving system exclusive messages with ID bytes on physical
MIDI bus, the series transfers the messages without ID bytes on IEEE 1394
bus, and vice versa.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/tascam/Makefile
sound/firewire/tascam/tascam-transaction.c [new file with mode: 0644]
sound/firewire/tascam/tascam.c
sound/firewire/tascam/tascam.h