linux/sound/firewire
Takashi Sakamoto f0f9f497d4 ALSA: fireface: support rx MIDI functionality for Fireface UCX
In latter model of Fireface series, asynchronous transaction includes
a prefix byte to indicate the way to decode included MIDI bytes.

Upper 4 bits of the prefix byte indicates port number, and the rest 4
bits indicate the way to decode rest of bytes for MIDI messages.

Basically the rest bits indicates the number of bytes for MIDI message.
However, if the last byte of each MIDi message is included, the rest
bits are 0xf. For example:

message: f0 00 00 66 14 20 00 00 f7
offset: content (big endian, port 0)
 '0030: 0x02f00000
 '0030: 0x03006614
 '0030: 0x03200000
 '0030: 0x0ff70000

This commit supports encoding scheme for the above and allows
applications to transfer MIDI messages via ALSA rawmidi interface.
An unused member (running_status) is reused to keep state of
transmission of system exclusive messages.

For your information, this is a dump of config rom.

$ sudo ./hinawa-config-rom-printer /dev/fw1
{ 'bus-info': { 'bmc': False,
                'chip_ID': 13225063715,
                'cmc': False,
                'cyc_clk_acc': 0,
                'imc': False,
                'isc': True,
                'max_rec': 512,
                'name': '1394',
                'node_vendor_ID': 2613},
  'root-directory': [ [ 'NODE_CAPABILITIES',
                        { 'addressing': {'64': True, 'fix': True, 'prv': False},
                          'misc': {'int': False, 'ms': False, 'spt': True},
                          'state': { 'atn': False,
                                     'ded': False,
                                     'drq': True,
                                     'elo': False,
                                     'init': False,
                                     'lst': True,
                                     'off': False},
                          'testing': {'bas': False, 'ext': False}}],
                      ['VENDOR', 2613],
                      ['DESCRIPTOR', 'RME!'],
                      ['EUI_64', 2873037108442403],
                      [ 'UNIT',
                        [ ['SPECIFIER_ID', 2613],
                          ['VERSION', 4],
                          ['MODEL', 1054720],
                          ['DESCRIPTOR', 'Fireface UCX']]]]}

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2019-01-22 17:20:56 +01:00
..
bebob ALSA: bebob: fix model-id of unit for Apogee Ensemble 2018-12-19 14:36:35 +01:00
dice ALSA: dice: fix to wait for releases of all ALSA character devices 2018-10-27 16:52:58 +02:00
digi00x ALSA: firewire: simplify cleanup process when failing to register sound card 2018-10-10 12:11:50 +02:00
fireface ALSA: fireface: support rx MIDI functionality for Fireface UCX 2019-01-22 17:20:56 +01:00
fireworks ALSA: firewire: simplify cleanup process when failing to register sound card 2018-10-10 12:11:50 +02:00
motu ALSA: firewire: simplify cleanup process when failing to register sound card 2018-10-10 12:11:50 +02:00
oxfw ALSA: oxfw: add support for APOGEE duet FireWire 2018-11-13 12:02:01 +01:00
tascam ALSA: firewire-tascam: notify events of change of state for userspace applications 2018-11-23 15:31:15 +01:00
amdtp-am824.c locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE() 2017-10-25 11:01:08 +02:00
amdtp-am824.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
amdtp-stream-trace.h ALSA: firewire-lib: use the same print format for 'without_header' tracepoints 2018-12-16 10:10:21 +01:00
amdtp-stream.c ALSA: firewire-lib: fix wrong handling payload_length as payload_quadlet 2018-12-16 10:10:18 +01:00
amdtp-stream.h Merge branch 'linus' into locking/core, to resolve conflicts 2017-11-07 10:32:44 +01:00
cmp.c ALSA: firewire-lib: fix kerneldoc errors 2014-11-18 18:10:23 +01:00
cmp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fcp.c ALSA: firewire-lib/bebob/oxfw: improve response evaluation for AV/C commands 2017-04-05 21:37:23 +02:00
fcp.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
isight.c ALSA: isight: fix leak of reference to firewire unit in error path of .probe callback 2018-10-12 08:08:04 +02:00
iso-resources.c ALSA: firewire: fix NULL pointer dereference when releasing uninitialized data of iso-resource 2017-08-20 09:40:32 +02:00
iso-resources.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig ALSA: fireface: add support for Fireface UCX 2019-01-21 15:12:25 +01:00
lib.c ALSA: firewire-lib/firewire-tascam: localize async midi port 2017-04-14 14:50:26 +02:00
lib.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
packets-buffer.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
packets-buffer.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00