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 83typedef unsigned char snd_seq_event_type_t; 84struct snd_seq_addr { 85 unsigned char client; 86 unsigned char port; 87}; 88struct 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) 109struct 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}; 116struct snd_seq_ev_ctrl { 117 unsigned char channel; 118 unsigned char unused1, unused2, unused3; 119 unsigned int param; 120 signed int value; 121}; 122struct snd_seq_ev_raw8 { 123 unsigned char d[12]; 124}; 125struct snd_seq_ev_raw32 { 126 unsigned int d[3]; 127}; 128struct snd_seq_ev_ext { 129 unsigned int len; 130 void * ptr; 131} __attribute__((packed)); 132struct snd_seq_result { 133 int event; 134 int result; 135}; 136struct snd_seq_real_time { 137 unsigned int tv_sec; 138 unsigned int tv_nsec; 139}; 140typedef unsigned int snd_seq_tick_time_t; 141union snd_seq_timestamp { 142 snd_seq_tick_time_t tick; 143 struct snd_seq_real_time time; 144}; 145struct snd_seq_queue_skew { 146 unsigned int value; 147 unsigned int base; 148}; 149struct 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}; 161struct snd_seq_ev_quote { 162 struct snd_seq_addr origin; 163 unsigned short value; 164 struct snd_seq_event * event; 165} __attribute__((packed)); 166struct 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}; 188struct snd_seq_event_bounce { 189 int err; 190 struct snd_seq_event event; 191}; 192struct 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}; 201struct 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 211typedef 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) 219struct 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}; 232struct 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) 251struct 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) 289struct 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) 305struct 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}; 313struct 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}; 322struct 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 333struct 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}; 344struct 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) 353struct 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 364struct 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