Hi,
This commit updates my former post (patch 13, 15, 16):
[alsa-devel] [PATCH 00/25 v2] ALSA: support AMDTP variants http://mailman.alsa-project.org/pipermail/alsa-devel/2015-August/096739.html
Digi 00x driver may be newly available in Linux 4.4. This patchset adds ALSA MIDI ports to support physical MIDI ports and physical controls. I tested physical MIDI ports, while never tested physical controls because I'm not an owner of 'console' models.
The functionality for physical controls is written according to my assumption. When I investigated Digi 002 rack, Windows driver registers a certain address to the device, and adds virtual MIDI ports to the system. These ports are named as 'control'. When MIDI application sends MIDI messages to the port, asynchronous transactions start on IEEE 1394 bus. On the other hand, I have no way to confirm asynchronous transaction in opposite direction because the rack model doesn't have the functionality. In this time, I apply the same format of outgoing asynchronous transaction to incoming asynchronous transaction.
Takashi Sakamoto (6): firewire-digi00x: use in-kernel representation for the type of 8 bits firewire-digi00x: handle MIDI messages in isochronous packets firewire-digi00x: add support for MIDI ports corresponding to isochronous packet streaming firewire-digi00x: add support of asynchronous transaction for incoming MIDI messages from physical controls firewire-digi00x: add support of asynchronous transaction for outgoing MIDI messages to physical controls firewire-digi00x: add support for MIDI ports for physical controls
sound/firewire/digi00x/Makefile | 2 +- sound/firewire/digi00x/amdtp-dot.c | 150 +++++++++++++++++++++---- sound/firewire/digi00x/digi00x-midi.c | 160 +++++++++++++++++++++++++++ sound/firewire/digi00x/digi00x-stream.c | 6 +- sound/firewire/digi00x/digi00x-transaction.c | 70 ++++++++++-- sound/firewire/digi00x/digi00x.c | 4 + sound/firewire/digi00x/digi00x.h | 15 ++- 7 files changed, 376 insertions(+), 31 deletions(-) create mode 100644 sound/firewire/digi00x/digi00x-midi.c