diff options
author | David Howells <dhowells@redhat.com> | 2012-10-09 04:49:13 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-10-09 04:49:13 -0400 |
commit | 674e95ca446369e9ca40e4e92b214a616a52bcd6 (patch) | |
tree | c26f11819af6715384e87e0346f37df53912e2cd /include/sound/asequencer.h | |
parent | 9e2d8656f5e8aa214e66b462680cf86b210b74a8 (diff) |
UAPI: (Scripted) Disintegrate include/sound
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Michael Kerrisk <mtk.manpages@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'include/sound/asequencer.h')
-rw-r--r-- | include/sound/asequencer.h | 594 |
1 files changed, 1 insertions, 593 deletions
diff --git a/include/sound/asequencer.h b/include/sound/asequencer.h index 1505e6d5ef82..75935ce739c5 100644 --- a/include/sound/asequencer.h +++ b/include/sound/asequencer.h | |||
@@ -22,294 +22,9 @@ | |||
22 | #ifndef __SOUND_ASEQUENCER_H | 22 | #ifndef __SOUND_ASEQUENCER_H |
23 | #define __SOUND_ASEQUENCER_H | 23 | #define __SOUND_ASEQUENCER_H |
24 | 24 | ||
25 | #ifdef __KERNEL__ | ||
26 | #include <linux/ioctl.h> | 25 | #include <linux/ioctl.h> |
27 | #include <sound/asound.h> | 26 | #include <sound/asound.h> |
28 | #endif | 27 | #include <uapi/sound/asequencer.h> |
29 | |||
30 | /** version of the sequencer */ | ||
31 | #define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1) | ||
32 | |||
33 | /** | ||
34 | * definition of sequencer event types | ||
35 | */ | ||
36 | |||
37 | /** system messages | ||
38 | * event data type = #snd_seq_result | ||
39 | */ | ||
40 | #define SNDRV_SEQ_EVENT_SYSTEM 0 | ||
41 | #define SNDRV_SEQ_EVENT_RESULT 1 | ||
42 | |||
43 | /** note messages (channel specific) | ||
44 | * event data type = #snd_seq_ev_note | ||
45 | */ | ||
46 | #define SNDRV_SEQ_EVENT_NOTE 5 | ||
47 | #define SNDRV_SEQ_EVENT_NOTEON 6 | ||
48 | #define SNDRV_SEQ_EVENT_NOTEOFF 7 | ||
49 | #define SNDRV_SEQ_EVENT_KEYPRESS 8 | ||
50 | |||
51 | /** control messages (channel specific) | ||
52 | * event data type = #snd_seq_ev_ctrl | ||
53 | */ | ||
54 | #define SNDRV_SEQ_EVENT_CONTROLLER 10 | ||
55 | #define SNDRV_SEQ_EVENT_PGMCHANGE 11 | ||
56 | #define SNDRV_SEQ_EVENT_CHANPRESS 12 | ||
57 | #define SNDRV_SEQ_EVENT_PITCHBEND 13 /**< from -8192 to 8191 */ | ||
58 | #define SNDRV_SEQ_EVENT_CONTROL14 14 /**< 14 bit controller value */ | ||
59 | #define SNDRV_SEQ_EVENT_NONREGPARAM 15 /**< 14 bit NRPN address + 14 bit unsigned value */ | ||
60 | #define SNDRV_SEQ_EVENT_REGPARAM 16 /**< 14 bit RPN address + 14 bit unsigned value */ | ||
61 | |||
62 | /** synchronisation messages | ||
63 | * event data type = #snd_seq_ev_ctrl | ||
64 | */ | ||
65 | #define SNDRV_SEQ_EVENT_SONGPOS 20 /* Song Position Pointer with LSB and MSB values */ | ||
66 | #define SNDRV_SEQ_EVENT_SONGSEL 21 /* Song Select with song ID number */ | ||
67 | #define SNDRV_SEQ_EVENT_QFRAME 22 /* midi time code quarter frame */ | ||
68 | #define SNDRV_SEQ_EVENT_TIMESIGN 23 /* SMF Time Signature event */ | ||
69 | #define SNDRV_SEQ_EVENT_KEYSIGN 24 /* SMF Key Signature event */ | ||
70 | |||
71 | /** timer messages | ||
72 | * event data type = snd_seq_ev_queue_control | ||
73 | */ | ||
74 | #define SNDRV_SEQ_EVENT_START 30 /* midi Real Time Start message */ | ||
75 | #define SNDRV_SEQ_EVENT_CONTINUE 31 /* midi Real Time Continue message */ | ||
76 | #define SNDRV_SEQ_EVENT_STOP 32 /* midi Real Time Stop message */ | ||
77 | #define SNDRV_SEQ_EVENT_SETPOS_TICK 33 /* set tick queue position */ | ||
78 | #define SNDRV_SEQ_EVENT_SETPOS_TIME 34 /* set realtime queue position */ | ||
79 | #define SNDRV_SEQ_EVENT_TEMPO 35 /* (SMF) Tempo event */ | ||
80 | #define SNDRV_SEQ_EVENT_CLOCK 36 /* midi Real Time Clock message */ | ||
81 | #define SNDRV_SEQ_EVENT_TICK 37 /* midi Real Time Tick message */ | ||
82 | #define SNDRV_SEQ_EVENT_QUEUE_SKEW 38 /* skew queue tempo */ | ||
83 | |||
84 | /** others | ||
85 | * event data type = none | ||
86 | */ | ||
87 | #define SNDRV_SEQ_EVENT_TUNE_REQUEST 40 /* tune request */ | ||
88 | #define SNDRV_SEQ_EVENT_RESET 41 /* reset to power-on state */ | ||
89 | #define SNDRV_SEQ_EVENT_SENSING 42 /* "active sensing" event */ | ||
90 | |||
91 | /** echo back, kernel private messages | ||
92 | * event data type = any type | ||
93 | */ | ||
94 | #define SNDRV_SEQ_EVENT_ECHO 50 /* echo event */ | ||
95 | #define SNDRV_SEQ_EVENT_OSS 51 /* OSS raw event */ | ||
96 | |||
97 | /** system status messages (broadcast for subscribers) | ||
98 | * event data type = snd_seq_addr | ||
99 | */ | ||
100 | #define SNDRV_SEQ_EVENT_CLIENT_START 60 /* new client has connected */ | ||
101 | #define SNDRV_SEQ_EVENT_CLIENT_EXIT 61 /* client has left the system */ | ||
102 | #define SNDRV_SEQ_EVENT_CLIENT_CHANGE 62 /* client status/info has changed */ | ||
103 | #define SNDRV_SEQ_EVENT_PORT_START 63 /* new port was created */ | ||
104 | #define SNDRV_SEQ_EVENT_PORT_EXIT 64 /* port was deleted from system */ | ||
105 | #define SNDRV_SEQ_EVENT_PORT_CHANGE 65 /* port status/info has changed */ | ||
106 | |||
107 | /** port connection changes | ||
108 | * event data type = snd_seq_connect | ||
109 | */ | ||
110 | #define SNDRV_SEQ_EVENT_PORT_SUBSCRIBED 66 /* ports connected */ | ||
111 | #define SNDRV_SEQ_EVENT_PORT_UNSUBSCRIBED 67 /* ports disconnected */ | ||
112 | |||
113 | /* 70-89: synthesizer events - obsoleted */ | ||
114 | |||
115 | /** user-defined events with fixed length | ||
116 | * event data type = any | ||
117 | */ | ||
118 | #define SNDRV_SEQ_EVENT_USR0 90 | ||
119 | #define SNDRV_SEQ_EVENT_USR1 91 | ||
120 | #define SNDRV_SEQ_EVENT_USR2 92 | ||
121 | #define SNDRV_SEQ_EVENT_USR3 93 | ||
122 | #define SNDRV_SEQ_EVENT_USR4 94 | ||
123 | #define SNDRV_SEQ_EVENT_USR5 95 | ||
124 | #define SNDRV_SEQ_EVENT_USR6 96 | ||
125 | #define SNDRV_SEQ_EVENT_USR7 97 | ||
126 | #define SNDRV_SEQ_EVENT_USR8 98 | ||
127 | #define SNDRV_SEQ_EVENT_USR9 99 | ||
128 | |||
129 | /* 100-118: instrument layer - obsoleted */ | ||
130 | /* 119-129: reserved */ | ||
131 | |||
132 | /* 130-139: variable length events | ||
133 | * event data type = snd_seq_ev_ext | ||
134 | * (SNDRV_SEQ_EVENT_LENGTH_VARIABLE must be set) | ||
135 | */ | ||
136 | #define SNDRV_SEQ_EVENT_SYSEX 130 /* system exclusive data (variable length) */ | ||
137 | #define SNDRV_SEQ_EVENT_BOUNCE 131 /* error event */ | ||
138 | /* 132-134: reserved */ | ||
139 | #define SNDRV_SEQ_EVENT_USR_VAR0 135 | ||
140 | #define SNDRV_SEQ_EVENT_USR_VAR1 136 | ||
141 | #define SNDRV_SEQ_EVENT_USR_VAR2 137 | ||
142 | #define SNDRV_SEQ_EVENT_USR_VAR3 138 | ||
143 | #define SNDRV_SEQ_EVENT_USR_VAR4 139 | ||
144 | |||
145 | /* 150-151: kernel events with quote - DO NOT use in user clients */ | ||
146 | #define SNDRV_SEQ_EVENT_KERNEL_ERROR 150 | ||
147 | #define SNDRV_SEQ_EVENT_KERNEL_QUOTE 151 /* obsolete */ | ||
148 | |||
149 | /* 152-191: reserved */ | ||
150 | |||
151 | /* 192-254: hardware specific events */ | ||
152 | |||
153 | /* 255: special event */ | ||
154 | #define SNDRV_SEQ_EVENT_NONE 255 | ||
155 | |||
156 | |||
157 | typedef unsigned char snd_seq_event_type_t; | ||
158 | |||
159 | /** event address */ | ||
160 | struct snd_seq_addr { | ||
161 | unsigned char client; /**< Client number: 0..255, 255 = broadcast to all clients */ | ||
162 | unsigned char port; /**< Port within client: 0..255, 255 = broadcast to all ports */ | ||
163 | }; | ||
164 | |||
165 | /** port connection */ | ||
166 | struct snd_seq_connect { | ||
167 | struct snd_seq_addr sender; | ||
168 | struct snd_seq_addr dest; | ||
169 | }; | ||
170 | |||
171 | |||
172 | #define SNDRV_SEQ_ADDRESS_UNKNOWN 253 /* unknown source */ | ||
173 | #define SNDRV_SEQ_ADDRESS_SUBSCRIBERS 254 /* send event to all subscribed ports */ | ||
174 | #define SNDRV_SEQ_ADDRESS_BROADCAST 255 /* send event to all queues/clients/ports/channels */ | ||
175 | #define SNDRV_SEQ_QUEUE_DIRECT 253 /* direct dispatch */ | ||
176 | |||
177 | /* event mode flag - NOTE: only 8 bits available! */ | ||
178 | #define SNDRV_SEQ_TIME_STAMP_TICK (0<<0) /* timestamp in clock ticks */ | ||
179 | #define SNDRV_SEQ_TIME_STAMP_REAL (1<<0) /* timestamp in real time */ | ||
180 | #define SNDRV_SEQ_TIME_STAMP_MASK (1<<0) | ||
181 | |||
182 | #define SNDRV_SEQ_TIME_MODE_ABS (0<<1) /* absolute timestamp */ | ||
183 | #define SNDRV_SEQ_TIME_MODE_REL (1<<1) /* relative to current time */ | ||
184 | #define SNDRV_SEQ_TIME_MODE_MASK (1<<1) | ||
185 | |||
186 | #define SNDRV_SEQ_EVENT_LENGTH_FIXED (0<<2) /* fixed event size */ | ||
187 | #define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1<<2) /* variable event size */ | ||
188 | #define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2<<2) /* variable event size - user memory space */ | ||
189 | #define SNDRV_SEQ_EVENT_LENGTH_MASK (3<<2) | ||
190 | |||
191 | #define SNDRV_SEQ_PRIORITY_NORMAL (0<<4) /* normal priority */ | ||
192 | #define SNDRV_SEQ_PRIORITY_HIGH (1<<4) /* event should be processed before others */ | ||
193 | #define SNDRV_SEQ_PRIORITY_MASK (1<<4) | ||
194 | |||
195 | |||
196 | /* note event */ | ||
197 | struct snd_seq_ev_note { | ||
198 | unsigned char channel; | ||
199 | unsigned char note; | ||
200 | unsigned char velocity; | ||
201 | unsigned char off_velocity; /* only for SNDRV_SEQ_EVENT_NOTE */ | ||
202 | unsigned int duration; /* only for SNDRV_SEQ_EVENT_NOTE */ | ||
203 | }; | ||
204 | |||
205 | /* controller event */ | ||
206 | struct snd_seq_ev_ctrl { | ||
207 | unsigned char channel; | ||
208 | unsigned char unused1, unused2, unused3; /* pad */ | ||
209 | unsigned int param; | ||
210 | signed int value; | ||
211 | }; | ||
212 | |||
213 | /* generic set of bytes (12x8 bit) */ | ||
214 | struct snd_seq_ev_raw8 { | ||
215 | unsigned char d[12]; /* 8 bit value */ | ||
216 | }; | ||
217 | |||
218 | /* generic set of integers (3x32 bit) */ | ||
219 | struct snd_seq_ev_raw32 { | ||
220 | unsigned int d[3]; /* 32 bit value */ | ||
221 | }; | ||
222 | |||
223 | /* external stored data */ | ||
224 | struct snd_seq_ev_ext { | ||
225 | unsigned int len; /* length of data */ | ||
226 | void *ptr; /* pointer to data (note: maybe 64-bit) */ | ||
227 | } __attribute__((packed)); | ||
228 | |||
229 | struct snd_seq_result { | ||
230 | int event; /* processed event type */ | ||
231 | int result; | ||
232 | }; | ||
233 | |||
234 | |||
235 | struct snd_seq_real_time { | ||
236 | unsigned int tv_sec; /* seconds */ | ||
237 | unsigned int tv_nsec; /* nanoseconds */ | ||
238 | }; | ||
239 | |||
240 | typedef unsigned int snd_seq_tick_time_t; /* midi ticks */ | ||
241 | |||
242 | union snd_seq_timestamp { | ||
243 | snd_seq_tick_time_t tick; | ||
244 | struct snd_seq_real_time time; | ||
245 | }; | ||
246 | |||
247 | struct snd_seq_queue_skew { | ||
248 | unsigned int value; | ||
249 | unsigned int base; | ||
250 | }; | ||
251 | |||
252 | /* queue timer control */ | ||
253 | struct snd_seq_ev_queue_control { | ||
254 | unsigned char queue; /* affected queue */ | ||
255 | unsigned char pad[3]; /* reserved */ | ||
256 | union { | ||
257 | signed int value; /* affected value (e.g. tempo) */ | ||
258 | union snd_seq_timestamp time; /* time */ | ||
259 | unsigned int position; /* sync position */ | ||
260 | struct snd_seq_queue_skew skew; | ||
261 | unsigned int d32[2]; | ||
262 | unsigned char d8[8]; | ||
263 | } param; | ||
264 | }; | ||
265 | |||
266 | /* quoted event - inside the kernel only */ | ||
267 | struct snd_seq_ev_quote { | ||
268 | struct snd_seq_addr origin; /* original sender */ | ||
269 | unsigned short value; /* optional data */ | ||
270 | struct snd_seq_event *event; /* quoted event */ | ||
271 | } __attribute__((packed)); | ||
272 | |||
273 | |||
274 | /* sequencer event */ | ||
275 | struct snd_seq_event { | ||
276 | snd_seq_event_type_t type; /* event type */ | ||
277 | unsigned char flags; /* event flags */ | ||
278 | char tag; | ||
279 | |||
280 | unsigned char queue; /* schedule queue */ | ||
281 | union snd_seq_timestamp time; /* schedule time */ | ||
282 | |||
283 | |||
284 | struct snd_seq_addr source; /* source address */ | ||
285 | struct snd_seq_addr dest; /* destination address */ | ||
286 | |||
287 | union { /* event data... */ | ||
288 | struct snd_seq_ev_note note; | ||
289 | struct snd_seq_ev_ctrl control; | ||
290 | struct snd_seq_ev_raw8 raw8; | ||
291 | struct snd_seq_ev_raw32 raw32; | ||
292 | struct snd_seq_ev_ext ext; | ||
293 | struct snd_seq_ev_queue_control queue; | ||
294 | union snd_seq_timestamp time; | ||
295 | struct snd_seq_addr addr; | ||
296 | struct snd_seq_connect connect; | ||
297 | struct snd_seq_result result; | ||
298 | struct snd_seq_ev_quote quote; | ||
299 | } data; | ||
300 | }; | ||
301 | |||
302 | |||
303 | /* | ||
304 | * bounce event - stored as variable size data | ||
305 | */ | ||
306 | struct snd_seq_event_bounce { | ||
307 | int err; | ||
308 | struct snd_seq_event event; | ||
309 | /* external data follows here. */ | ||
310 | }; | ||
311 | |||
312 | #ifdef __KERNEL__ | ||
313 | 28 | ||
314 | /* helper macro */ | 29 | /* helper macro */ |
315 | #define snd_seq_event_bounce_ext_data(ev) ((void*)((char *)(ev)->data.ext.ptr + sizeof(struct snd_seq_event_bounce))) | 30 | #define snd_seq_event_bounce_ext_data(ev) ((void*)((char *)(ev)->data.ext.ptr + sizeof(struct snd_seq_event_bounce))) |
@@ -368,311 +83,4 @@ struct snd_seq_event_bounce { | |||
368 | /* queue sync port */ | 83 | /* queue sync port */ |
369 | #define snd_seq_queue_sync_port(q) ((q) + 16) | 84 | #define snd_seq_queue_sync_port(q) ((q) + 16) |
370 | 85 | ||
371 | #endif /* __KERNEL__ */ | ||
372 | |||
373 | /* system information */ | ||
374 | struct snd_seq_system_info { | ||
375 | int queues; /* maximum queues count */ | ||
376 | int clients; /* maximum clients count */ | ||
377 | int ports; /* maximum ports per client */ | ||
378 | int channels; /* maximum channels per port */ | ||
379 | int cur_clients; /* current clients */ | ||
380 | int cur_queues; /* current queues */ | ||
381 | char reserved[24]; | ||
382 | }; | ||
383 | |||
384 | |||
385 | /* system running information */ | ||
386 | struct snd_seq_running_info { | ||
387 | unsigned char client; /* client id */ | ||
388 | unsigned char big_endian; /* 1 = big-endian */ | ||
389 | unsigned char cpu_mode; /* 4 = 32bit, 8 = 64bit */ | ||
390 | unsigned char pad; /* reserved */ | ||
391 | unsigned char reserved[12]; | ||
392 | }; | ||
393 | |||
394 | |||
395 | /* known client numbers */ | ||
396 | #define SNDRV_SEQ_CLIENT_SYSTEM 0 | ||
397 | /* internal client numbers */ | ||
398 | #define SNDRV_SEQ_CLIENT_DUMMY 14 /* midi through */ | ||
399 | #define SNDRV_SEQ_CLIENT_OSS 15 /* oss sequencer emulator */ | ||
400 | |||
401 | |||
402 | /* client types */ | ||
403 | typedef int __bitwise snd_seq_client_type_t; | ||
404 | #define NO_CLIENT ((__force snd_seq_client_type_t) 0) | ||
405 | #define USER_CLIENT ((__force snd_seq_client_type_t) 1) | ||
406 | #define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2) | ||
407 | |||
408 | /* event filter flags */ | ||
409 | #define SNDRV_SEQ_FILTER_BROADCAST (1<<0) /* accept broadcast messages */ | ||
410 | #define SNDRV_SEQ_FILTER_MULTICAST (1<<1) /* accept multicast messages */ | ||
411 | #define SNDRV_SEQ_FILTER_BOUNCE (1<<2) /* accept bounce event in error */ | ||
412 | #define SNDRV_SEQ_FILTER_USE_EVENT (1<<31) /* use event filter */ | ||
413 | |||
414 | struct snd_seq_client_info { | ||
415 | int client; /* client number to inquire */ | ||
416 | snd_seq_client_type_t type; /* client type */ | ||
417 | char name[64]; /* client name */ | ||
418 | unsigned int filter; /* filter flags */ | ||
419 | unsigned char multicast_filter[8]; /* multicast filter bitmap */ | ||
420 | unsigned char event_filter[32]; /* event filter bitmap */ | ||
421 | int num_ports; /* RO: number of ports */ | ||
422 | int event_lost; /* number of lost events */ | ||
423 | char reserved[64]; /* for future use */ | ||
424 | }; | ||
425 | |||
426 | |||
427 | /* client pool size */ | ||
428 | struct snd_seq_client_pool { | ||
429 | int client; /* client number to inquire */ | ||
430 | int output_pool; /* outgoing (write) pool size */ | ||
431 | int input_pool; /* incoming (read) pool size */ | ||
432 | int output_room; /* minimum free pool size for select/blocking mode */ | ||
433 | int output_free; /* unused size */ | ||
434 | int input_free; /* unused size */ | ||
435 | char reserved[64]; | ||
436 | }; | ||
437 | |||
438 | |||
439 | /* Remove events by specified criteria */ | ||
440 | |||
441 | #define SNDRV_SEQ_REMOVE_INPUT (1<<0) /* Flush input queues */ | ||
442 | #define SNDRV_SEQ_REMOVE_OUTPUT (1<<1) /* Flush output queues */ | ||
443 | #define SNDRV_SEQ_REMOVE_DEST (1<<2) /* Restrict by destination q:client:port */ | ||
444 | #define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1<<3) /* Restrict by channel */ | ||
445 | #define SNDRV_SEQ_REMOVE_TIME_BEFORE (1<<4) /* Restrict to before time */ | ||
446 | #define SNDRV_SEQ_REMOVE_TIME_AFTER (1<<5) /* Restrict to time or after */ | ||
447 | #define SNDRV_SEQ_REMOVE_TIME_TICK (1<<6) /* Time is in ticks */ | ||
448 | #define SNDRV_SEQ_REMOVE_EVENT_TYPE (1<<7) /* Restrict to event type */ | ||
449 | #define SNDRV_SEQ_REMOVE_IGNORE_OFF (1<<8) /* Do not flush off events */ | ||
450 | #define SNDRV_SEQ_REMOVE_TAG_MATCH (1<<9) /* Restrict to events with given tag */ | ||
451 | |||
452 | struct snd_seq_remove_events { | ||
453 | unsigned int remove_mode; /* Flags that determine what gets removed */ | ||
454 | |||
455 | union snd_seq_timestamp time; | ||
456 | |||
457 | unsigned char queue; /* Queue for REMOVE_DEST */ | ||
458 | struct snd_seq_addr dest; /* Address for REMOVE_DEST */ | ||
459 | unsigned char channel; /* Channel for REMOVE_DEST */ | ||
460 | |||
461 | int type; /* For REMOVE_EVENT_TYPE */ | ||
462 | char tag; /* Tag for REMOVE_TAG */ | ||
463 | |||
464 | int reserved[10]; /* To allow for future binary compatibility */ | ||
465 | |||
466 | }; | ||
467 | |||
468 | |||
469 | /* known port numbers */ | ||
470 | #define SNDRV_SEQ_PORT_SYSTEM_TIMER 0 | ||
471 | #define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1 | ||
472 | |||
473 | /* port capabilities (32 bits) */ | ||
474 | #define SNDRV_SEQ_PORT_CAP_READ (1<<0) /* readable from this port */ | ||
475 | #define SNDRV_SEQ_PORT_CAP_WRITE (1<<1) /* writable to this port */ | ||
476 | |||
477 | #define SNDRV_SEQ_PORT_CAP_SYNC_READ (1<<2) | ||
478 | #define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1<<3) | ||
479 | |||
480 | #define SNDRV_SEQ_PORT_CAP_DUPLEX (1<<4) | ||
481 | |||
482 | #define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5) /* allow read subscription */ | ||
483 | #define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6) /* allow write subscription */ | ||
484 | #define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7) /* routing not allowed */ | ||
485 | |||
486 | /* port type */ | ||
487 | #define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0) /* hardware specific */ | ||
488 | #define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1<<1) /* generic MIDI device */ | ||
489 | #define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1<<2) /* General MIDI compatible device */ | ||
490 | #define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1<<3) /* GS compatible device */ | ||
491 | #define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4) /* XG compatible device */ | ||
492 | #define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) /* MT-32 compatible device */ | ||
493 | #define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) /* General MIDI 2 compatible device */ | ||
494 | |||
495 | /* other standards...*/ | ||
496 | #define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10) /* Synth device (no MIDI compatible - direct wavetable) */ | ||
497 | #define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11) /* Sampling device (support sample download) */ | ||
498 | #define SNDRV_SEQ_PORT_TYPE_SAMPLE (1<<12) /* Sampling device (sample can be downloaded at any time) */ | ||
499 | /*...*/ | ||
500 | #define SNDRV_SEQ_PORT_TYPE_HARDWARE (1<<16) /* driver for a hardware device */ | ||
501 | #define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1<<17) /* implemented in software */ | ||
502 | #define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1<<18) /* generates sound */ | ||
503 | #define SNDRV_SEQ_PORT_TYPE_PORT (1<<19) /* connects to other device(s) */ | ||
504 | #define SNDRV_SEQ_PORT_TYPE_APPLICATION (1<<20) /* application (sequencer/editor) */ | ||
505 | |||
506 | /* misc. conditioning flags */ | ||
507 | #define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1<<0) | ||
508 | #define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1) | ||
509 | #define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2) | ||
510 | |||
511 | struct snd_seq_port_info { | ||
512 | struct snd_seq_addr addr; /* client/port numbers */ | ||
513 | char name[64]; /* port name */ | ||
514 | |||
515 | unsigned int capability; /* port capability bits */ | ||
516 | unsigned int type; /* port type bits */ | ||
517 | int midi_channels; /* channels per MIDI port */ | ||
518 | int midi_voices; /* voices per MIDI port */ | ||
519 | int synth_voices; /* voices per SYNTH port */ | ||
520 | |||
521 | int read_use; /* R/O: subscribers for output (from this port) */ | ||
522 | int write_use; /* R/O: subscribers for input (to this port) */ | ||
523 | |||
524 | void *kernel; /* reserved for kernel use (must be NULL) */ | ||
525 | unsigned int flags; /* misc. conditioning */ | ||
526 | unsigned char time_queue; /* queue # for timestamping */ | ||
527 | char reserved[59]; /* for future use */ | ||
528 | }; | ||
529 | |||
530 | |||
531 | /* queue flags */ | ||
532 | #define SNDRV_SEQ_QUEUE_FLG_SYNC (1<<0) /* sync enabled */ | ||
533 | |||
534 | /* queue information */ | ||
535 | struct snd_seq_queue_info { | ||
536 | int queue; /* queue id */ | ||
537 | |||
538 | /* | ||
539 | * security settings, only owner of this queue can start/stop timer | ||
540 | * etc. if the queue is locked for other clients | ||
541 | */ | ||
542 | int owner; /* client id for owner of the queue */ | ||
543 | unsigned locked:1; /* timing queue locked for other queues */ | ||
544 | char name[64]; /* name of this queue */ | ||
545 | unsigned int flags; /* flags */ | ||
546 | char reserved[60]; /* for future use */ | ||
547 | |||
548 | }; | ||
549 | |||
550 | /* queue info/status */ | ||
551 | struct snd_seq_queue_status { | ||
552 | int queue; /* queue id */ | ||
553 | int events; /* read-only - queue size */ | ||
554 | snd_seq_tick_time_t tick; /* current tick */ | ||
555 | struct snd_seq_real_time time; /* current time */ | ||
556 | int running; /* running state of queue */ | ||
557 | int flags; /* various flags */ | ||
558 | char reserved[64]; /* for the future */ | ||
559 | }; | ||
560 | |||
561 | |||
562 | /* queue tempo */ | ||
563 | struct snd_seq_queue_tempo { | ||
564 | int queue; /* sequencer queue */ | ||
565 | unsigned int tempo; /* current tempo, us/tick */ | ||
566 | int ppq; /* time resolution, ticks/quarter */ | ||
567 | unsigned int skew_value; /* queue skew */ | ||
568 | unsigned int skew_base; /* queue skew base */ | ||
569 | char reserved[24]; /* for the future */ | ||
570 | }; | ||
571 | |||
572 | |||
573 | /* sequencer timer sources */ | ||
574 | #define SNDRV_SEQ_TIMER_ALSA 0 /* ALSA timer */ | ||
575 | #define SNDRV_SEQ_TIMER_MIDI_CLOCK 1 /* Midi Clock (CLOCK event) */ | ||
576 | #define SNDRV_SEQ_TIMER_MIDI_TICK 2 /* Midi Timer Tick (TICK event) */ | ||
577 | |||
578 | /* queue timer info */ | ||
579 | struct snd_seq_queue_timer { | ||
580 | int queue; /* sequencer queue */ | ||
581 | int type; /* source timer type */ | ||
582 | union { | ||
583 | struct { | ||
584 | struct snd_timer_id id; /* ALSA's timer ID */ | ||
585 | unsigned int resolution; /* resolution in Hz */ | ||
586 | } alsa; | ||
587 | } u; | ||
588 | char reserved[64]; /* for the future use */ | ||
589 | }; | ||
590 | |||
591 | |||
592 | struct snd_seq_queue_client { | ||
593 | int queue; /* sequencer queue */ | ||
594 | int client; /* sequencer client */ | ||
595 | int used; /* queue is used with this client | ||
596 | (must be set for accepting events) */ | ||
597 | /* per client watermarks */ | ||
598 | char reserved[64]; /* for future use */ | ||
599 | }; | ||
600 | |||
601 | |||
602 | #define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1<<0) /* exclusive connection */ | ||
603 | #define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1<<1) | ||
604 | #define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1<<2) | ||
605 | |||
606 | struct snd_seq_port_subscribe { | ||
607 | struct snd_seq_addr sender; /* sender address */ | ||
608 | struct snd_seq_addr dest; /* destination address */ | ||
609 | unsigned int voices; /* number of voices to be allocated (0 = don't care) */ | ||
610 | unsigned int flags; /* modes */ | ||
611 | unsigned char queue; /* input time-stamp queue (optional) */ | ||
612 | unsigned char pad[3]; /* reserved */ | ||
613 | char reserved[64]; | ||
614 | }; | ||
615 | |||
616 | /* type of query subscription */ | ||
617 | #define SNDRV_SEQ_QUERY_SUBS_READ 0 | ||
618 | #define SNDRV_SEQ_QUERY_SUBS_WRITE 1 | ||
619 | |||
620 | struct snd_seq_query_subs { | ||
621 | struct snd_seq_addr root; /* client/port id to be searched */ | ||
622 | int type; /* READ or WRITE */ | ||
623 | int index; /* 0..N-1 */ | ||
624 | int num_subs; /* R/O: number of subscriptions on this port */ | ||
625 | struct snd_seq_addr addr; /* R/O: result */ | ||
626 | unsigned char queue; /* R/O: result */ | ||
627 | unsigned int flags; /* R/O: result */ | ||
628 | char reserved[64]; /* for future use */ | ||
629 | }; | ||
630 | |||
631 | |||
632 | /* | ||
633 | * IOCTL commands | ||
634 | */ | ||
635 | |||
636 | #define SNDRV_SEQ_IOCTL_PVERSION _IOR ('S', 0x00, int) | ||
637 | #define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int) | ||
638 | #define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info) | ||
639 | #define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info) | ||
640 | |||
641 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info) | ||
642 | #define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info) | ||
643 | |||
644 | #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info) | ||
645 | #define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info) | ||
646 | #define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info) | ||
647 | #define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW ('S', 0x23, struct snd_seq_port_info) | ||
648 | |||
649 | #define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW ('S', 0x30, struct snd_seq_port_subscribe) | ||
650 | #define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW ('S', 0x31, struct snd_seq_port_subscribe) | ||
651 | |||
652 | #define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info) | ||
653 | #define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW ('S', 0x33, struct snd_seq_queue_info) | ||
654 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info) | ||
655 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info) | ||
656 | #define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info) | ||
657 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status) | ||
658 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo) | ||
659 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo) | ||
660 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner) | ||
661 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner) | ||
662 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer) | ||
663 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer) | ||
664 | /* XXX | ||
665 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_SYNC _IOWR('S', 0x53, struct snd_seq_queue_sync) | ||
666 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_SYNC _IOW ('S', 0x54, struct snd_seq_queue_sync) | ||
667 | */ | ||
668 | #define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client) | ||
669 | #define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client) | ||
670 | #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool) | ||
671 | #define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW ('S', 0x4c, struct snd_seq_client_pool) | ||
672 | #define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW ('S', 0x4e, struct snd_seq_remove_events) | ||
673 | #define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs) | ||
674 | #define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe) | ||
675 | #define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info) | ||
676 | #define SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT _IOWR('S', 0x52, struct snd_seq_port_info) | ||
677 | |||
678 | #endif /* __SOUND_ASEQUENCER_H */ | 86 | #endif /* __SOUND_ASEQUENCER_H */ |