162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Universal MIDI Packet (UMP): Message Definitions 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci#ifndef __SOUND_UMP_MSG_H 662306a36Sopenharmony_ci#define __SOUND_UMP_MSG_H 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* MIDI 1.0 / 2.0 Status Code (4bit) */ 962306a36Sopenharmony_cienum { 1062306a36Sopenharmony_ci UMP_MSG_STATUS_PER_NOTE_RCC = 0x0, 1162306a36Sopenharmony_ci UMP_MSG_STATUS_PER_NOTE_ACC = 0x1, 1262306a36Sopenharmony_ci UMP_MSG_STATUS_RPN = 0x2, 1362306a36Sopenharmony_ci UMP_MSG_STATUS_NRPN = 0x3, 1462306a36Sopenharmony_ci UMP_MSG_STATUS_RELATIVE_RPN = 0x4, 1562306a36Sopenharmony_ci UMP_MSG_STATUS_RELATIVE_NRPN = 0x5, 1662306a36Sopenharmony_ci UMP_MSG_STATUS_PER_NOTE_PITCH_BEND = 0x6, 1762306a36Sopenharmony_ci UMP_MSG_STATUS_NOTE_OFF = 0x8, 1862306a36Sopenharmony_ci UMP_MSG_STATUS_NOTE_ON = 0x9, 1962306a36Sopenharmony_ci UMP_MSG_STATUS_POLY_PRESSURE = 0xa, 2062306a36Sopenharmony_ci UMP_MSG_STATUS_CC = 0xb, 2162306a36Sopenharmony_ci UMP_MSG_STATUS_PROGRAM = 0xc, 2262306a36Sopenharmony_ci UMP_MSG_STATUS_CHANNEL_PRESSURE = 0xd, 2362306a36Sopenharmony_ci UMP_MSG_STATUS_PITCH_BEND = 0xe, 2462306a36Sopenharmony_ci UMP_MSG_STATUS_PER_NOTE_MGMT = 0xf, 2562306a36Sopenharmony_ci}; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* MIDI 1.0 Channel Control (7bit) */ 2862306a36Sopenharmony_cienum { 2962306a36Sopenharmony_ci UMP_CC_BANK_SELECT = 0, 3062306a36Sopenharmony_ci UMP_CC_MODULATION = 1, 3162306a36Sopenharmony_ci UMP_CC_BREATH = 2, 3262306a36Sopenharmony_ci UMP_CC_FOOT = 4, 3362306a36Sopenharmony_ci UMP_CC_PORTAMENTO_TIME = 5, 3462306a36Sopenharmony_ci UMP_CC_DATA = 6, 3562306a36Sopenharmony_ci UMP_CC_VOLUME = 7, 3662306a36Sopenharmony_ci UMP_CC_BALANCE = 8, 3762306a36Sopenharmony_ci UMP_CC_PAN = 10, 3862306a36Sopenharmony_ci UMP_CC_EXPRESSION = 11, 3962306a36Sopenharmony_ci UMP_CC_EFFECT_CONTROL_1 = 12, 4062306a36Sopenharmony_ci UMP_CC_EFFECT_CONTROL_2 = 13, 4162306a36Sopenharmony_ci UMP_CC_GP_1 = 16, 4262306a36Sopenharmony_ci UMP_CC_GP_2 = 17, 4362306a36Sopenharmony_ci UMP_CC_GP_3 = 18, 4462306a36Sopenharmony_ci UMP_CC_GP_4 = 19, 4562306a36Sopenharmony_ci UMP_CC_BANK_SELECT_LSB = 32, 4662306a36Sopenharmony_ci UMP_CC_MODULATION_LSB = 33, 4762306a36Sopenharmony_ci UMP_CC_BREATH_LSB = 34, 4862306a36Sopenharmony_ci UMP_CC_FOOT_LSB = 36, 4962306a36Sopenharmony_ci UMP_CC_PORTAMENTO_TIME_LSB = 37, 5062306a36Sopenharmony_ci UMP_CC_DATA_LSB = 38, 5162306a36Sopenharmony_ci UMP_CC_VOLUME_LSB = 39, 5262306a36Sopenharmony_ci UMP_CC_BALANCE_LSB = 40, 5362306a36Sopenharmony_ci UMP_CC_PAN_LSB = 42, 5462306a36Sopenharmony_ci UMP_CC_EXPRESSION_LSB = 43, 5562306a36Sopenharmony_ci UMP_CC_EFFECT1_LSB = 44, 5662306a36Sopenharmony_ci UMP_CC_EFFECT2_LSB = 45, 5762306a36Sopenharmony_ci UMP_CC_GP_1_LSB = 48, 5862306a36Sopenharmony_ci UMP_CC_GP_2_LSB = 49, 5962306a36Sopenharmony_ci UMP_CC_GP_3_LSB = 50, 6062306a36Sopenharmony_ci UMP_CC_GP_4_LSB = 51, 6162306a36Sopenharmony_ci UMP_CC_SUSTAIN = 64, 6262306a36Sopenharmony_ci UMP_CC_PORTAMENTO_SWITCH = 65, 6362306a36Sopenharmony_ci UMP_CC_SOSTENUTO = 66, 6462306a36Sopenharmony_ci UMP_CC_SOFT_PEDAL = 67, 6562306a36Sopenharmony_ci UMP_CC_LEGATO = 68, 6662306a36Sopenharmony_ci UMP_CC_HOLD_2 = 69, 6762306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_1 = 70, 6862306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_2 = 71, 6962306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_3 = 72, 7062306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_4 = 73, 7162306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_5 = 74, 7262306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_6 = 75, 7362306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_7 = 76, 7462306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_8 = 77, 7562306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_9 = 78, 7662306a36Sopenharmony_ci UMP_CC_SOUND_CONTROLLER_10 = 79, 7762306a36Sopenharmony_ci UMP_CC_GP_5 = 80, 7862306a36Sopenharmony_ci UMP_CC_GP_6 = 81, 7962306a36Sopenharmony_ci UMP_CC_GP_7 = 82, 8062306a36Sopenharmony_ci UMP_CC_GP_8 = 83, 8162306a36Sopenharmony_ci UMP_CC_PORTAMENTO_CONTROL = 84, 8262306a36Sopenharmony_ci UMP_CC_EFFECT_1 = 91, 8362306a36Sopenharmony_ci UMP_CC_EFFECT_2 = 92, 8462306a36Sopenharmony_ci UMP_CC_EFFECT_3 = 93, 8562306a36Sopenharmony_ci UMP_CC_EFFECT_4 = 94, 8662306a36Sopenharmony_ci UMP_CC_EFFECT_5 = 95, 8762306a36Sopenharmony_ci UMP_CC_DATA_INC = 96, 8862306a36Sopenharmony_ci UMP_CC_DATA_DEC = 97, 8962306a36Sopenharmony_ci UMP_CC_NRPN_LSB = 98, 9062306a36Sopenharmony_ci UMP_CC_NRPN_MSB = 99, 9162306a36Sopenharmony_ci UMP_CC_RPN_LSB = 100, 9262306a36Sopenharmony_ci UMP_CC_RPN_MSB = 101, 9362306a36Sopenharmony_ci UMP_CC_ALL_SOUND_OFF = 120, 9462306a36Sopenharmony_ci UMP_CC_RESET_ALL = 121, 9562306a36Sopenharmony_ci UMP_CC_LOCAL_CONTROL = 122, 9662306a36Sopenharmony_ci UMP_CC_ALL_NOTES_OFF = 123, 9762306a36Sopenharmony_ci UMP_CC_OMNI_OFF = 124, 9862306a36Sopenharmony_ci UMP_CC_OMNI_ON = 125, 9962306a36Sopenharmony_ci UMP_CC_POLY_OFF = 126, 10062306a36Sopenharmony_ci UMP_CC_POLY_ON = 127, 10162306a36Sopenharmony_ci}; 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci/* MIDI 1.0 / 2.0 System Messages (0xfx) */ 10462306a36Sopenharmony_cienum { 10562306a36Sopenharmony_ci UMP_SYSTEM_STATUS_MIDI_TIME_CODE = 0xf1, 10662306a36Sopenharmony_ci UMP_SYSTEM_STATUS_SONG_POSITION = 0xf2, 10762306a36Sopenharmony_ci UMP_SYSTEM_STATUS_SONG_SELECT = 0xf3, 10862306a36Sopenharmony_ci UMP_SYSTEM_STATUS_TUNE_REQUEST = 0xf6, 10962306a36Sopenharmony_ci UMP_SYSTEM_STATUS_TIMING_CLOCK = 0xf8, 11062306a36Sopenharmony_ci UMP_SYSTEM_STATUS_START = 0xfa, 11162306a36Sopenharmony_ci UMP_SYSTEM_STATUS_CONTINUE = 0xfb, 11262306a36Sopenharmony_ci UMP_SYSTEM_STATUS_STOP = 0xfc, 11362306a36Sopenharmony_ci UMP_SYSTEM_STATUS_ACTIVE_SENSING = 0xfe, 11462306a36Sopenharmony_ci UMP_SYSTEM_STATUS_RESET = 0xff, 11562306a36Sopenharmony_ci}; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci/* MIDI 1.0 Realtime and SysEx status messages (0xfx) */ 11862306a36Sopenharmony_cienum { 11962306a36Sopenharmony_ci UMP_MIDI1_MSG_REALTIME = 0xf0, /* mask */ 12062306a36Sopenharmony_ci UMP_MIDI1_MSG_SYSEX_START = 0xf0, 12162306a36Sopenharmony_ci UMP_MIDI1_MSG_SYSEX_END = 0xf7, 12262306a36Sopenharmony_ci}; 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* 12562306a36Sopenharmony_ci * UMP Message Definitions 12662306a36Sopenharmony_ci */ 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci/* MIDI 1.0 Note Off / Note On (32bit) */ 12962306a36Sopenharmony_cistruct snd_ump_midi1_msg_note { 13062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 13162306a36Sopenharmony_ci u32 type:4; 13262306a36Sopenharmony_ci u32 group:4; 13362306a36Sopenharmony_ci u32 status:4; 13462306a36Sopenharmony_ci u32 channel:4; 13562306a36Sopenharmony_ci u32 note:8; 13662306a36Sopenharmony_ci u32 velocity:8; 13762306a36Sopenharmony_ci#else 13862306a36Sopenharmony_ci u32 velocity:8; 13962306a36Sopenharmony_ci u32 note:8; 14062306a36Sopenharmony_ci u32 channel:4; 14162306a36Sopenharmony_ci u32 status:4; 14262306a36Sopenharmony_ci u32 group:4; 14362306a36Sopenharmony_ci u32 type:4; 14462306a36Sopenharmony_ci#endif 14562306a36Sopenharmony_ci} __packed; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci/* MIDI 1.0 Poly Pressure (32bit) */ 14862306a36Sopenharmony_cistruct snd_ump_midi1_msg_paf { 14962306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 15062306a36Sopenharmony_ci u32 type:4; 15162306a36Sopenharmony_ci u32 group:4; 15262306a36Sopenharmony_ci u32 status:4; 15362306a36Sopenharmony_ci u32 channel:4; 15462306a36Sopenharmony_ci u32 note:8; 15562306a36Sopenharmony_ci u32 data:8; 15662306a36Sopenharmony_ci#else 15762306a36Sopenharmony_ci u32 data:8; 15862306a36Sopenharmony_ci u32 note:8; 15962306a36Sopenharmony_ci u32 channel:4; 16062306a36Sopenharmony_ci u32 status:4; 16162306a36Sopenharmony_ci u32 group:4; 16262306a36Sopenharmony_ci u32 type:4; 16362306a36Sopenharmony_ci#endif 16462306a36Sopenharmony_ci} __packed; 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci/* MIDI 1.0 Control Change (32bit) */ 16762306a36Sopenharmony_cistruct snd_ump_midi1_msg_cc { 16862306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 16962306a36Sopenharmony_ci u32 type:4; 17062306a36Sopenharmony_ci u32 group:4; 17162306a36Sopenharmony_ci u32 status:4; 17262306a36Sopenharmony_ci u32 channel:4; 17362306a36Sopenharmony_ci u32 index:8; 17462306a36Sopenharmony_ci u32 data:8; 17562306a36Sopenharmony_ci#else 17662306a36Sopenharmony_ci u32 data:8; 17762306a36Sopenharmony_ci u32 index:8; 17862306a36Sopenharmony_ci u32 channel:4; 17962306a36Sopenharmony_ci u32 status:4; 18062306a36Sopenharmony_ci u32 group:4; 18162306a36Sopenharmony_ci u32 type:4; 18262306a36Sopenharmony_ci#endif 18362306a36Sopenharmony_ci} __packed; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci/* MIDI 1.0 Program Change (32bit) */ 18662306a36Sopenharmony_cistruct snd_ump_midi1_msg_program { 18762306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 18862306a36Sopenharmony_ci u32 type:4; 18962306a36Sopenharmony_ci u32 group:4; 19062306a36Sopenharmony_ci u32 status:4; 19162306a36Sopenharmony_ci u32 channel:4; 19262306a36Sopenharmony_ci u32 program:8; 19362306a36Sopenharmony_ci u32 reserved:8; 19462306a36Sopenharmony_ci#else 19562306a36Sopenharmony_ci u32 reserved:8; 19662306a36Sopenharmony_ci u32 program:8; 19762306a36Sopenharmony_ci u32 channel:4; 19862306a36Sopenharmony_ci u32 status:4; 19962306a36Sopenharmony_ci u32 group:4; 20062306a36Sopenharmony_ci u32 type:4; 20162306a36Sopenharmony_ci#endif 20262306a36Sopenharmony_ci} __packed; 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci/* MIDI 1.0 Channel Pressure (32bit) */ 20562306a36Sopenharmony_cistruct snd_ump_midi1_msg_caf { 20662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 20762306a36Sopenharmony_ci u32 type:4; 20862306a36Sopenharmony_ci u32 group:4; 20962306a36Sopenharmony_ci u32 status:4; 21062306a36Sopenharmony_ci u32 channel:4; 21162306a36Sopenharmony_ci u32 data:8; 21262306a36Sopenharmony_ci u32 reserved:8; 21362306a36Sopenharmony_ci#else 21462306a36Sopenharmony_ci u32 reserved:8; 21562306a36Sopenharmony_ci u32 data:8; 21662306a36Sopenharmony_ci u32 channel:4; 21762306a36Sopenharmony_ci u32 status:4; 21862306a36Sopenharmony_ci u32 group:4; 21962306a36Sopenharmony_ci u32 type:4; 22062306a36Sopenharmony_ci#endif 22162306a36Sopenharmony_ci} __packed; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci/* MIDI 1.0 Pitch Bend (32bit) */ 22462306a36Sopenharmony_cistruct snd_ump_midi1_msg_pitchbend { 22562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 22662306a36Sopenharmony_ci u32 type:4; 22762306a36Sopenharmony_ci u32 group:4; 22862306a36Sopenharmony_ci u32 status:4; 22962306a36Sopenharmony_ci u32 channel:4; 23062306a36Sopenharmony_ci u32 data_lsb:8; 23162306a36Sopenharmony_ci u32 data_msb:8; 23262306a36Sopenharmony_ci#else 23362306a36Sopenharmony_ci u32 data_msb:8; 23462306a36Sopenharmony_ci u32 data_lsb:8; 23562306a36Sopenharmony_ci u32 channel:4; 23662306a36Sopenharmony_ci u32 status:4; 23762306a36Sopenharmony_ci u32 group:4; 23862306a36Sopenharmony_ci u32 type:4; 23962306a36Sopenharmony_ci#endif 24062306a36Sopenharmony_ci} __packed; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci/* System Common and Real Time messages (32bit); no channel field */ 24362306a36Sopenharmony_cistruct snd_ump_system_msg { 24462306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 24562306a36Sopenharmony_ci u32 type:4; 24662306a36Sopenharmony_ci u32 group:4; 24762306a36Sopenharmony_ci u32 status:8; 24862306a36Sopenharmony_ci u32 parm1:8; 24962306a36Sopenharmony_ci u32 parm2:8; 25062306a36Sopenharmony_ci#else 25162306a36Sopenharmony_ci u32 parm2:8; 25262306a36Sopenharmony_ci u32 parm1:8; 25362306a36Sopenharmony_ci u32 status:8; 25462306a36Sopenharmony_ci u32 group:4; 25562306a36Sopenharmony_ci u32 type:4; 25662306a36Sopenharmony_ci#endif 25762306a36Sopenharmony_ci} __packed; 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci/* MIDI 1.0 UMP CVM (32bit) */ 26062306a36Sopenharmony_ciunion snd_ump_midi1_msg { 26162306a36Sopenharmony_ci struct snd_ump_midi1_msg_note note; 26262306a36Sopenharmony_ci struct snd_ump_midi1_msg_paf paf; 26362306a36Sopenharmony_ci struct snd_ump_midi1_msg_cc cc; 26462306a36Sopenharmony_ci struct snd_ump_midi1_msg_program pg; 26562306a36Sopenharmony_ci struct snd_ump_midi1_msg_caf caf; 26662306a36Sopenharmony_ci struct snd_ump_midi1_msg_pitchbend pb; 26762306a36Sopenharmony_ci struct snd_ump_system_msg system; 26862306a36Sopenharmony_ci u32 raw; 26962306a36Sopenharmony_ci}; 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ci/* MIDI 2.0 Note Off / Note On (64bit) */ 27262306a36Sopenharmony_cistruct snd_ump_midi2_msg_note { 27362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 27462306a36Sopenharmony_ci /* 0 */ 27562306a36Sopenharmony_ci u32 type:4; 27662306a36Sopenharmony_ci u32 group:4; 27762306a36Sopenharmony_ci u32 status:4; 27862306a36Sopenharmony_ci u32 channel:4; 27962306a36Sopenharmony_ci u32 note:8; 28062306a36Sopenharmony_ci u32 attribute_type:8; 28162306a36Sopenharmony_ci /* 1 */ 28262306a36Sopenharmony_ci u32 velocity:16; 28362306a36Sopenharmony_ci u32 attribute_data:16; 28462306a36Sopenharmony_ci#else 28562306a36Sopenharmony_ci /* 0 */ 28662306a36Sopenharmony_ci u32 attribute_type:8; 28762306a36Sopenharmony_ci u32 note:8; 28862306a36Sopenharmony_ci u32 channel:4; 28962306a36Sopenharmony_ci u32 status:4; 29062306a36Sopenharmony_ci u32 group:4; 29162306a36Sopenharmony_ci u32 type:4; 29262306a36Sopenharmony_ci /* 1 */ 29362306a36Sopenharmony_ci u32 attribute_data:16; 29462306a36Sopenharmony_ci u32 velocity:16; 29562306a36Sopenharmony_ci#endif 29662306a36Sopenharmony_ci} __packed; 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci/* MIDI 2.0 Poly Pressure (64bit) */ 29962306a36Sopenharmony_cistruct snd_ump_midi2_msg_paf { 30062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 30162306a36Sopenharmony_ci /* 0 */ 30262306a36Sopenharmony_ci u32 type:4; 30362306a36Sopenharmony_ci u32 group:4; 30462306a36Sopenharmony_ci u32 status:4; 30562306a36Sopenharmony_ci u32 channel:4; 30662306a36Sopenharmony_ci u32 note:8; 30762306a36Sopenharmony_ci u32 reserved:8; 30862306a36Sopenharmony_ci /* 1 */ 30962306a36Sopenharmony_ci u32 data; 31062306a36Sopenharmony_ci#else 31162306a36Sopenharmony_ci /* 0 */ 31262306a36Sopenharmony_ci u32 reserved:8; 31362306a36Sopenharmony_ci u32 note:8; 31462306a36Sopenharmony_ci u32 channel:4; 31562306a36Sopenharmony_ci u32 status:4; 31662306a36Sopenharmony_ci u32 group:4; 31762306a36Sopenharmony_ci u32 type:4; 31862306a36Sopenharmony_ci /* 1 */ 31962306a36Sopenharmony_ci u32 data; 32062306a36Sopenharmony_ci#endif 32162306a36Sopenharmony_ci} __packed; 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_ci/* MIDI 2.0 Per-Note Controller (64bit) */ 32462306a36Sopenharmony_cistruct snd_ump_midi2_msg_pernote_cc { 32562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 32662306a36Sopenharmony_ci /* 0 */ 32762306a36Sopenharmony_ci u32 type:4; 32862306a36Sopenharmony_ci u32 group:4; 32962306a36Sopenharmony_ci u32 status:4; 33062306a36Sopenharmony_ci u32 channel:4; 33162306a36Sopenharmony_ci u32 note:8; 33262306a36Sopenharmony_ci u32 index:8; 33362306a36Sopenharmony_ci /* 1 */ 33462306a36Sopenharmony_ci u32 data; 33562306a36Sopenharmony_ci#else 33662306a36Sopenharmony_ci /* 0 */ 33762306a36Sopenharmony_ci u32 index:8; 33862306a36Sopenharmony_ci u32 note:8; 33962306a36Sopenharmony_ci u32 channel:4; 34062306a36Sopenharmony_ci u32 status:4; 34162306a36Sopenharmony_ci u32 group:4; 34262306a36Sopenharmony_ci u32 type:4; 34362306a36Sopenharmony_ci /* 1 */ 34462306a36Sopenharmony_ci u32 data; 34562306a36Sopenharmony_ci#endif 34662306a36Sopenharmony_ci} __packed; 34762306a36Sopenharmony_ci 34862306a36Sopenharmony_ci/* MIDI 2.0 Per-Note Management (64bit) */ 34962306a36Sopenharmony_cistruct snd_ump_midi2_msg_pernote_mgmt { 35062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 35162306a36Sopenharmony_ci /* 0 */ 35262306a36Sopenharmony_ci u32 type:4; 35362306a36Sopenharmony_ci u32 group:4; 35462306a36Sopenharmony_ci u32 status:4; 35562306a36Sopenharmony_ci u32 channel:4; 35662306a36Sopenharmony_ci u32 note:8; 35762306a36Sopenharmony_ci u32 flags:8; 35862306a36Sopenharmony_ci /* 1 */ 35962306a36Sopenharmony_ci u32 reserved; 36062306a36Sopenharmony_ci#else 36162306a36Sopenharmony_ci /* 0 */ 36262306a36Sopenharmony_ci u32 flags:8; 36362306a36Sopenharmony_ci u32 note:8; 36462306a36Sopenharmony_ci u32 channel:4; 36562306a36Sopenharmony_ci u32 status:4; 36662306a36Sopenharmony_ci u32 group:4; 36762306a36Sopenharmony_ci u32 type:4; 36862306a36Sopenharmony_ci /* 1 */ 36962306a36Sopenharmony_ci u32 reserved; 37062306a36Sopenharmony_ci#endif 37162306a36Sopenharmony_ci} __packed; 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ci/* MIDI 2.0 Control Change (64bit) */ 37462306a36Sopenharmony_cistruct snd_ump_midi2_msg_cc { 37562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 37662306a36Sopenharmony_ci /* 0 */ 37762306a36Sopenharmony_ci u32 type:4; 37862306a36Sopenharmony_ci u32 group:4; 37962306a36Sopenharmony_ci u32 status:4; 38062306a36Sopenharmony_ci u32 channel:4; 38162306a36Sopenharmony_ci u32 index:8; 38262306a36Sopenharmony_ci u32 reserved:8; 38362306a36Sopenharmony_ci /* 1 */ 38462306a36Sopenharmony_ci u32 data; 38562306a36Sopenharmony_ci#else 38662306a36Sopenharmony_ci /* 0 */ 38762306a36Sopenharmony_ci u32 reserved:8; 38862306a36Sopenharmony_ci u32 index:8; 38962306a36Sopenharmony_ci u32 channel:4; 39062306a36Sopenharmony_ci u32 status:4; 39162306a36Sopenharmony_ci u32 group:4; 39262306a36Sopenharmony_ci u32 type:4; 39362306a36Sopenharmony_ci /* 1 */ 39462306a36Sopenharmony_ci u32 data; 39562306a36Sopenharmony_ci#endif 39662306a36Sopenharmony_ci} __packed; 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci/* MIDI 2.0 Registered Controller (RPN) / Assignable Controller (NRPN) (64bit) */ 39962306a36Sopenharmony_cistruct snd_ump_midi2_msg_rpn { 40062306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 40162306a36Sopenharmony_ci /* 0 */ 40262306a36Sopenharmony_ci u32 type:4; 40362306a36Sopenharmony_ci u32 group:4; 40462306a36Sopenharmony_ci u32 status:4; 40562306a36Sopenharmony_ci u32 channel:4; 40662306a36Sopenharmony_ci u32 bank:8; 40762306a36Sopenharmony_ci u32 index:8; 40862306a36Sopenharmony_ci /* 1 */ 40962306a36Sopenharmony_ci u32 data; 41062306a36Sopenharmony_ci#else 41162306a36Sopenharmony_ci /* 0 */ 41262306a36Sopenharmony_ci u32 index:8; 41362306a36Sopenharmony_ci u32 bank:8; 41462306a36Sopenharmony_ci u32 channel:4; 41562306a36Sopenharmony_ci u32 status:4; 41662306a36Sopenharmony_ci u32 group:4; 41762306a36Sopenharmony_ci u32 type:4; 41862306a36Sopenharmony_ci /* 1 */ 41962306a36Sopenharmony_ci u32 data; 42062306a36Sopenharmony_ci#endif 42162306a36Sopenharmony_ci} __packed; 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci/* MIDI 2.0 Program Change (64bit) */ 42462306a36Sopenharmony_cistruct snd_ump_midi2_msg_program { 42562306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 42662306a36Sopenharmony_ci /* 0 */ 42762306a36Sopenharmony_ci u32 type:4; 42862306a36Sopenharmony_ci u32 group:4; 42962306a36Sopenharmony_ci u32 status:4; 43062306a36Sopenharmony_ci u32 channel:4; 43162306a36Sopenharmony_ci u32 reserved:15; 43262306a36Sopenharmony_ci u32 bank_valid:1; 43362306a36Sopenharmony_ci /* 1 */ 43462306a36Sopenharmony_ci u32 program:8; 43562306a36Sopenharmony_ci u32 reserved2:8; 43662306a36Sopenharmony_ci u32 bank_msb:8; 43762306a36Sopenharmony_ci u32 bank_lsb:8; 43862306a36Sopenharmony_ci#else 43962306a36Sopenharmony_ci /* 0 */ 44062306a36Sopenharmony_ci u32 bank_valid:1; 44162306a36Sopenharmony_ci u32 reserved:15; 44262306a36Sopenharmony_ci u32 channel:4; 44362306a36Sopenharmony_ci u32 status:4; 44462306a36Sopenharmony_ci u32 group:4; 44562306a36Sopenharmony_ci u32 type:4; 44662306a36Sopenharmony_ci /* 1 */ 44762306a36Sopenharmony_ci u32 bank_lsb:8; 44862306a36Sopenharmony_ci u32 bank_msb:8; 44962306a36Sopenharmony_ci u32 reserved2:8; 45062306a36Sopenharmony_ci u32 program:8; 45162306a36Sopenharmony_ci#endif 45262306a36Sopenharmony_ci} __packed; 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ci/* MIDI 2.0 Channel Pressure (64bit) */ 45562306a36Sopenharmony_cistruct snd_ump_midi2_msg_caf { 45662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 45762306a36Sopenharmony_ci /* 0 */ 45862306a36Sopenharmony_ci u32 type:4; 45962306a36Sopenharmony_ci u32 group:4; 46062306a36Sopenharmony_ci u32 status:4; 46162306a36Sopenharmony_ci u32 channel:4; 46262306a36Sopenharmony_ci u32 reserved:16; 46362306a36Sopenharmony_ci /* 1 */ 46462306a36Sopenharmony_ci u32 data; 46562306a36Sopenharmony_ci#else 46662306a36Sopenharmony_ci /* 0 */ 46762306a36Sopenharmony_ci u32 reserved:16; 46862306a36Sopenharmony_ci u32 channel:4; 46962306a36Sopenharmony_ci u32 status:4; 47062306a36Sopenharmony_ci u32 group:4; 47162306a36Sopenharmony_ci u32 type:4; 47262306a36Sopenharmony_ci /* 1 */ 47362306a36Sopenharmony_ci u32 data; 47462306a36Sopenharmony_ci#endif 47562306a36Sopenharmony_ci} __packed; 47662306a36Sopenharmony_ci 47762306a36Sopenharmony_ci/* MIDI 2.0 Pitch Bend (64bit) */ 47862306a36Sopenharmony_cistruct snd_ump_midi2_msg_pitchbend { 47962306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 48062306a36Sopenharmony_ci /* 0 */ 48162306a36Sopenharmony_ci u32 type:4; 48262306a36Sopenharmony_ci u32 group:4; 48362306a36Sopenharmony_ci u32 status:4; 48462306a36Sopenharmony_ci u32 channel:4; 48562306a36Sopenharmony_ci u32 reserved:16; 48662306a36Sopenharmony_ci /* 1 */ 48762306a36Sopenharmony_ci u32 data; 48862306a36Sopenharmony_ci#else 48962306a36Sopenharmony_ci /* 0 */ 49062306a36Sopenharmony_ci u32 reserved:16; 49162306a36Sopenharmony_ci u32 channel:4; 49262306a36Sopenharmony_ci u32 status:4; 49362306a36Sopenharmony_ci u32 group:4; 49462306a36Sopenharmony_ci u32 type:4; 49562306a36Sopenharmony_ci /* 1 */ 49662306a36Sopenharmony_ci u32 data; 49762306a36Sopenharmony_ci#endif 49862306a36Sopenharmony_ci} __packed; 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ci/* MIDI 2.0 Per-Note Pitch Bend (64bit) */ 50162306a36Sopenharmony_cistruct snd_ump_midi2_msg_pernote_pitchbend { 50262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 50362306a36Sopenharmony_ci /* 0 */ 50462306a36Sopenharmony_ci u32 type:4; 50562306a36Sopenharmony_ci u32 group:4; 50662306a36Sopenharmony_ci u32 status:4; 50762306a36Sopenharmony_ci u32 channel:4; 50862306a36Sopenharmony_ci u32 note:8; 50962306a36Sopenharmony_ci u32 reserved:8; 51062306a36Sopenharmony_ci /* 1 */ 51162306a36Sopenharmony_ci u32 data; 51262306a36Sopenharmony_ci#else 51362306a36Sopenharmony_ci /* 0 */ 51462306a36Sopenharmony_ci u32 reserved:8; 51562306a36Sopenharmony_ci u32 note:8; 51662306a36Sopenharmony_ci u32 channel:4; 51762306a36Sopenharmony_ci u32 status:4; 51862306a36Sopenharmony_ci u32 group:4; 51962306a36Sopenharmony_ci u32 type:4; 52062306a36Sopenharmony_ci /* 1 */ 52162306a36Sopenharmony_ci u32 data; 52262306a36Sopenharmony_ci#endif 52362306a36Sopenharmony_ci} __packed; 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_ci/* MIDI 2.0 UMP CVM (64bit) */ 52662306a36Sopenharmony_ciunion snd_ump_midi2_msg { 52762306a36Sopenharmony_ci struct snd_ump_midi2_msg_note note; 52862306a36Sopenharmony_ci struct snd_ump_midi2_msg_paf paf; 52962306a36Sopenharmony_ci struct snd_ump_midi2_msg_pernote_cc pernote_cc; 53062306a36Sopenharmony_ci struct snd_ump_midi2_msg_pernote_mgmt pernote_mgmt; 53162306a36Sopenharmony_ci struct snd_ump_midi2_msg_cc cc; 53262306a36Sopenharmony_ci struct snd_ump_midi2_msg_rpn rpn; 53362306a36Sopenharmony_ci struct snd_ump_midi2_msg_program pg; 53462306a36Sopenharmony_ci struct snd_ump_midi2_msg_caf caf; 53562306a36Sopenharmony_ci struct snd_ump_midi2_msg_pitchbend pb; 53662306a36Sopenharmony_ci struct snd_ump_midi2_msg_pernote_pitchbend pernote_pb; 53762306a36Sopenharmony_ci u32 raw[2]; 53862306a36Sopenharmony_ci}; 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci/* UMP Stream Message: Endpoint Discovery (128bit) */ 54162306a36Sopenharmony_cistruct snd_ump_stream_msg_ep_discovery { 54262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 54362306a36Sopenharmony_ci /* 0 */ 54462306a36Sopenharmony_ci u32 type:4; 54562306a36Sopenharmony_ci u32 format:2; 54662306a36Sopenharmony_ci u32 status:10; 54762306a36Sopenharmony_ci u32 ump_version_major:8; 54862306a36Sopenharmony_ci u32 ump_version_minor:8; 54962306a36Sopenharmony_ci /* 1 */ 55062306a36Sopenharmony_ci u32 reserved:24; 55162306a36Sopenharmony_ci u32 filter_bitmap:8; 55262306a36Sopenharmony_ci /* 2-3 */ 55362306a36Sopenharmony_ci u32 reserved2[2]; 55462306a36Sopenharmony_ci#else 55562306a36Sopenharmony_ci /* 0 */ 55662306a36Sopenharmony_ci u32 ump_version_minor:8; 55762306a36Sopenharmony_ci u32 ump_version_major:8; 55862306a36Sopenharmony_ci u32 status:10; 55962306a36Sopenharmony_ci u32 format:2; 56062306a36Sopenharmony_ci u32 type:4; 56162306a36Sopenharmony_ci /* 1 */ 56262306a36Sopenharmony_ci u32 filter_bitmap:8; 56362306a36Sopenharmony_ci u32 reserved:24; 56462306a36Sopenharmony_ci /* 2-3 */ 56562306a36Sopenharmony_ci u32 reserved2[2]; 56662306a36Sopenharmony_ci#endif 56762306a36Sopenharmony_ci} __packed; 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_ci/* UMP Stream Message: Endpoint Info Notification (128bit) */ 57062306a36Sopenharmony_cistruct snd_ump_stream_msg_ep_info { 57162306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 57262306a36Sopenharmony_ci /* 0 */ 57362306a36Sopenharmony_ci u32 type:4; 57462306a36Sopenharmony_ci u32 format:2; 57562306a36Sopenharmony_ci u32 status:10; 57662306a36Sopenharmony_ci u32 ump_version_major:8; 57762306a36Sopenharmony_ci u32 ump_version_minor:8; 57862306a36Sopenharmony_ci /* 1 */ 57962306a36Sopenharmony_ci u32 static_function_block:1; 58062306a36Sopenharmony_ci u32 num_function_blocks:7; 58162306a36Sopenharmony_ci u32 reserved:8; 58262306a36Sopenharmony_ci u32 protocol:8; 58362306a36Sopenharmony_ci u32 reserved2:6; 58462306a36Sopenharmony_ci u32 jrts:2; 58562306a36Sopenharmony_ci /* 2-3 */ 58662306a36Sopenharmony_ci u32 reserved3[2]; 58762306a36Sopenharmony_ci#else 58862306a36Sopenharmony_ci /* 0 */ 58962306a36Sopenharmony_ci u32 ump_version_minor:8; 59062306a36Sopenharmony_ci u32 ump_version_major:8; 59162306a36Sopenharmony_ci u32 status:10; 59262306a36Sopenharmony_ci u32 format:2; 59362306a36Sopenharmony_ci u32 type:4; 59462306a36Sopenharmony_ci /* 1 */ 59562306a36Sopenharmony_ci u32 jrts:2; 59662306a36Sopenharmony_ci u32 reserved2:6; 59762306a36Sopenharmony_ci u32 protocol:8; 59862306a36Sopenharmony_ci u32 reserved:8; 59962306a36Sopenharmony_ci u32 num_function_blocks:7; 60062306a36Sopenharmony_ci u32 static_function_block:1; 60162306a36Sopenharmony_ci /* 2-3 */ 60262306a36Sopenharmony_ci u32 reserved3[2]; 60362306a36Sopenharmony_ci#endif 60462306a36Sopenharmony_ci} __packed; 60562306a36Sopenharmony_ci 60662306a36Sopenharmony_ci/* UMP Stream Message: Device Info Notification (128bit) */ 60762306a36Sopenharmony_cistruct snd_ump_stream_msg_devince_info { 60862306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 60962306a36Sopenharmony_ci /* 0 */ 61062306a36Sopenharmony_ci u32 type:4; 61162306a36Sopenharmony_ci u32 format:2; 61262306a36Sopenharmony_ci u32 status:10; 61362306a36Sopenharmony_ci u32 reserved:16; 61462306a36Sopenharmony_ci /* 1 */ 61562306a36Sopenharmony_ci u32 manufacture_id; 61662306a36Sopenharmony_ci /* 2 */ 61762306a36Sopenharmony_ci u8 family_lsb; 61862306a36Sopenharmony_ci u8 family_msb; 61962306a36Sopenharmony_ci u8 model_lsb; 62062306a36Sopenharmony_ci u8 model_msb; 62162306a36Sopenharmony_ci /* 3 */ 62262306a36Sopenharmony_ci u32 sw_revision; 62362306a36Sopenharmony_ci#else 62462306a36Sopenharmony_ci /* 0 */ 62562306a36Sopenharmony_ci u32 reserved:16; 62662306a36Sopenharmony_ci u32 status:10; 62762306a36Sopenharmony_ci u32 format:2; 62862306a36Sopenharmony_ci u32 type:4; 62962306a36Sopenharmony_ci /* 1 */ 63062306a36Sopenharmony_ci u32 manufacture_id; 63162306a36Sopenharmony_ci /* 2 */ 63262306a36Sopenharmony_ci u8 model_msb; 63362306a36Sopenharmony_ci u8 model_lsb; 63462306a36Sopenharmony_ci u8 family_msb; 63562306a36Sopenharmony_ci u8 family_lsb; 63662306a36Sopenharmony_ci /* 3 */ 63762306a36Sopenharmony_ci u32 sw_revision; 63862306a36Sopenharmony_ci#endif 63962306a36Sopenharmony_ci} __packed; 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ci/* UMP Stream Message: Stream Config Request / Notification (128bit) */ 64262306a36Sopenharmony_cistruct snd_ump_stream_msg_stream_cfg { 64362306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 64462306a36Sopenharmony_ci /* 0 */ 64562306a36Sopenharmony_ci u32 type:4; 64662306a36Sopenharmony_ci u32 format:2; 64762306a36Sopenharmony_ci u32 status:10; 64862306a36Sopenharmony_ci u32 protocol:8; 64962306a36Sopenharmony_ci u32 reserved:6; 65062306a36Sopenharmony_ci u32 jrts:2; 65162306a36Sopenharmony_ci /* 1-3 */ 65262306a36Sopenharmony_ci u32 reserved2[3]; 65362306a36Sopenharmony_ci#else 65462306a36Sopenharmony_ci /* 0 */ 65562306a36Sopenharmony_ci u32 jrts:2; 65662306a36Sopenharmony_ci u32 reserved:6; 65762306a36Sopenharmony_ci u32 protocol:8; 65862306a36Sopenharmony_ci u32 status:10; 65962306a36Sopenharmony_ci u32 format:2; 66062306a36Sopenharmony_ci u32 type:4; 66162306a36Sopenharmony_ci /* 1-3 */ 66262306a36Sopenharmony_ci u32 reserved2[3]; 66362306a36Sopenharmony_ci#endif 66462306a36Sopenharmony_ci} __packed; 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ci/* UMP Stream Message: Function Block Discovery (128bit) */ 66762306a36Sopenharmony_cistruct snd_ump_stream_msg_fb_discovery { 66862306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 66962306a36Sopenharmony_ci /* 0 */ 67062306a36Sopenharmony_ci u32 type:4; 67162306a36Sopenharmony_ci u32 format:2; 67262306a36Sopenharmony_ci u32 status:10; 67362306a36Sopenharmony_ci u32 function_block_id:8; 67462306a36Sopenharmony_ci u32 filter:8; 67562306a36Sopenharmony_ci /* 1-3 */ 67662306a36Sopenharmony_ci u32 reserved[3]; 67762306a36Sopenharmony_ci#else 67862306a36Sopenharmony_ci /* 0 */ 67962306a36Sopenharmony_ci u32 filter:8; 68062306a36Sopenharmony_ci u32 function_block_id:8; 68162306a36Sopenharmony_ci u32 status:10; 68262306a36Sopenharmony_ci u32 format:2; 68362306a36Sopenharmony_ci u32 type:4; 68462306a36Sopenharmony_ci /* 1-3 */ 68562306a36Sopenharmony_ci u32 reserved[3]; 68662306a36Sopenharmony_ci#endif 68762306a36Sopenharmony_ci} __packed; 68862306a36Sopenharmony_ci 68962306a36Sopenharmony_ci/* UMP Stream Message: Function Block Info Notification (128bit) */ 69062306a36Sopenharmony_cistruct snd_ump_stream_msg_fb_info { 69162306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 69262306a36Sopenharmony_ci /* 0 */ 69362306a36Sopenharmony_ci u32 type:4; 69462306a36Sopenharmony_ci u32 format:2; 69562306a36Sopenharmony_ci u32 status:10; 69662306a36Sopenharmony_ci u32 active:1; 69762306a36Sopenharmony_ci u32 function_block_id:7; 69862306a36Sopenharmony_ci u32 reserved:2; 69962306a36Sopenharmony_ci u32 ui_hint:2; 70062306a36Sopenharmony_ci u32 midi_10:2; 70162306a36Sopenharmony_ci u32 direction:2; 70262306a36Sopenharmony_ci /* 1 */ 70362306a36Sopenharmony_ci u32 first_group:8; 70462306a36Sopenharmony_ci u32 num_groups:8; 70562306a36Sopenharmony_ci u32 midi_ci_version:8; 70662306a36Sopenharmony_ci u32 sysex8_streams:8; 70762306a36Sopenharmony_ci /* 2-3 */ 70862306a36Sopenharmony_ci u32 reserved2[2]; 70962306a36Sopenharmony_ci#else 71062306a36Sopenharmony_ci /* 0 */ 71162306a36Sopenharmony_ci u32 direction:2; 71262306a36Sopenharmony_ci u32 midi_10:2; 71362306a36Sopenharmony_ci u32 ui_hint:2; 71462306a36Sopenharmony_ci u32 reserved:2; 71562306a36Sopenharmony_ci u32 function_block_id:7; 71662306a36Sopenharmony_ci u32 active:1; 71762306a36Sopenharmony_ci u32 status:10; 71862306a36Sopenharmony_ci u32 format:2; 71962306a36Sopenharmony_ci u32 type:4; 72062306a36Sopenharmony_ci /* 1 */ 72162306a36Sopenharmony_ci u32 sysex8_streams:8; 72262306a36Sopenharmony_ci u32 midi_ci_version:8; 72362306a36Sopenharmony_ci u32 num_groups:8; 72462306a36Sopenharmony_ci u32 first_group:8; 72562306a36Sopenharmony_ci /* 2-3 */ 72662306a36Sopenharmony_ci u32 reserved2[2]; 72762306a36Sopenharmony_ci#endif 72862306a36Sopenharmony_ci} __packed; 72962306a36Sopenharmony_ci 73062306a36Sopenharmony_ci/* UMP Stream Message: Function Block Name Notification (128bit) */ 73162306a36Sopenharmony_cistruct snd_ump_stream_msg_fb_name { 73262306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 73362306a36Sopenharmony_ci /* 0 */ 73462306a36Sopenharmony_ci u16 type:4; 73562306a36Sopenharmony_ci u16 format:2; 73662306a36Sopenharmony_ci u16 status:10; 73762306a36Sopenharmony_ci u8 function_block_id; 73862306a36Sopenharmony_ci u8 name0; 73962306a36Sopenharmony_ci /* 1-3 */ 74062306a36Sopenharmony_ci u8 name[12]; 74162306a36Sopenharmony_ci#else 74262306a36Sopenharmony_ci /* 0 */ 74362306a36Sopenharmony_ci u8 name0; 74462306a36Sopenharmony_ci u8 function_block_id; 74562306a36Sopenharmony_ci u16 status:10; 74662306a36Sopenharmony_ci u16 format:2; 74762306a36Sopenharmony_ci u16 type:4; 74862306a36Sopenharmony_ci /* 1-3 */ 74962306a36Sopenharmony_ci u8 name[12]; // FIXME: byte order 75062306a36Sopenharmony_ci#endif 75162306a36Sopenharmony_ci} __packed; 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_ci/* MIDI 2.0 Stream Messages (128bit) */ 75462306a36Sopenharmony_ciunion snd_ump_stream_msg { 75562306a36Sopenharmony_ci struct snd_ump_stream_msg_ep_discovery ep_discovery; 75662306a36Sopenharmony_ci struct snd_ump_stream_msg_ep_info ep_info; 75762306a36Sopenharmony_ci struct snd_ump_stream_msg_devince_info device_info; 75862306a36Sopenharmony_ci struct snd_ump_stream_msg_stream_cfg stream_cfg; 75962306a36Sopenharmony_ci struct snd_ump_stream_msg_fb_discovery fb_discovery; 76062306a36Sopenharmony_ci struct snd_ump_stream_msg_fb_info fb_info; 76162306a36Sopenharmony_ci struct snd_ump_stream_msg_fb_name fb_name; 76262306a36Sopenharmony_ci u32 raw[4]; 76362306a36Sopenharmony_ci}; 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_ci#endif /* __SOUND_UMP_MSG_H */ 766