10b5288f5STakashi Iwai // SPDX-License-Identifier: GPL-2.0-or-later 20b5288f5STakashi Iwai /* 30b5288f5STakashi Iwai * Universal MIDI Packet (UMP): Message Definitions 40b5288f5STakashi Iwai */ 50b5288f5STakashi Iwai #ifndef __SOUND_UMP_MSG_H 60b5288f5STakashi Iwai #define __SOUND_UMP_MSG_H 70b5288f5STakashi Iwai 80b5288f5STakashi Iwai /* MIDI 1.0 / 2.0 Status Code (4bit) */ 90b5288f5STakashi Iwai enum { 100b5288f5STakashi Iwai UMP_MSG_STATUS_PER_NOTE_RCC = 0x0, 110b5288f5STakashi Iwai UMP_MSG_STATUS_PER_NOTE_ACC = 0x1, 120b5288f5STakashi Iwai UMP_MSG_STATUS_RPN = 0x2, 130b5288f5STakashi Iwai UMP_MSG_STATUS_NRPN = 0x3, 140b5288f5STakashi Iwai UMP_MSG_STATUS_RELATIVE_RPN = 0x4, 150b5288f5STakashi Iwai UMP_MSG_STATUS_RELATIVE_NRPN = 0x5, 160b5288f5STakashi Iwai UMP_MSG_STATUS_PER_NOTE_PITCH_BEND = 0x6, 170b5288f5STakashi Iwai UMP_MSG_STATUS_NOTE_OFF = 0x8, 180b5288f5STakashi Iwai UMP_MSG_STATUS_NOTE_ON = 0x9, 190b5288f5STakashi Iwai UMP_MSG_STATUS_POLY_PRESSURE = 0xa, 200b5288f5STakashi Iwai UMP_MSG_STATUS_CC = 0xb, 210b5288f5STakashi Iwai UMP_MSG_STATUS_PROGRAM = 0xc, 220b5288f5STakashi Iwai UMP_MSG_STATUS_CHANNEL_PRESSURE = 0xd, 230b5288f5STakashi Iwai UMP_MSG_STATUS_PITCH_BEND = 0xe, 240b5288f5STakashi Iwai UMP_MSG_STATUS_PER_NOTE_MGMT = 0xf, 250b5288f5STakashi Iwai }; 260b5288f5STakashi Iwai 270b5288f5STakashi Iwai /* MIDI 1.0 Channel Control (7bit) */ 280b5288f5STakashi Iwai enum { 290b5288f5STakashi Iwai UMP_CC_BANK_SELECT = 0, 300b5288f5STakashi Iwai UMP_CC_MODULATION = 1, 310b5288f5STakashi Iwai UMP_CC_BREATH = 2, 320b5288f5STakashi Iwai UMP_CC_FOOT = 4, 330b5288f5STakashi Iwai UMP_CC_PORTAMENTO_TIME = 5, 340b5288f5STakashi Iwai UMP_CC_DATA = 6, 350b5288f5STakashi Iwai UMP_CC_VOLUME = 7, 360b5288f5STakashi Iwai UMP_CC_BALANCE = 8, 370b5288f5STakashi Iwai UMP_CC_PAN = 10, 380b5288f5STakashi Iwai UMP_CC_EXPRESSION = 11, 390b5288f5STakashi Iwai UMP_CC_EFFECT_CONTROL_1 = 12, 400b5288f5STakashi Iwai UMP_CC_EFFECT_CONTROL_2 = 13, 410b5288f5STakashi Iwai UMP_CC_GP_1 = 16, 420b5288f5STakashi Iwai UMP_CC_GP_2 = 17, 430b5288f5STakashi Iwai UMP_CC_GP_3 = 18, 440b5288f5STakashi Iwai UMP_CC_GP_4 = 19, 450b5288f5STakashi Iwai UMP_CC_BANK_SELECT_LSB = 32, 460b5288f5STakashi Iwai UMP_CC_MODULATION_LSB = 33, 470b5288f5STakashi Iwai UMP_CC_BREATH_LSB = 34, 480b5288f5STakashi Iwai UMP_CC_FOOT_LSB = 36, 490b5288f5STakashi Iwai UMP_CC_PORTAMENTO_TIME_LSB = 37, 500b5288f5STakashi Iwai UMP_CC_DATA_LSB = 38, 510b5288f5STakashi Iwai UMP_CC_VOLUME_LSB = 39, 520b5288f5STakashi Iwai UMP_CC_BALANCE_LSB = 40, 530b5288f5STakashi Iwai UMP_CC_PAN_LSB = 42, 540b5288f5STakashi Iwai UMP_CC_EXPRESSION_LSB = 43, 550b5288f5STakashi Iwai UMP_CC_EFFECT1_LSB = 44, 560b5288f5STakashi Iwai UMP_CC_EFFECT2_LSB = 45, 570b5288f5STakashi Iwai UMP_CC_GP_1_LSB = 48, 580b5288f5STakashi Iwai UMP_CC_GP_2_LSB = 49, 590b5288f5STakashi Iwai UMP_CC_GP_3_LSB = 50, 600b5288f5STakashi Iwai UMP_CC_GP_4_LSB = 51, 610b5288f5STakashi Iwai UMP_CC_SUSTAIN = 64, 620b5288f5STakashi Iwai UMP_CC_PORTAMENTO_SWITCH = 65, 630b5288f5STakashi Iwai UMP_CC_SOSTENUTO = 66, 640b5288f5STakashi Iwai UMP_CC_SOFT_PEDAL = 67, 650b5288f5STakashi Iwai UMP_CC_LEGATO = 68, 660b5288f5STakashi Iwai UMP_CC_HOLD_2 = 69, 670b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_1 = 70, 680b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_2 = 71, 690b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_3 = 72, 700b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_4 = 73, 710b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_5 = 74, 720b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_6 = 75, 730b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_7 = 76, 740b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_8 = 77, 750b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_9 = 78, 760b5288f5STakashi Iwai UMP_CC_SOUND_CONTROLLER_10 = 79, 770b5288f5STakashi Iwai UMP_CC_GP_5 = 80, 780b5288f5STakashi Iwai UMP_CC_GP_6 = 81, 790b5288f5STakashi Iwai UMP_CC_GP_7 = 82, 800b5288f5STakashi Iwai UMP_CC_GP_8 = 83, 810b5288f5STakashi Iwai UMP_CC_PORTAMENTO_CONTROL = 84, 820b5288f5STakashi Iwai UMP_CC_EFFECT_1 = 91, 830b5288f5STakashi Iwai UMP_CC_EFFECT_2 = 92, 840b5288f5STakashi Iwai UMP_CC_EFFECT_3 = 93, 850b5288f5STakashi Iwai UMP_CC_EFFECT_4 = 94, 860b5288f5STakashi Iwai UMP_CC_EFFECT_5 = 95, 870b5288f5STakashi Iwai UMP_CC_DATA_INC = 96, 880b5288f5STakashi Iwai UMP_CC_DATA_DEC = 97, 890b5288f5STakashi Iwai UMP_CC_NRPN_LSB = 98, 900b5288f5STakashi Iwai UMP_CC_NRPN_MSB = 99, 910b5288f5STakashi Iwai UMP_CC_RPN_LSB = 100, 920b5288f5STakashi Iwai UMP_CC_RPN_MSB = 101, 930b5288f5STakashi Iwai UMP_CC_ALL_SOUND_OFF = 120, 940b5288f5STakashi Iwai UMP_CC_RESET_ALL = 121, 950b5288f5STakashi Iwai UMP_CC_LOCAL_CONTROL = 122, 960b5288f5STakashi Iwai UMP_CC_ALL_NOTES_OFF = 123, 970b5288f5STakashi Iwai UMP_CC_OMNI_OFF = 124, 980b5288f5STakashi Iwai UMP_CC_OMNI_ON = 125, 990b5288f5STakashi Iwai UMP_CC_POLY_OFF = 126, 1000b5288f5STakashi Iwai UMP_CC_POLY_ON = 127, 1010b5288f5STakashi Iwai }; 1020b5288f5STakashi Iwai 1030b5288f5STakashi Iwai /* MIDI 1.0 / 2.0 System Messages (0xfx) */ 1040b5288f5STakashi Iwai enum { 1050b5288f5STakashi Iwai UMP_SYSTEM_STATUS_MIDI_TIME_CODE = 0xf1, 1060b5288f5STakashi Iwai UMP_SYSTEM_STATUS_SONG_POSITION = 0xf2, 1070b5288f5STakashi Iwai UMP_SYSTEM_STATUS_SONG_SELECT = 0xf3, 1080b5288f5STakashi Iwai UMP_SYSTEM_STATUS_TUNE_REQUEST = 0xf6, 1090b5288f5STakashi Iwai UMP_SYSTEM_STATUS_TIMING_CLOCK = 0xf8, 1100b5288f5STakashi Iwai UMP_SYSTEM_STATUS_START = 0xfa, 1110b5288f5STakashi Iwai UMP_SYSTEM_STATUS_CONTINUE = 0xfb, 1120b5288f5STakashi Iwai UMP_SYSTEM_STATUS_STOP = 0xfc, 1130b5288f5STakashi Iwai UMP_SYSTEM_STATUS_ACTIVE_SENSING = 0xfe, 1140b5288f5STakashi Iwai UMP_SYSTEM_STATUS_RESET = 0xff, 1150b5288f5STakashi Iwai }; 1160b5288f5STakashi Iwai 1170b5288f5STakashi Iwai /* MIDI 1.0 Realtime and SysEx status messages (0xfx) */ 1180b5288f5STakashi Iwai enum { 1190b5288f5STakashi Iwai UMP_MIDI1_MSG_REALTIME = 0xf0, /* mask */ 1200b5288f5STakashi Iwai UMP_MIDI1_MSG_SYSEX_START = 0xf0, 1210b5288f5STakashi Iwai UMP_MIDI1_MSG_SYSEX_END = 0xf7, 1220b5288f5STakashi Iwai }; 1230b5288f5STakashi Iwai 1240b5288f5STakashi Iwai /* 1250b5288f5STakashi Iwai * UMP Message Definitions 1260b5288f5STakashi Iwai */ 1270b5288f5STakashi Iwai 1280b5288f5STakashi Iwai /* MIDI 1.0 Note Off / Note On (32bit) */ 1290b5288f5STakashi Iwai struct snd_ump_midi1_msg_note { 1300b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 1310b5288f5STakashi Iwai u32 type:4; 1320b5288f5STakashi Iwai u32 group:4; 1330b5288f5STakashi Iwai u32 status:4; 1340b5288f5STakashi Iwai u32 channel:4; 1350b5288f5STakashi Iwai u32 note:8; 1360b5288f5STakashi Iwai u32 velocity:8; 1370b5288f5STakashi Iwai #else 1380b5288f5STakashi Iwai u32 velocity:8; 1390b5288f5STakashi Iwai u32 note:8; 1400b5288f5STakashi Iwai u32 channel:4; 1410b5288f5STakashi Iwai u32 status:4; 1420b5288f5STakashi Iwai u32 group:4; 1430b5288f5STakashi Iwai u32 type:4; 1440b5288f5STakashi Iwai #endif 1450b5288f5STakashi Iwai } __packed; 1460b5288f5STakashi Iwai 1470b5288f5STakashi Iwai /* MIDI 1.0 Poly Pressure (32bit) */ 1480b5288f5STakashi Iwai struct snd_ump_midi1_msg_paf { 1490b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 1500b5288f5STakashi Iwai u32 type:4; 1510b5288f5STakashi Iwai u32 group:4; 1520b5288f5STakashi Iwai u32 status:4; 1530b5288f5STakashi Iwai u32 channel:4; 1540b5288f5STakashi Iwai u32 note:8; 1550b5288f5STakashi Iwai u32 data:8; 1560b5288f5STakashi Iwai #else 1570b5288f5STakashi Iwai u32 data:8; 1580b5288f5STakashi Iwai u32 note:8; 1590b5288f5STakashi Iwai u32 channel:4; 1600b5288f5STakashi Iwai u32 status:4; 1610b5288f5STakashi Iwai u32 group:4; 1620b5288f5STakashi Iwai u32 type:4; 1630b5288f5STakashi Iwai #endif 1640b5288f5STakashi Iwai } __packed; 1650b5288f5STakashi Iwai 1660b5288f5STakashi Iwai /* MIDI 1.0 Control Change (32bit) */ 1670b5288f5STakashi Iwai struct snd_ump_midi1_msg_cc { 1680b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 1690b5288f5STakashi Iwai u32 type:4; 1700b5288f5STakashi Iwai u32 group:4; 1710b5288f5STakashi Iwai u32 status:4; 1720b5288f5STakashi Iwai u32 channel:4; 1730b5288f5STakashi Iwai u32 index:8; 1740b5288f5STakashi Iwai u32 data:8; 1750b5288f5STakashi Iwai #else 1760b5288f5STakashi Iwai u32 data:8; 1770b5288f5STakashi Iwai u32 index:8; 1780b5288f5STakashi Iwai u32 channel:4; 1790b5288f5STakashi Iwai u32 status:4; 1800b5288f5STakashi Iwai u32 group:4; 1810b5288f5STakashi Iwai u32 type:4; 1820b5288f5STakashi Iwai #endif 1830b5288f5STakashi Iwai } __packed; 1840b5288f5STakashi Iwai 1850b5288f5STakashi Iwai /* MIDI 1.0 Program Change (32bit) */ 1860b5288f5STakashi Iwai struct snd_ump_midi1_msg_program { 1870b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 1880b5288f5STakashi Iwai u32 type:4; 1890b5288f5STakashi Iwai u32 group:4; 1900b5288f5STakashi Iwai u32 status:4; 1910b5288f5STakashi Iwai u32 channel:4; 1920b5288f5STakashi Iwai u32 program:8; 1930b5288f5STakashi Iwai u32 reserved:8; 1940b5288f5STakashi Iwai #else 1950b5288f5STakashi Iwai u32 reserved:8; 1960b5288f5STakashi Iwai u32 program:8; 1970b5288f5STakashi Iwai u32 channel:4; 1980b5288f5STakashi Iwai u32 status:4; 1990b5288f5STakashi Iwai u32 group:4; 2000b5288f5STakashi Iwai u32 type:4; 201dafb82e7SStephen Rothwell #endif 2020b5288f5STakashi Iwai } __packed; 2030b5288f5STakashi Iwai 2040b5288f5STakashi Iwai /* MIDI 1.0 Channel Pressure (32bit) */ 2050b5288f5STakashi Iwai struct snd_ump_midi1_msg_caf { 2060b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 2070b5288f5STakashi Iwai u32 type:4; 2080b5288f5STakashi Iwai u32 group:4; 2090b5288f5STakashi Iwai u32 status:4; 2100b5288f5STakashi Iwai u32 channel:4; 2110b5288f5STakashi Iwai u32 data:8; 2120b5288f5STakashi Iwai u32 reserved:8; 2130b5288f5STakashi Iwai #else 2140b5288f5STakashi Iwai u32 reserved:8; 2150b5288f5STakashi Iwai u32 data:8; 2160b5288f5STakashi Iwai u32 channel:4; 2170b5288f5STakashi Iwai u32 status:4; 2180b5288f5STakashi Iwai u32 group:4; 2190b5288f5STakashi Iwai u32 type:4; 2200b5288f5STakashi Iwai #endif 2210b5288f5STakashi Iwai } __packed; 2220b5288f5STakashi Iwai 2230b5288f5STakashi Iwai /* MIDI 1.0 Pitch Bend (32bit) */ 2240b5288f5STakashi Iwai struct snd_ump_midi1_msg_pitchbend { 2250b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 2260b5288f5STakashi Iwai u32 type:4; 2270b5288f5STakashi Iwai u32 group:4; 2280b5288f5STakashi Iwai u32 status:4; 2290b5288f5STakashi Iwai u32 channel:4; 2300b5288f5STakashi Iwai u32 data_lsb:8; 2310b5288f5STakashi Iwai u32 data_msb:8; 2320b5288f5STakashi Iwai #else 2330b5288f5STakashi Iwai u32 data_msb:8; 2340b5288f5STakashi Iwai u32 data_lsb:8; 2350b5288f5STakashi Iwai u32 channel:4; 2360b5288f5STakashi Iwai u32 status:4; 2370b5288f5STakashi Iwai u32 group:4; 2380b5288f5STakashi Iwai u32 type:4; 2390b5288f5STakashi Iwai #endif 2400b5288f5STakashi Iwai } __packed; 2410b5288f5STakashi Iwai 2420b5288f5STakashi Iwai /* System Common and Real Time messages (32bit); no channel field */ 2430b5288f5STakashi Iwai struct snd_ump_system_msg { 2440b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 2450b5288f5STakashi Iwai u32 type:4; 2460b5288f5STakashi Iwai u32 group:4; 2470b5288f5STakashi Iwai u32 status:8; 2480b5288f5STakashi Iwai u32 parm1:8; 2490b5288f5STakashi Iwai u32 parm2:8; 2500b5288f5STakashi Iwai #else 2510b5288f5STakashi Iwai u32 parm2:8; 2520b5288f5STakashi Iwai u32 parm1:8; 2530b5288f5STakashi Iwai u32 status:8; 2540b5288f5STakashi Iwai u32 group:4; 2550b5288f5STakashi Iwai u32 type:4; 2560b5288f5STakashi Iwai #endif 2570b5288f5STakashi Iwai } __packed; 2580b5288f5STakashi Iwai 2590b5288f5STakashi Iwai /* MIDI 1.0 UMP CVM (32bit) */ 2600b5288f5STakashi Iwai union snd_ump_midi1_msg { 2610b5288f5STakashi Iwai struct snd_ump_midi1_msg_note note; 2620b5288f5STakashi Iwai struct snd_ump_midi1_msg_paf paf; 2630b5288f5STakashi Iwai struct snd_ump_midi1_msg_cc cc; 2640b5288f5STakashi Iwai struct snd_ump_midi1_msg_program pg; 2650b5288f5STakashi Iwai struct snd_ump_midi1_msg_caf caf; 2660b5288f5STakashi Iwai struct snd_ump_midi1_msg_pitchbend pb; 2670b5288f5STakashi Iwai struct snd_ump_system_msg system; 2680b5288f5STakashi Iwai u32 raw; 2690b5288f5STakashi Iwai }; 2700b5288f5STakashi Iwai 2710b5288f5STakashi Iwai /* MIDI 2.0 Note Off / Note On (64bit) */ 2720b5288f5STakashi Iwai struct snd_ump_midi2_msg_note { 2730b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 2740b5288f5STakashi Iwai /* 0 */ 2750b5288f5STakashi Iwai u32 type:4; 2760b5288f5STakashi Iwai u32 group:4; 2770b5288f5STakashi Iwai u32 status:4; 2780b5288f5STakashi Iwai u32 channel:4; 2790b5288f5STakashi Iwai u32 note:8; 2800b5288f5STakashi Iwai u32 attribute_type:8; 2810b5288f5STakashi Iwai /* 1 */ 2820b5288f5STakashi Iwai u32 velocity:16; 2830b5288f5STakashi Iwai u32 attribute_data:16; 2840b5288f5STakashi Iwai #else 2850b5288f5STakashi Iwai /* 0 */ 2860b5288f5STakashi Iwai u32 attribute_type:8; 2870b5288f5STakashi Iwai u32 note:8; 2880b5288f5STakashi Iwai u32 channel:4; 2890b5288f5STakashi Iwai u32 status:4; 2900b5288f5STakashi Iwai u32 group:4; 2910b5288f5STakashi Iwai u32 type:4; 2920b5288f5STakashi Iwai /* 1 */ 2930b5288f5STakashi Iwai u32 attribute_data:16; 2940b5288f5STakashi Iwai u32 velocity:16; 2950b5288f5STakashi Iwai #endif 2960b5288f5STakashi Iwai } __packed; 2970b5288f5STakashi Iwai 2980b5288f5STakashi Iwai /* MIDI 2.0 Poly Pressure (64bit) */ 2990b5288f5STakashi Iwai struct snd_ump_midi2_msg_paf { 3000b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 3010b5288f5STakashi Iwai /* 0 */ 3020b5288f5STakashi Iwai u32 type:4; 3030b5288f5STakashi Iwai u32 group:4; 3040b5288f5STakashi Iwai u32 status:4; 3050b5288f5STakashi Iwai u32 channel:4; 3060b5288f5STakashi Iwai u32 note:8; 3070b5288f5STakashi Iwai u32 reserved:8; 3080b5288f5STakashi Iwai /* 1 */ 3090b5288f5STakashi Iwai u32 data; 3100b5288f5STakashi Iwai #else 3110b5288f5STakashi Iwai /* 0 */ 3120b5288f5STakashi Iwai u32 reserved:8; 3130b5288f5STakashi Iwai u32 note:8; 3140b5288f5STakashi Iwai u32 channel:4; 3150b5288f5STakashi Iwai u32 status:4; 3160b5288f5STakashi Iwai u32 group:4; 3170b5288f5STakashi Iwai u32 type:4; 3180b5288f5STakashi Iwai /* 1 */ 3190b5288f5STakashi Iwai u32 data; 3200b5288f5STakashi Iwai #endif 3210b5288f5STakashi Iwai } __packed; 3220b5288f5STakashi Iwai 3230b5288f5STakashi Iwai /* MIDI 2.0 Per-Note Controller (64bit) */ 3240b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_cc { 3250b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 3260b5288f5STakashi Iwai /* 0 */ 3270b5288f5STakashi Iwai u32 type:4; 3280b5288f5STakashi Iwai u32 group:4; 3290b5288f5STakashi Iwai u32 status:4; 3300b5288f5STakashi Iwai u32 channel:4; 3310b5288f5STakashi Iwai u32 note:8; 3320b5288f5STakashi Iwai u32 index:8; 3330b5288f5STakashi Iwai /* 1 */ 3340b5288f5STakashi Iwai u32 data; 3350b5288f5STakashi Iwai #else 3360b5288f5STakashi Iwai /* 0 */ 3370b5288f5STakashi Iwai u32 index:8; 3380b5288f5STakashi Iwai u32 note:8; 3390b5288f5STakashi Iwai u32 channel:4; 3400b5288f5STakashi Iwai u32 status:4; 3410b5288f5STakashi Iwai u32 group:4; 3420b5288f5STakashi Iwai u32 type:4; 3430b5288f5STakashi Iwai /* 1 */ 3440b5288f5STakashi Iwai u32 data; 3450b5288f5STakashi Iwai #endif 3460b5288f5STakashi Iwai } __packed; 3470b5288f5STakashi Iwai 3480b5288f5STakashi Iwai /* MIDI 2.0 Per-Note Management (64bit) */ 3490b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_mgmt { 3500b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 3510b5288f5STakashi Iwai /* 0 */ 3520b5288f5STakashi Iwai u32 type:4; 3530b5288f5STakashi Iwai u32 group:4; 3540b5288f5STakashi Iwai u32 status:4; 3550b5288f5STakashi Iwai u32 channel:4; 3560b5288f5STakashi Iwai u32 note:8; 3570b5288f5STakashi Iwai u32 flags:8; 3580b5288f5STakashi Iwai /* 1 */ 3590b5288f5STakashi Iwai u32 reserved; 3600b5288f5STakashi Iwai #else 3610b5288f5STakashi Iwai /* 0 */ 3620b5288f5STakashi Iwai u32 flags:8; 3630b5288f5STakashi Iwai u32 note:8; 3640b5288f5STakashi Iwai u32 channel:4; 3650b5288f5STakashi Iwai u32 status:4; 3660b5288f5STakashi Iwai u32 group:4; 3670b5288f5STakashi Iwai u32 type:4; 3680b5288f5STakashi Iwai /* 1 */ 3690b5288f5STakashi Iwai u32 reserved; 3700b5288f5STakashi Iwai #endif 3710b5288f5STakashi Iwai } __packed; 3720b5288f5STakashi Iwai 3730b5288f5STakashi Iwai /* MIDI 2.0 Control Change (64bit) */ 3740b5288f5STakashi Iwai struct snd_ump_midi2_msg_cc { 3750b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 3760b5288f5STakashi Iwai /* 0 */ 3770b5288f5STakashi Iwai u32 type:4; 3780b5288f5STakashi Iwai u32 group:4; 3790b5288f5STakashi Iwai u32 status:4; 3800b5288f5STakashi Iwai u32 channel:4; 3810b5288f5STakashi Iwai u32 index:8; 3820b5288f5STakashi Iwai u32 reserved:8; 3830b5288f5STakashi Iwai /* 1 */ 3840b5288f5STakashi Iwai u32 data; 3850b5288f5STakashi Iwai #else 3860b5288f5STakashi Iwai /* 0 */ 3870b5288f5STakashi Iwai u32 reserved:8; 3880b5288f5STakashi Iwai u32 index:8; 3890b5288f5STakashi Iwai u32 channel:4; 3900b5288f5STakashi Iwai u32 status:4; 3910b5288f5STakashi Iwai u32 group:4; 3920b5288f5STakashi Iwai u32 type:4; 3930b5288f5STakashi Iwai /* 1 */ 3940b5288f5STakashi Iwai u32 data; 3950b5288f5STakashi Iwai #endif 3960b5288f5STakashi Iwai } __packed; 3970b5288f5STakashi Iwai 3980b5288f5STakashi Iwai /* MIDI 2.0 Registered Controller (RPN) / Assignable Controller (NRPN) (64bit) */ 3990b5288f5STakashi Iwai struct snd_ump_midi2_msg_rpn { 4000b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 4010b5288f5STakashi Iwai /* 0 */ 4020b5288f5STakashi Iwai u32 type:4; 4030b5288f5STakashi Iwai u32 group:4; 4040b5288f5STakashi Iwai u32 status:4; 4050b5288f5STakashi Iwai u32 channel:4; 4060b5288f5STakashi Iwai u32 bank:8; 4070b5288f5STakashi Iwai u32 index:8; 4080b5288f5STakashi Iwai /* 1 */ 4090b5288f5STakashi Iwai u32 data; 4100b5288f5STakashi Iwai #else 4110b5288f5STakashi Iwai /* 0 */ 4120b5288f5STakashi Iwai u32 index:8; 4130b5288f5STakashi Iwai u32 bank:8; 4140b5288f5STakashi Iwai u32 channel:4; 4150b5288f5STakashi Iwai u32 status:4; 4160b5288f5STakashi Iwai u32 group:4; 4170b5288f5STakashi Iwai u32 type:4; 4180b5288f5STakashi Iwai /* 1 */ 4190b5288f5STakashi Iwai u32 data; 4200b5288f5STakashi Iwai #endif 4210b5288f5STakashi Iwai } __packed; 4220b5288f5STakashi Iwai 4230b5288f5STakashi Iwai /* MIDI 2.0 Program Change (64bit) */ 4240b5288f5STakashi Iwai struct snd_ump_midi2_msg_program { 4250b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 4260b5288f5STakashi Iwai /* 0 */ 4270b5288f5STakashi Iwai u32 type:4; 4280b5288f5STakashi Iwai u32 group:4; 4290b5288f5STakashi Iwai u32 status:4; 4300b5288f5STakashi Iwai u32 channel:4; 4310b5288f5STakashi Iwai u32 reserved:15; 4320b5288f5STakashi Iwai u32 bank_valid:1; 4330b5288f5STakashi Iwai /* 1 */ 4340b5288f5STakashi Iwai u32 program:8; 4350b5288f5STakashi Iwai u32 reserved2:8; 4360b5288f5STakashi Iwai u32 bank_msb:8; 4370b5288f5STakashi Iwai u32 bank_lsb:8; 4380b5288f5STakashi Iwai #else 4390b5288f5STakashi Iwai /* 0 */ 4400b5288f5STakashi Iwai u32 bank_valid:1; 4410b5288f5STakashi Iwai u32 reserved:15; 4420b5288f5STakashi Iwai u32 channel:4; 4430b5288f5STakashi Iwai u32 status:4; 4440b5288f5STakashi Iwai u32 group:4; 4450b5288f5STakashi Iwai u32 type:4; 4460b5288f5STakashi Iwai /* 1 */ 4470b5288f5STakashi Iwai u32 bank_lsb:8; 4480b5288f5STakashi Iwai u32 bank_msb:8; 4490b5288f5STakashi Iwai u32 reserved2:8; 4500b5288f5STakashi Iwai u32 program:8; 4510b5288f5STakashi Iwai #endif 4520b5288f5STakashi Iwai } __packed; 4530b5288f5STakashi Iwai 4540b5288f5STakashi Iwai /* MIDI 2.0 Channel Pressure (64bit) */ 4550b5288f5STakashi Iwai struct snd_ump_midi2_msg_caf { 4560b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 4570b5288f5STakashi Iwai /* 0 */ 4580b5288f5STakashi Iwai u32 type:4; 4590b5288f5STakashi Iwai u32 group:4; 4600b5288f5STakashi Iwai u32 status:4; 4610b5288f5STakashi Iwai u32 channel:4; 4620b5288f5STakashi Iwai u32 reserved:16; 4630b5288f5STakashi Iwai /* 1 */ 4640b5288f5STakashi Iwai u32 data; 4650b5288f5STakashi Iwai #else 4660b5288f5STakashi Iwai /* 0 */ 4670b5288f5STakashi Iwai u32 reserved:16; 4680b5288f5STakashi Iwai u32 channel:4; 4690b5288f5STakashi Iwai u32 status:4; 4700b5288f5STakashi Iwai u32 group:4; 4710b5288f5STakashi Iwai u32 type:4; 4720b5288f5STakashi Iwai /* 1 */ 4730b5288f5STakashi Iwai u32 data; 4740b5288f5STakashi Iwai #endif 4750b5288f5STakashi Iwai } __packed; 4760b5288f5STakashi Iwai 4770b5288f5STakashi Iwai /* MIDI 2.0 Pitch Bend (64bit) */ 4780b5288f5STakashi Iwai struct snd_ump_midi2_msg_pitchbend { 4790b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 4800b5288f5STakashi Iwai /* 0 */ 4810b5288f5STakashi Iwai u32 type:4; 4820b5288f5STakashi Iwai u32 group:4; 4830b5288f5STakashi Iwai u32 status:4; 4840b5288f5STakashi Iwai u32 channel:4; 4850b5288f5STakashi Iwai u32 reserved:16; 4860b5288f5STakashi Iwai /* 1 */ 4870b5288f5STakashi Iwai u32 data; 4880b5288f5STakashi Iwai #else 4890b5288f5STakashi Iwai /* 0 */ 4900b5288f5STakashi Iwai u32 reserved:16; 4910b5288f5STakashi Iwai u32 channel:4; 4920b5288f5STakashi Iwai u32 status:4; 4930b5288f5STakashi Iwai u32 group:4; 4940b5288f5STakashi Iwai u32 type:4; 4950b5288f5STakashi Iwai /* 1 */ 4960b5288f5STakashi Iwai u32 data; 4970b5288f5STakashi Iwai #endif 4980b5288f5STakashi Iwai } __packed; 4990b5288f5STakashi Iwai 5000b5288f5STakashi Iwai /* MIDI 2.0 Per-Note Pitch Bend (64bit) */ 5010b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_pitchbend { 5020b5288f5STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 5030b5288f5STakashi Iwai /* 0 */ 5040b5288f5STakashi Iwai u32 type:4; 5050b5288f5STakashi Iwai u32 group:4; 5060b5288f5STakashi Iwai u32 status:4; 5070b5288f5STakashi Iwai u32 channel:4; 5080b5288f5STakashi Iwai u32 note:8; 5090b5288f5STakashi Iwai u32 reserved:8; 5100b5288f5STakashi Iwai /* 1 */ 5110b5288f5STakashi Iwai u32 data; 5120b5288f5STakashi Iwai #else 5130b5288f5STakashi Iwai /* 0 */ 5140b5288f5STakashi Iwai u32 reserved:8; 5150b5288f5STakashi Iwai u32 note:8; 5160b5288f5STakashi Iwai u32 channel:4; 5170b5288f5STakashi Iwai u32 status:4; 5180b5288f5STakashi Iwai u32 group:4; 5190b5288f5STakashi Iwai u32 type:4; 5200b5288f5STakashi Iwai /* 1 */ 5210b5288f5STakashi Iwai u32 data; 5220b5288f5STakashi Iwai #endif 5230b5288f5STakashi Iwai } __packed; 5240b5288f5STakashi Iwai 5250b5288f5STakashi Iwai /* MIDI 2.0 UMP CVM (64bit) */ 5260b5288f5STakashi Iwai union snd_ump_midi2_msg { 5270b5288f5STakashi Iwai struct snd_ump_midi2_msg_note note; 5280b5288f5STakashi Iwai struct snd_ump_midi2_msg_paf paf; 5290b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_cc pernote_cc; 5300b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_mgmt pernote_mgmt; 5310b5288f5STakashi Iwai struct snd_ump_midi2_msg_cc cc; 5320b5288f5STakashi Iwai struct snd_ump_midi2_msg_rpn rpn; 5330b5288f5STakashi Iwai struct snd_ump_midi2_msg_program pg; 5340b5288f5STakashi Iwai struct snd_ump_midi2_msg_caf caf; 5350b5288f5STakashi Iwai struct snd_ump_midi2_msg_pitchbend pb; 5360b5288f5STakashi Iwai struct snd_ump_midi2_msg_pernote_pitchbend pernote_pb; 5370b5288f5STakashi Iwai u32 raw[2]; 5380b5288f5STakashi Iwai }; 5390b5288f5STakashi Iwai 540*37e0e141STakashi Iwai /* UMP Stream Message: Endpoint Discovery (128bit) */ 541*37e0e141STakashi Iwai struct snd_ump_stream_msg_ep_discovery { 542*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 543*37e0e141STakashi Iwai /* 0 */ 544*37e0e141STakashi Iwai u32 type:4; 545*37e0e141STakashi Iwai u32 format:2; 546*37e0e141STakashi Iwai u32 status:10; 547*37e0e141STakashi Iwai u32 ump_version_major:8; 548*37e0e141STakashi Iwai u32 ump_version_minor:8; 549*37e0e141STakashi Iwai /* 1 */ 550*37e0e141STakashi Iwai u32 reserved:24; 551*37e0e141STakashi Iwai u32 filter_bitmap:8; 552*37e0e141STakashi Iwai /* 2-3 */ 553*37e0e141STakashi Iwai u32 reserved2[2]; 554*37e0e141STakashi Iwai #else 555*37e0e141STakashi Iwai /* 0 */ 556*37e0e141STakashi Iwai u32 ump_version_minor:8; 557*37e0e141STakashi Iwai u32 ump_version_major:8; 558*37e0e141STakashi Iwai u32 status:10; 559*37e0e141STakashi Iwai u32 format:2; 560*37e0e141STakashi Iwai u32 type:4; 561*37e0e141STakashi Iwai /* 1 */ 562*37e0e141STakashi Iwai u32 filter_bitmap:8; 563*37e0e141STakashi Iwai u32 reserved:24; 564*37e0e141STakashi Iwai /* 2-3 */ 565*37e0e141STakashi Iwai u32 reserved2[2]; 566*37e0e141STakashi Iwai #endif 567*37e0e141STakashi Iwai } __packed; 568*37e0e141STakashi Iwai 569*37e0e141STakashi Iwai /* UMP Stream Message: Endpoint Info Notification (128bit) */ 570*37e0e141STakashi Iwai struct snd_ump_stream_msg_ep_info { 571*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 572*37e0e141STakashi Iwai /* 0 */ 573*37e0e141STakashi Iwai u32 type:4; 574*37e0e141STakashi Iwai u32 format:2; 575*37e0e141STakashi Iwai u32 status:10; 576*37e0e141STakashi Iwai u32 ump_version_major:8; 577*37e0e141STakashi Iwai u32 ump_version_minor:8; 578*37e0e141STakashi Iwai /* 1 */ 579*37e0e141STakashi Iwai u32 static_function_block:1; 580*37e0e141STakashi Iwai u32 num_function_blocks:7; 581*37e0e141STakashi Iwai u32 reserved:8; 582*37e0e141STakashi Iwai u32 protocol:8; 583*37e0e141STakashi Iwai u32 reserved2:6; 584*37e0e141STakashi Iwai u32 jrts:2; 585*37e0e141STakashi Iwai /* 2-3 */ 586*37e0e141STakashi Iwai u32 reserved3[2]; 587*37e0e141STakashi Iwai #else 588*37e0e141STakashi Iwai /* 0 */ 589*37e0e141STakashi Iwai u32 ump_version_minor:8; 590*37e0e141STakashi Iwai u32 ump_version_major:8; 591*37e0e141STakashi Iwai u32 status:10; 592*37e0e141STakashi Iwai u32 format:2; 593*37e0e141STakashi Iwai u32 type:4; 594*37e0e141STakashi Iwai /* 1 */ 595*37e0e141STakashi Iwai u32 jrts:2; 596*37e0e141STakashi Iwai u32 reserved2:6; 597*37e0e141STakashi Iwai u32 protocol:8; 598*37e0e141STakashi Iwai u32 reserved:8; 599*37e0e141STakashi Iwai u32 num_function_blocks:7; 600*37e0e141STakashi Iwai u32 static_function_block:1; 601*37e0e141STakashi Iwai /* 2-3 */ 602*37e0e141STakashi Iwai u32 reserved3[2]; 603*37e0e141STakashi Iwai #endif 604*37e0e141STakashi Iwai } __packed; 605*37e0e141STakashi Iwai 606*37e0e141STakashi Iwai /* UMP Stream Message: Device Info Notification (128bit) */ 607*37e0e141STakashi Iwai struct snd_ump_stream_msg_devince_info { 608*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 609*37e0e141STakashi Iwai /* 0 */ 610*37e0e141STakashi Iwai u32 type:4; 611*37e0e141STakashi Iwai u32 format:2; 612*37e0e141STakashi Iwai u32 status:10; 613*37e0e141STakashi Iwai u32 reserved:16; 614*37e0e141STakashi Iwai /* 1 */ 615*37e0e141STakashi Iwai u32 manufacture_id; 616*37e0e141STakashi Iwai /* 2 */ 617*37e0e141STakashi Iwai u8 family_lsb; 618*37e0e141STakashi Iwai u8 family_msb; 619*37e0e141STakashi Iwai u8 model_lsb; 620*37e0e141STakashi Iwai u8 model_msb; 621*37e0e141STakashi Iwai /* 3 */ 622*37e0e141STakashi Iwai u32 sw_revision; 623*37e0e141STakashi Iwai #else 624*37e0e141STakashi Iwai /* 0 */ 625*37e0e141STakashi Iwai u32 reserved:16; 626*37e0e141STakashi Iwai u32 status:10; 627*37e0e141STakashi Iwai u32 format:2; 628*37e0e141STakashi Iwai u32 type:4; 629*37e0e141STakashi Iwai /* 1 */ 630*37e0e141STakashi Iwai u32 manufacture_id; 631*37e0e141STakashi Iwai /* 2 */ 632*37e0e141STakashi Iwai u8 model_msb; 633*37e0e141STakashi Iwai u8 model_lsb; 634*37e0e141STakashi Iwai u8 family_msb; 635*37e0e141STakashi Iwai u8 family_lsb; 636*37e0e141STakashi Iwai /* 3 */ 637*37e0e141STakashi Iwai u32 sw_revision; 638*37e0e141STakashi Iwai #endif 639*37e0e141STakashi Iwai } __packed; 640*37e0e141STakashi Iwai 641*37e0e141STakashi Iwai /* UMP Stream Message: Stream Config Request / Notification (128bit) */ 642*37e0e141STakashi Iwai struct snd_ump_stream_msg_stream_cfg { 643*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 644*37e0e141STakashi Iwai /* 0 */ 645*37e0e141STakashi Iwai u32 type:4; 646*37e0e141STakashi Iwai u32 format:2; 647*37e0e141STakashi Iwai u32 status:10; 648*37e0e141STakashi Iwai u32 protocol:8; 649*37e0e141STakashi Iwai u32 reserved:6; 650*37e0e141STakashi Iwai u32 jrts:2; 651*37e0e141STakashi Iwai /* 1-3 */ 652*37e0e141STakashi Iwai u32 reserved2[3]; 653*37e0e141STakashi Iwai #else 654*37e0e141STakashi Iwai /* 0 */ 655*37e0e141STakashi Iwai u32 jrts:2; 656*37e0e141STakashi Iwai u32 reserved:6; 657*37e0e141STakashi Iwai u32 protocol:8; 658*37e0e141STakashi Iwai u32 status:10; 659*37e0e141STakashi Iwai u32 format:2; 660*37e0e141STakashi Iwai u32 type:4; 661*37e0e141STakashi Iwai /* 1-3 */ 662*37e0e141STakashi Iwai u32 reserved2[3]; 663*37e0e141STakashi Iwai #endif 664*37e0e141STakashi Iwai } __packed; 665*37e0e141STakashi Iwai 666*37e0e141STakashi Iwai /* UMP Stream Message: Function Block Discovery (128bit) */ 667*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_discovery { 668*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 669*37e0e141STakashi Iwai /* 0 */ 670*37e0e141STakashi Iwai u32 type:4; 671*37e0e141STakashi Iwai u32 format:2; 672*37e0e141STakashi Iwai u32 status:10; 673*37e0e141STakashi Iwai u32 function_block_id:8; 674*37e0e141STakashi Iwai u32 filter:8; 675*37e0e141STakashi Iwai /* 1-3 */ 676*37e0e141STakashi Iwai u32 reserved[3]; 677*37e0e141STakashi Iwai #else 678*37e0e141STakashi Iwai /* 0 */ 679*37e0e141STakashi Iwai u32 filter:8; 680*37e0e141STakashi Iwai u32 function_block_id:8; 681*37e0e141STakashi Iwai u32 status:10; 682*37e0e141STakashi Iwai u32 format:2; 683*37e0e141STakashi Iwai u32 type:4; 684*37e0e141STakashi Iwai /* 1-3 */ 685*37e0e141STakashi Iwai u32 reserved[3]; 686*37e0e141STakashi Iwai #endif 687*37e0e141STakashi Iwai } __packed; 688*37e0e141STakashi Iwai 689*37e0e141STakashi Iwai /* UMP Stream Message: Function Block Info Notification (128bit) */ 690*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_info { 691*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 692*37e0e141STakashi Iwai /* 0 */ 693*37e0e141STakashi Iwai u32 type:4; 694*37e0e141STakashi Iwai u32 format:2; 695*37e0e141STakashi Iwai u32 status:10; 696*37e0e141STakashi Iwai u32 active:1; 697*37e0e141STakashi Iwai u32 function_block_id:7; 698*37e0e141STakashi Iwai u32 reserved:2; 699*37e0e141STakashi Iwai u32 ui_hint:2; 700*37e0e141STakashi Iwai u32 midi_10:2; 701*37e0e141STakashi Iwai u32 direction:2; 702*37e0e141STakashi Iwai /* 1 */ 703*37e0e141STakashi Iwai u32 first_group:8; 704*37e0e141STakashi Iwai u32 num_groups:8; 705*37e0e141STakashi Iwai u32 midi_ci_version:8; 706*37e0e141STakashi Iwai u32 sysex8_streams:8; 707*37e0e141STakashi Iwai /* 2-3 */ 708*37e0e141STakashi Iwai u32 reserved2[2]; 709*37e0e141STakashi Iwai #else 710*37e0e141STakashi Iwai /* 0 */ 711*37e0e141STakashi Iwai u32 direction:2; 712*37e0e141STakashi Iwai u32 midi_10:2; 713*37e0e141STakashi Iwai u32 ui_hint:2; 714*37e0e141STakashi Iwai u32 reserved:2; 715*37e0e141STakashi Iwai u32 function_block_id:7; 716*37e0e141STakashi Iwai u32 active:1; 717*37e0e141STakashi Iwai u32 status:10; 718*37e0e141STakashi Iwai u32 format:2; 719*37e0e141STakashi Iwai u32 type:4; 720*37e0e141STakashi Iwai /* 1 */ 721*37e0e141STakashi Iwai u32 sysex8_streams:8; 722*37e0e141STakashi Iwai u32 midi_ci_version:8; 723*37e0e141STakashi Iwai u32 num_groups:8; 724*37e0e141STakashi Iwai u32 first_group:8; 725*37e0e141STakashi Iwai /* 2-3 */ 726*37e0e141STakashi Iwai u32 reserved2[2]; 727*37e0e141STakashi Iwai #endif 728*37e0e141STakashi Iwai } __packed; 729*37e0e141STakashi Iwai 730*37e0e141STakashi Iwai /* UMP Stream Message: Function Block Name Notification (128bit) */ 731*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_name { 732*37e0e141STakashi Iwai #ifdef __BIG_ENDIAN_BITFIELD 733*37e0e141STakashi Iwai /* 0 */ 734*37e0e141STakashi Iwai u16 type:4; 735*37e0e141STakashi Iwai u16 format:2; 736*37e0e141STakashi Iwai u16 status:10; 737*37e0e141STakashi Iwai u8 function_block_id; 738*37e0e141STakashi Iwai u8 name0; 739*37e0e141STakashi Iwai /* 1-3 */ 740*37e0e141STakashi Iwai u8 name[12]; 741*37e0e141STakashi Iwai #else 742*37e0e141STakashi Iwai /* 0 */ 743*37e0e141STakashi Iwai u8 name0; 744*37e0e141STakashi Iwai u8 function_block_id; 745*37e0e141STakashi Iwai u16 status:10; 746*37e0e141STakashi Iwai u16 format:2; 747*37e0e141STakashi Iwai u16 type:4; 748*37e0e141STakashi Iwai /* 1-3 */ 749*37e0e141STakashi Iwai u8 name[12]; // FIXME: byte order 750*37e0e141STakashi Iwai #endif 751*37e0e141STakashi Iwai } __packed; 752*37e0e141STakashi Iwai 753*37e0e141STakashi Iwai /* MIDI 2.0 Stream Messages (128bit) */ 754*37e0e141STakashi Iwai union snd_ump_stream_msg { 755*37e0e141STakashi Iwai struct snd_ump_stream_msg_ep_discovery ep_discovery; 756*37e0e141STakashi Iwai struct snd_ump_stream_msg_ep_info ep_info; 757*37e0e141STakashi Iwai struct snd_ump_stream_msg_devince_info device_info; 758*37e0e141STakashi Iwai struct snd_ump_stream_msg_stream_cfg stream_cfg; 759*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_discovery fb_discovery; 760*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_info fb_info; 761*37e0e141STakashi Iwai struct snd_ump_stream_msg_fb_name fb_name; 762*37e0e141STakashi Iwai u32 raw[4]; 763*37e0e141STakashi Iwai }; 764*37e0e141STakashi Iwai 7650b5288f5STakashi Iwai #endif /* __SOUND_UMP_MSG_H */ 766