• Takashi Sakamoto's avatar
    ALSA: fireface: support rx MIDI functionality for Fireface UCX · f0f9f497
    Takashi Sakamoto authored
    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: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    f0f9f497
ff.h 4.58 KB