1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _UAPI__SOUND_ASEQUENCER_H 20 #define _UAPI__SOUND_ASEQUENCER_H 21 #include <sound/asound.h> 22 #define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 2) 23 #define SNDRV_SEQ_EVENT_SYSTEM 0 24 #define SNDRV_SEQ_EVENT_RESULT 1 25 #define SNDRV_SEQ_EVENT_NOTE 5 26 #define SNDRV_SEQ_EVENT_NOTEON 6 27 #define SNDRV_SEQ_EVENT_NOTEOFF 7 28 #define SNDRV_SEQ_EVENT_KEYPRESS 8 29 #define SNDRV_SEQ_EVENT_CONTROLLER 10 30 #define SNDRV_SEQ_EVENT_PGMCHANGE 11 31 #define SNDRV_SEQ_EVENT_CHANPRESS 12 32 #define SNDRV_SEQ_EVENT_PITCHBEND 13 33 #define SNDRV_SEQ_EVENT_CONTROL14 14 34 #define SNDRV_SEQ_EVENT_NONREGPARAM 15 35 #define SNDRV_SEQ_EVENT_REGPARAM 16 36 #define SNDRV_SEQ_EVENT_SONGPOS 20 37 #define SNDRV_SEQ_EVENT_SONGSEL 21 38 #define SNDRV_SEQ_EVENT_QFRAME 22 39 #define SNDRV_SEQ_EVENT_TIMESIGN 23 40 #define SNDRV_SEQ_EVENT_KEYSIGN 24 41 #define SNDRV_SEQ_EVENT_START 30 42 #define SNDRV_SEQ_EVENT_CONTINUE 31 43 #define SNDRV_SEQ_EVENT_STOP 32 44 #define SNDRV_SEQ_EVENT_SETPOS_TICK 33 45 #define SNDRV_SEQ_EVENT_SETPOS_TIME 34 46 #define SNDRV_SEQ_EVENT_TEMPO 35 47 #define SNDRV_SEQ_EVENT_CLOCK 36 48 #define SNDRV_SEQ_EVENT_TICK 37 49 #define SNDRV_SEQ_EVENT_QUEUE_SKEW 38 50 #define SNDRV_SEQ_EVENT_TUNE_REQUEST 40 51 #define SNDRV_SEQ_EVENT_RESET 41 52 #define SNDRV_SEQ_EVENT_SENSING 42 53 #define SNDRV_SEQ_EVENT_ECHO 50 54 #define SNDRV_SEQ_EVENT_OSS 51 55 #define SNDRV_SEQ_EVENT_CLIENT_START 60 56 #define SNDRV_SEQ_EVENT_CLIENT_EXIT 61 57 #define SNDRV_SEQ_EVENT_CLIENT_CHANGE 62 58 #define SNDRV_SEQ_EVENT_PORT_START 63 59 #define SNDRV_SEQ_EVENT_PORT_EXIT 64 60 #define SNDRV_SEQ_EVENT_PORT_CHANGE 65 61 #define SNDRV_SEQ_EVENT_PORT_SUBSCRIBED 66 62 #define SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED 67 63 #define SNDRV_SEQ_EVENT_USR0 90 64 #define SNDRV_SEQ_EVENT_USR1 91 65 #define SNDRV_SEQ_EVENT_USR2 92 66 #define SNDRV_SEQ_EVENT_USR3 93 67 #define SNDRV_SEQ_EVENT_USR4 94 68 #define SNDRV_SEQ_EVENT_USR5 95 69 #define SNDRV_SEQ_EVENT_USR6 96 70 #define SNDRV_SEQ_EVENT_USR7 97 71 #define SNDRV_SEQ_EVENT_USR8 98 72 #define SNDRV_SEQ_EVENT_USR9 99 73 #define SNDRV_SEQ_EVENT_SYSEX 130 74 #define SNDRV_SEQ_EVENT_BOUNCE 131 75 #define SNDRV_SEQ_EVENT_USR_VAR0 135 76 #define SNDRV_SEQ_EVENT_USR_VAR1 136 77 #define SNDRV_SEQ_EVENT_USR_VAR2 137 78 #define SNDRV_SEQ_EVENT_USR_VAR3 138 79 #define SNDRV_SEQ_EVENT_USR_VAR4 139 80 #define SNDRV_SEQ_EVENT_KERNEL_ERROR 150 81 #define SNDRV_SEQ_EVENT_KERNEL_QUOTE 151 82 #define SNDRV_SEQ_EVENT_NONE 255 83 typedef unsigned char snd_seq_event_type_t; 84 struct snd_seq_addr { 85 unsigned char client; 86 unsigned char port; 87 }; 88 struct snd_seq_connect { 89 struct snd_seq_addr sender; 90 struct snd_seq_addr dest; 91 }; 92 #define SNDRV_SEQ_ADDRESS_UNKNOWN 253 93 #define SNDRV_SEQ_ADDRESS_SUBSCRIBERS 254 94 #define SNDRV_SEQ_ADDRESS_BROADCAST 255 95 #define SNDRV_SEQ_QUEUE_DIRECT 253 96 #define SNDRV_SEQ_TIME_STAMP_TICK (0 << 0) 97 #define SNDRV_SEQ_TIME_STAMP_REAL (1 << 0) 98 #define SNDRV_SEQ_TIME_STAMP_MASK (1 << 0) 99 #define SNDRV_SEQ_TIME_MODE_ABS (0 << 1) 100 #define SNDRV_SEQ_TIME_MODE_REL (1 << 1) 101 #define SNDRV_SEQ_TIME_MODE_MASK (1 << 1) 102 #define SNDRV_SEQ_EVENT_LENGTH_FIXED (0 << 2) 103 #define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1 << 2) 104 #define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2 << 2) 105 #define SNDRV_SEQ_EVENT_LENGTH_MASK (3 << 2) 106 #define SNDRV_SEQ_PRIORITY_NORMAL (0 << 4) 107 #define SNDRV_SEQ_PRIORITY_HIGH (1 << 4) 108 #define SNDRV_SEQ_PRIORITY_MASK (1 << 4) 109 struct snd_seq_ev_note { 110 unsigned char channel; 111 unsigned char note; 112 unsigned char velocity; 113 unsigned char off_velocity; 114 unsigned int duration; 115 }; 116 struct snd_seq_ev_ctrl { 117 unsigned char channel; 118 unsigned char unused1, unused2, unused3; 119 unsigned int param; 120 signed int value; 121 }; 122 struct snd_seq_ev_raw8 { 123 unsigned char d[12]; 124 }; 125 struct snd_seq_ev_raw32 { 126 unsigned int d[3]; 127 }; 128 struct snd_seq_ev_ext { 129 unsigned int len; 130 void * ptr; 131 } __attribute__((packed)); 132 struct snd_seq_result { 133 int event; 134 int result; 135 }; 136 struct snd_seq_real_time { 137 unsigned int tv_sec; 138 unsigned int tv_nsec; 139 }; 140 typedef unsigned int snd_seq_tick_time_t; 141 union snd_seq_timestamp { 142 snd_seq_tick_time_t tick; 143 struct snd_seq_real_time time; 144 }; 145 struct snd_seq_queue_skew { 146 unsigned int value; 147 unsigned int base; 148 }; 149 struct snd_seq_ev_queue_control { 150 unsigned char queue; 151 unsigned char pad[3]; 152 union { 153 signed int value; 154 union snd_seq_timestamp time; 155 unsigned int position; 156 struct snd_seq_queue_skew skew; 157 unsigned int d32[2]; 158 unsigned char d8[8]; 159 } param; 160 }; 161 struct snd_seq_ev_quote { 162 struct snd_seq_addr origin; 163 unsigned short value; 164 struct snd_seq_event * event; 165 } __attribute__((packed)); 166 struct snd_seq_event { 167 snd_seq_event_type_t type; 168 unsigned char flags; 169 char tag; 170 unsigned char queue; 171 union snd_seq_timestamp time; 172 struct snd_seq_addr source; 173 struct snd_seq_addr dest; 174 union { 175 struct snd_seq_ev_note note; 176 struct snd_seq_ev_ctrl control; 177 struct snd_seq_ev_raw8 raw8; 178 struct snd_seq_ev_raw32 raw32; 179 struct snd_seq_ev_ext ext; 180 struct snd_seq_ev_queue_control queue; 181 union snd_seq_timestamp time; 182 struct snd_seq_addr addr; 183 struct snd_seq_connect connect; 184 struct snd_seq_result result; 185 struct snd_seq_ev_quote quote; 186 } data; 187 }; 188 struct snd_seq_event_bounce { 189 int err; 190 struct snd_seq_event event; 191 }; 192 struct snd_seq_system_info { 193 int queues; 194 int clients; 195 int ports; 196 int channels; 197 int cur_clients; 198 int cur_queues; 199 char reserved[24]; 200 }; 201 struct snd_seq_running_info { 202 unsigned char client; 203 unsigned char big_endian; 204 unsigned char cpu_mode; 205 unsigned char pad; 206 unsigned char reserved[12]; 207 }; 208 #define SNDRV_SEQ_CLIENT_SYSTEM 0 209 #define SNDRV_SEQ_CLIENT_DUMMY 14 210 #define SNDRV_SEQ_CLIENT_OSS 15 211 typedef int __bitwise snd_seq_client_type_t; 212 #define NO_CLIENT ((__force snd_seq_client_type_t) 0) 213 #define USER_CLIENT ((__force snd_seq_client_type_t) 1) 214 #define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2) 215 #define SNDRV_SEQ_FILTER_BROADCAST (1 << 0) 216 #define SNDRV_SEQ_FILTER_MULTICAST (1 << 1) 217 #define SNDRV_SEQ_FILTER_BOUNCE (1 << 2) 218 #define SNDRV_SEQ_FILTER_USE_EVENT (1 << 31) 219 struct snd_seq_client_info { 220 int client; 221 snd_seq_client_type_t type; 222 char name[64]; 223 unsigned int filter; 224 unsigned char multicast_filter[8]; 225 unsigned char event_filter[32]; 226 int num_ports; 227 int event_lost; 228 int card; 229 int pid; 230 char reserved[56]; 231 }; 232 struct snd_seq_client_pool { 233 int client; 234 int output_pool; 235 int input_pool; 236 int output_room; 237 int output_free; 238 int input_free; 239 char reserved[64]; 240 }; 241 #define SNDRV_SEQ_REMOVE_INPUT (1 << 0) 242 #define SNDRV_SEQ_REMOVE_OUTPUT (1 << 1) 243 #define SNDRV_SEQ_REMOVE_DEST (1 << 2) 244 #define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1 << 3) 245 #define SNDRV_SEQ_REMOVE_TIME_BEFORE (1 << 4) 246 #define SNDRV_SEQ_REMOVE_TIME_AFTER (1 << 5) 247 #define SNDRV_SEQ_REMOVE_TIME_TICK (1 << 6) 248 #define SNDRV_SEQ_REMOVE_EVENT_TYPE (1 << 7) 249 #define SNDRV_SEQ_REMOVE_IGNORE_OFF (1 << 8) 250 #define SNDRV_SEQ_REMOVE_TAG_MATCH (1 << 9) 251 struct snd_seq_remove_events { 252 unsigned int remove_mode; 253 union snd_seq_timestamp time; 254 unsigned char queue; 255 struct snd_seq_addr dest; 256 unsigned char channel; 257 int type; 258 char tag; 259 int reserved[10]; 260 }; 261 #define SNDRV_SEQ_PORT_SYSTEM_TIMER 0 262 #define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1 263 #define SNDRV_SEQ_PORT_CAP_READ (1 << 0) 264 #define SNDRV_SEQ_PORT_CAP_WRITE (1 << 1) 265 #define SNDRV_SEQ_PORT_CAP_SYNC_READ (1 << 2) 266 #define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1 << 3) 267 #define SNDRV_SEQ_PORT_CAP_DUPLEX (1 << 4) 268 #define SNDRV_SEQ_PORT_CAP_SUBS_READ (1 << 5) 269 #define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1 << 6) 270 #define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1 << 7) 271 #define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1 << 0) 272 #define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1 << 1) 273 #define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1 << 2) 274 #define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1 << 3) 275 #define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1 << 4) 276 #define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1 << 5) 277 #define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1 << 6) 278 #define SNDRV_SEQ_PORT_TYPE_SYNTH (1 << 10) 279 #define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1 << 11) 280 #define SNDRV_SEQ_PORT_TYPE_SAMPLE (1 << 12) 281 #define SNDRV_SEQ_PORT_TYPE_HARDWARE (1 << 16) 282 #define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1 << 17) 283 #define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1 << 18) 284 #define SNDRV_SEQ_PORT_TYPE_PORT (1 << 19) 285 #define SNDRV_SEQ_PORT_TYPE_APPLICATION (1 << 20) 286 #define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1 << 0) 287 #define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1 << 1) 288 #define SNDRV_SEQ_PORT_FLG_TIME_REAL (1 << 2) 289 struct snd_seq_port_info { 290 struct snd_seq_addr addr; 291 char name[64]; 292 unsigned int capability; 293 unsigned int type; 294 int midi_channels; 295 int midi_voices; 296 int synth_voices; 297 int read_use; 298 int write_use; 299 void * kernel; 300 unsigned int flags; 301 unsigned char time_queue; 302 char reserved[59]; 303 }; 304 #define SNDRV_SEQ_QUEUE_FLG_SYNC (1 << 0) 305 struct snd_seq_queue_info { 306 int queue; 307 int owner; 308 unsigned locked : 1; 309 char name[64]; 310 unsigned int flags; 311 char reserved[60]; 312 }; 313 struct snd_seq_queue_status { 314 int queue; 315 int events; 316 snd_seq_tick_time_t tick; 317 struct snd_seq_real_time time; 318 int running; 319 int flags; 320 char reserved[64]; 321 }; 322 struct snd_seq_queue_tempo { 323 int queue; 324 unsigned int tempo; 325 int ppq; 326 unsigned int skew_value; 327 unsigned int skew_base; 328 char reserved[24]; 329 }; 330 #define SNDRV_SEQ_TIMER_ALSA 0 331 #define SNDRV_SEQ_TIMER_MIDI_CLOCK 1 332 #define SNDRV_SEQ_TIMER_MIDI_TICK 2 333 struct snd_seq_queue_timer { 334 int queue; 335 int type; 336 union { 337 struct { 338 struct snd_timer_id id; 339 unsigned int resolution; 340 } alsa; 341 } u; 342 char reserved[64]; 343 }; 344 struct snd_seq_queue_client { 345 int queue; 346 int client; 347 int used; 348 char reserved[64]; 349 }; 350 #define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1 << 0) 351 #define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1 << 1) 352 #define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1 << 2) 353 struct snd_seq_port_subscribe { 354 struct snd_seq_addr sender; 355 struct snd_seq_addr dest; 356 unsigned int voices; 357 unsigned int flags; 358 unsigned char queue; 359 unsigned char pad[3]; 360 char reserved[64]; 361 }; 362 #define SNDRV_SEQ_QUERY_SUBS_READ 0 363 #define SNDRV_SEQ_QUERY_SUBS_WRITE 1 364 struct snd_seq_query_subs { 365 struct snd_seq_addr root; 366 int type; 367 int index; 368 int num_subs; 369 struct snd_seq_addr addr; 370 unsigned char queue; 371 unsigned int flags; 372 char reserved[64]; 373 }; 374 #define SNDRV_SEQ_IOCTL_PVERSION _IOR('S', 0x00, int) 375 #define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR('S', 0x01, int) 376 #define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info) 377 #define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info) 378 #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) 379 #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW('S', 0x11, struct snd_seq_client_info) 380 #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) 381 #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW('S', 0x21, struct snd_seq_port_info) 382 #define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info) 383 #define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW('S', 0x23, struct snd_seq_port_info) 384 #define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW('S', 0x30, struct snd_seq_port_subscribe) 385 #define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW('S', 0x31, struct snd_seq_port_subscribe) 386 #define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info) 387 #define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW('S', 0x33, struct snd_seq_queue_info) 388 #define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info) 389 #define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info) 390 #define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info) 391 #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status) 392 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo) 393 #define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW('S', 0x42, struct snd_seq_queue_tempo) 394 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer) 395 #define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW('S', 0x46, struct snd_seq_queue_timer) 396 #define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client) 397 #define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW('S', 0x4a, struct snd_seq_queue_client) 398 #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool) 399 #define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW('S', 0x4c, struct snd_seq_client_pool) 400 #define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW('S', 0x4e, struct snd_seq_remove_events) 401 #define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs) 402 #define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe) 403 #define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info) 404 #define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT _IOWR('S', 0x52, struct snd_seq_port_info) 405 #endif 406