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