xref: /haiku/headers/os/drivers/usb/USB_audio.h (revision 8251b2c8f6c7bffe42318b2251bd1163d3c86326)
1 #ifndef USB_AUDIO_H
2 #define USB_AUDIO_H
3 
4 // (Partial) USB Device Class Definition for Audio Devices
5 // R1: Release 1.0 March 18, 1998
6 // R2: Release 2.0 May 31, 2006
7 
8 #include <SupportDefs.h>
9 
10 #define USB_AUDIO_DEVICE_CLASS 			0x01
11 #define USB_AUDIO_CLASS_VERSION_1		0x0100
12 #define USB_AUDIO_CLASS_VERSION_2		0x0200
13 
14 enum {
15 	USB_AUDIO_INTERFACE_AUDIO_CLASS		= 0x01
16 };
17 
18 enum { // Audio Interface Subclasses
19 	USB_AUDIO_INTERFACE_UNDEFINED_SUBCLASS =	0x00,
20 	USB_AUDIO_INTERFACE_AUDIOCONTROL_SUBCLASS =	0x01,
21 	USB_AUDIO_INTERFACE_AUDIOSTREAMING_SUBCLASS,
22 	USB_AUDIO_INTERFACE_MIDISTREAMING_SUBCLASS
23 };
24 
25 enum { // Audio Interface Protocol Codes
26 	USB_AUDIO_PROTOCOL_UNDEFINED = 0x00
27 };
28 
29 enum { // Audio Interface Class-Specific Descriptor Types
30 	USB_AUDIO_CS_UNDEFINED				= 0x20,
31 	USB_AUDIO_CS_DEVICE					= 0x21,
32 	USB_AUDIO_CS_CONFIGURATION			= 0x22,
33 	USB_AUDIO_CS_STRING					= 0x23,
34 	USB_AUDIO_CS_INTERFACE				= 0x24,
35 	USB_AUDIO_CS_ENDPOINT				= 0x25
36 };
37 
38 
39 enum { // Audio Class-Specific AudioControl Interface descriptor subtypes
40 	USB_AUDIO_AC_DESCRIPTOR_UNDEFINED	= 0x00,
41 	USB_AUDIO_AC_HEADER					= 0x01,
42 	USB_AUDIO_AC_INPUT_TERMINAL			= 0x02,
43 	USB_AUDIO_AC_OUTPUT_TERMINAL		= 0x03,
44 	USB_AUDIO_AC_MIXER_UNIT				= 0x04,
45 	USB_AUDIO_AC_SELECTOR_UNIT			= 0x05,
46 	USB_AUDIO_AC_FEATURE_UNIT			= 0x06,
47 	USB_AUDIO_AC_PROCESSING_UNIT		= 0x07,
48 	USB_AUDIO_AC_EXTENSION_UNIT			= 0x08,
49 	USB_AUDIO_AC_EFFECT_UNIT_R2			= 0x07,
50 	USB_AUDIO_AC_PROCESSING_UNIT_R2		= 0x08,
51 	USB_AUDIO_AC_EXTENSION_UNIT_R2		= 0x09,
52 	USB_AUDIO_AC_CLOCK_SOURCE_R2		= 0x0A,
53 	USB_AUDIO_AC_CLOCK_SELECTOR_R2		= 0x0B,
54 	USB_AUDIO_AC_CLOCK_MULTIPLIER_R2	= 0x0C,
55 	USB_AUDIO_AC_SAMPLE_RATE_CONVERTER_R2 = 0x0D
56 };
57 
58 
59 // Class Specific Audio Control Interface Header
60 // R1: Table 4-2 p.37 / R2: Table 4-5 p.48
61 typedef struct {
62 	uint8	length;
63 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
64 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_HEADER
65 	uint16	bcd_release_no;
66 	union {
67 		struct {
68 			uint16	total_length;
69 			uint8	in_collection;
70 			uint8	interface_numbers[0];
71 		} _PACKED r1;
72 
73 		struct {
74 			uint8	function_category;
75 			uint16	total_length;
76 			uint8	bm_controls;
77 		} _PACKED r2;
78 	};
79 } _PACKED usb_audiocontrol_header_descriptor;
80 
81 // Clock Source Descriptor
82 // R2: Table 4-6 p.49
83 typedef struct {
84 	uint8 length;
85 	uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE
86 	uint8 descriptor_subtype; // USB_AUDIO_CLOCKSOURCE_HEADER
87 	uint8 clock_id;
88 	uint8 bm_attributes;
89 	uint8 bm_controls;
90 	uint8 assoc_terminal;
91 	uint8 clock_source_idx;
92 } _PACKED usb_audio_clocksource_descriptor;
93 
94 // Clock Selector Descriptor
95 // R2: Table 4-7 p.50
96 typedef struct {
97 	uint8 length;
98 	uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE
99 	uint8 descriptor_subtype; // USB_AUDIO_CLOCKSELECTOR_HEADER
100 	uint8 clock_id;
101 	uint8 nrinpins;
102 	uint8 Csourceid[1];
103 	uint8 bm_controls;
104 	uint8 clockselector;
105 } _PACKED usb_audio_clockselector_descriptor;
106 
107 // Clock Multiplier Descriptor
108 // R2: Table 4-8 p.51
109 typedef struct {
110 	uint8	length;
111 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
112 	uint8	descriptor_subtype; 	// USB_AUDIO_CLOCKMULTIPLIER
113 	uint8   clockid;
114 	uint8   clksourceid;
115 	uint8   bm_controls;
116 	uint8   clockmultiplier;
117 } _PACKED usb_audio_clockmultiplier_descriptor;
118 
119 // Input Terminal Descriptor
120 // R1: Table 4-3 p.39 / R2: Table 4-9, page 53
121 typedef struct {
122 	uint8	length;
123 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
124 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_INPUT_TERMINAL
125 	uint8	terminal_id;
126 	uint16	terminal_type;
127 	uint8	assoc_terminal;
128 	union {
129 		struct {
130 			uint8	num_channels;
131 			uint8	channel_config;
132 			uint8	channel_names;
133 			uint8	terminal;
134 		} _PACKED r1;
135 
136 		struct {
137 			uint8	clock_source_id;
138 			uint8	num_channels;
139 			uint32	channel_config;
140 			uint8	channel_names;
141 			uint16	bm_controls;
142 			uint8	terminal;
143 		} _PACKED r2;
144 	};
145 } _PACKED usb_audio_input_terminal_descriptor;
146 
147 
148 // Output Terminal Descriptor
149 // R1: Table 4-4 p.40 / R2: Table 4-10, page 54
150 typedef struct {
151 	uint8	length;
152 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
153 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_OUTPUT_TERMINAL
154 	uint8	terminal_id;
155 	uint16	terminal_type;
156 	uint8	assoc_terminal;
157 	uint8 source_id;
158 	union {
159 		struct {
160 			uint8 terminal;
161 		} _PACKED r1;
162 
163 		struct {
164 			uint8 clock_source_id;
165 			uint16 bm_controls;
166 			uint8 terminal;
167 		} _PACKED r2;
168 	};
169 } _PACKED usb_audio_output_terminal_descriptor;
170 
171 
172 // pseudo-descriptor for a section corresponding to logical output channels
173 // used in mixer, processing and extension descriptions.
174 typedef struct {
175 	uint8	num_output_pins; 		// number of mixer output pins
176 	uint16	channel_config;		 	// location of logical channels
177 	uint8	channel_names;		 	// id of name string of first logical channel
178 } _PACKED usb_audio_output_channels_descriptor_r1;
179 
180 typedef struct {
181 	uint8	num_output_pins; 		// number of mixer output pins
182 	uint32	channel_config;		 	// location of logical channels
183 	uint8	channel_names;		 	// id of name string of first logical channel
184 } _PACKED usb_audio_output_channels_descriptor;
185 
186 
187 // Mixer Unit Descriptor
188 // R1: Table 4-5 p.41 / R2: Table 4-11, page 57
189 typedef struct {
190 	uint8	length;
191 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
192 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_MIXER_UNIT
193 	uint8	unit_id;
194 	uint8	num_input_pins;
195 	uint8	input_pins[1];
196 	// use usb_audio_output_channels_descriptor to parse the rest
197 } _PACKED usb_audio_mixer_unit_descriptor;
198 
199 
200 // Selector Unit Descriptor
201 // R1: Table 4-6 p.43 / R2: Table 4-12, page 58
202 typedef struct {
203 	uint8	length;
204 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
205 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_SELECTOR_UNIT
206 	uint8	unit_id;
207 	uint8	num_input_pins;
208 	uint8	input_pins[1];
209 	// uint8 selector_string;
210 } _PACKED usb_audio_selector_unit_descriptor;
211 
212 
213 // Feature Unit Descriptor
214 // R1: Table 4-7 p.43 / R2: Table 4-13, page 59
215 typedef struct {
216 	uint8	length;
217 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
218 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_FEATURE_UNIT
219 	uint8	unit_id;
220 	uint8	source_id;
221 	union {
222 		struct {
223 			uint8 control_size;
224 			uint8 bma_controls[1];
225 		//	uint8	feature_string;
226 		} _PACKED r1;
227 
228 		struct {
229 			uint32 bma_controls[1];
230 		} _PACKED r2;
231 	};
232 } _PACKED usb_audio_feature_unit_descriptor;
233 
234 
235 // Processing Unit Descriptor
236 // R1: Table 4-8 p.45 / R2: Table 4-20, page 66
237 typedef struct {
238 	uint8 length;
239 	uint8 descriptor_type;		// USB_AUDIO_CS_INTERFACE
240 	uint8 descriptor_subtype; 	// USB_AUDIO_AC_PROCESSING_UNIT
241 	uint8 unit_id;
242 	uint16 process_type;
243 	uint8 num_input_pins;
244 	uint8 input_pins[1];
245 	// use usb_audio_output_channels_descriptor to parse the rest
246 // TODO - the bmControl!!!!
247 } _PACKED usb_audio_processing_unit_descriptor;
248 
249 // Extension Unit Descriptor
250 // R1: Table 4-15, p. 56 / R2: Table 4-24, p.73
251 typedef struct {
252 	uint8	length;
253 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
254 	uint8	descriptor_subtype; 	// USB_AUDIO_AC_EXTENSION_UNIT
255 	uint8	unit_id;
256 	uint16	extension_code;
257 	uint8	num_input_pins;
258 	uint8	input_pins[1];
259 	// use usb_audio_output_channels_descriptor to parse the rest
260 } _PACKED usb_audio_extension_unit_descriptor;
261 
262 
263 enum { // Audio Class-Specific AudioStreaming Interface descriptor subtypes
264 	USB_AUDIO_AS_DESCRIPTOR_UNDEFINED	= 0x00,
265 	USB_AUDIO_AS_GENERAL				= 0x01,
266 	USB_AUDIO_AS_FORMAT_TYPE			= 0x02,
267 	USB_AUDIO_AS_FORMAT_SPECIFIC		= 0x03
268 };
269 
270 // Class Specific Audio Streaming Interface Descriptor
271 // R1: Table 4-19 p.60 / R2: Table 4-27 p.76
272 typedef struct {
273 	uint8	length;
274 	uint8	descriptor_type;		// USB_AUDIO_CS_INTERFACE
275 	uint8	descriptor_subtype; 	// USB_AUDIO_AS_GENERAL
276 	uint8	terminal_link;
277 	union {
278 		struct {
279 			uint8	delay;
280 			uint16	format_tag;
281 		} _PACKED r1;
282 
283 		struct {
284 			uint8	bm_controls;
285 			uint8	format_type;
286 			uint32	bm_formats;
287 			uint8	num_output_pins;
288 			uint32	channel_config;
289 			uint8	channel_names;
290 		} _PACKED r2;
291 	};
292 } _PACKED usb_audio_streaming_interface_descriptor;
293 
294 
295 // Class-specific As Isochronous Audio Data Endpoint descriptor
296 // R1: Table 4-21, p. 62 / R2: Table 4-34, page 87
297 typedef struct {
298 	uint8 length;
299 	uint8 descriptor_type;		// USB_AUDIO_CS_ENDPOINT
300 	uint8 descriptor_subtype; 	// USB_AUDIO_EP_GENERAL
301 	uint8 attributes;
302 	uint8 lock_delay_units;
303 	uint16 lock_delay;
304 } _PACKED usb_audio_streaming_endpoint_descriptor;
305 
306 
307 // Sampling Rate are represented as 3-byte integer
308 typedef struct {
309 	uint8	bytes[3];
310 } _PACKED usb_audio_sampling_freq;
311 
312 
313 // Format Type I/II/III Descriptors
314 // T1: Table 2-1, p.10 etc.
315 // T2: Table 2-2, p.15 etc.
316 typedef struct {
317 	uint8 length;
318 	uint8 descriptor_type;				// USB_AUDIO_CS_INTERFACE
319 	uint8 descriptor_subtype;			// USB_AUDIO_AS_FORMAT_TYPE
320 	uint8 format_type;					// USB_AUDIO_FORMAT_TYPE_I/II/III
321 	union {
322 		struct {
323 			uint8 nr_channels;
324 			uint8 subframe_size;
325 			uint8 bit_resolution;
326 			uint8 sam_freq_type;
327 			usb_audio_sampling_freq sam_freqs[1];
328 		} _PACKED typeI;
329 
330 		struct {
331 			uint16 max_bit_rate;
332 			uint16 samples_per_frame;
333 			uint8 sam_freq_type;
334 			usb_audio_sampling_freq sam_freqs[1];
335 		} _PACKED typeII;
336 
337 		struct {
338 			uint8 nr_channels;
339 			uint8 subframe_size;
340 			uint8 bit_resolution;
341 			uint8 sam_freq_type;
342 			usb_audio_sampling_freq sam_freqs[1];
343 		} _PACKED typeIII;
344 	};
345 } _PACKED usb_audio_format_descriptor;
346 
347 
348 enum { // Processing Unit Process Types  (for USB_AUDIO_AC_PROCESSING_UNIT)
349 	USB_AUDIO_UPDOWNMIX_PROCESS	= 0x01,
350 	USB_AUDIO_DOLBY_PROLOGIC_PROCESS,
351 	USB_AUDIO_3D_STEREO_EXTENDER_PROCESS,
352 	USB_AUDIO_REVERBERATION_PROCESS,
353 	USB_AUDIO_CHORUS_PROCESS,
354 	USB_AUDIO_DYN_RANGE_COMP_PROCESS
355 };
356 
357 enum { // Audio Class-Specific Request Codes
358 	USB_AUDIO_SET_CUR		= 0x01,
359 	USB_AUDIO_GET_CUR		= 0x81,
360 	USB_AUDIO_SET_MIN		= 0x02,
361 	USB_AUDIO_GET_MIN		= 0x82,
362 	USB_AUDIO_SET_MAX		= 0x03,
363 	USB_AUDIO_GET_MAX		= 0x83,
364 	USB_AUDIO_SET_RES		= 0x04,
365 	USB_AUDIO_GET_RES		= 0x84,
366 	USB_AUDIO_SET_MEM		= 0x05,
367 	USB_AUDIO_GET_MEM		= 0x85,
368 	USB_AUDIO_GET_STATUS	= 0xFF
369 };
370 
371 enum { // Terminal Control Selectors
372 	USB_AUDIO_COPY_PROTECT_CONTROL = 0x01
373 };
374 
375 // R2: A.17.5 Mixer Unit Control Selectors
376 enum {
377 	USB_AUDIO_MU_CONTROL_UNDEFINED		= 0x00,
378 	USB_AUDIO_MIXER_CONTROL				= 0x01,
379 	USB_AUDIO_CLUSTER_CONTROL			= 0x02,
380 	USB_AUDIO_UNDERFLOW_CONTROL			= 0x03,
381 	USB_AUDIO_OVERFLOW_CONTROL			= 0x04,
382 	USB_AUDIO_LATENCY_CONTROL			= 0x05
383 };
384 
385 /* A.10.2 Feature Unit Control Selectors */
386 enum {
387 	USB_AUDIO_AC_FU_CONTROL_UNDEFINED	= 0x00,
388 	USB_AUDIO_MUTE_CONTROL				= 0x01,
389 	USB_AUDIO_VOLUME_CONTROL			= 0x02,
390 	USB_AUDIO_BASS_CONTROL				= 0x03,
391 	USB_AUDIO_MID_CONTROL				= 0x04,
392 	USB_AUDIO_TREBLE_CONTROL			= 0x05,
393 	USB_AUDIO_GRAPHIC_EQUALIZER_CONTROL	= 0x06,
394 	USB_AUDIO_AUTOMATIC_GAIN_CONTROL	= 0x07,
395 	USB_AUDIO_DELAY_CONTROL				= 0x08,
396 	USB_AUDIO_BASS_BOOST_CONTROL		= 0x09,
397 	USB_AUDIO_LOUDNESS_CONTROL			= 0x0A
398 };
399 
400 /* A.10.3.1 Up/Down-mix Processing Unit Control Selectors */
401 #define USB_AUDIO_UD_CONTROL_UNDEFINED 0x00
402 #define USB_AUDIO_UD_ENABLED_CONTROL 0x01
403 #define USB_AUDIO_UD_MODE_SELECT_CONTROL 0x02
404 
405 /* A.10.3.2 Dolby Prologic(tm) Processing Unit Control Selectors */
406 #define USB_AUDIO_DP_CONTROL_UNDEFINED 0x00
407 #define USB_AUDIO_DP_ENABLE_CONTROL 0x01
408 #define USB_AUDIO_DP_MODE_SELECT_CONTROL 0x02
409 
410 /* A.10.3.3 3D Stereo Extender Processing Unit Control Selectors */
411 #define USB_AUDIO_3D_CONTROL_UNDEFINED 0x00
412 #define USB_AUDIO_3D_ENABLED_CONTROL 0x01
413 #define USB_AUDIO_3D_SPACIOUSNESS_CONTROL 0x03
414 
415 /* A.10.3.4 Reverberation Processing Unit Control Selectors */
416 #define USB_AUDIO_RV_CONTROL_UNDEFINED 0x00
417 #define USB_AUDIO_RV_ENABLE_CONTROL 0x01
418 #define USB_AUDIO_RV_REVERB_LEVEL_CONTROL 0x02
419 #define USB_AUDIO_RV_REVERB_TIME_CONTROL 0x03
420 #define USB_AUDIO_RV_REVERB_FEEDBACK_CONTROL 0x04
421 
422 /* A.10.3.5 Chorus Processing Unit Control Selectors */
423 #define USB_AUDIO_CH_CONTROL_UNDEFINED 0x00
424 #define USB_AUDIO_CH_ENABLE_CONTROL 0x01
425 #define USB_AUDIO_CHORUS_LEVEL_CONTROL 0x02
426 #define USB_AUDIO_CHORUS_RATE_CONTROL 0x03
427 #define USB_AUDIO_CHORUS_DETH_CONTROL 0x04
428 
429 /* A.10.3.6 Dynamic Range Compressor Processing Unit Control Selectors */
430 #define USB_AUDIO_DR_CONTROL_UNDEFINED 0x00
431 #define USB_AUDIO_DR_ENABLE_CONTROL 0x01
432 #define USB_AUDIO_COMPRESSION_RATE_CONTROL 0x02
433 #define USB_AUDIO_MAXAMPL_CONTROL 0x03
434 #define USB_AUDIO_THRESHOLD_CONTROL 0x04
435 #define USB_AUDIO_ATTACK_TIME 0x05
436 #define USB_AUDIO_RELEASE_TIME 0x06
437 
438 /* A.10.4 Extension Unit Control Selectors */
439 #define USB_AUDIO_XU_CONTROL_UNDEFINED 0x00
440 #define USB_AUDIO_XU_ENABLE_CONTROL 0x01
441 
442 /* A.10.5 Endpoint Control Selectors */
443 enum {
444 	USB_AUDIO_EP_CONTROL_UNDEFINED			= 0x00,
445 	USB_AUDIO_SAMPLING_FREQ_CONTROL			= 0x01,
446 	USB_AUDIO_PITCH_CONTROL					= 0x02
447 };
448 
449 /*
450 typedef struct
451 {
452 	uint8 length;
453 	uint8 type;
454 	uint8 subtype;
455 	uint8 unit_id;
456 	uint8 source_id;
457 	uint8 control_size;
458 	uint16 controls[0];
459 } _PACKED usb_audio_feature_unit_descriptor;
460 
461 typedef struct {
462 	uint8 length;
463 	uint8 type;
464 	uint8 subtype;
465 	uint8 format_type;
466 	uint8 num_channels;
467 	uint8 subframe_size;
468 	uint8 bit_resolution;
469 	uint8 sample_freq_type;
470 	uint8 sample_freq[3];	// [0] + [1] << 8 + [2] << 16
471 	//  if sample_freq_type != 1,
472 	// (sample_freq_type - 1) x uint8 sample_freq[3] follows...
473 } _PACKED usb_audio_format_type_descriptor;
474 */
475 // bitset for feature control bitmap
476 // Table 4-7, page 44, bmaControls field
477 enum {
478 	BMA_CTL_MUTE_R1			= 0X0001,
479 	BMA_CTL_VOLUME_R1		= 0X0002,
480 	BMA_CTL_BASS_R1			= 0X0004,
481 	BMA_CTL_MID_R1			= 0X0008,
482 	BMA_CTL_TREBLE_R1		= 0X0010,
483 	BMA_CTL_GRAPHEQ_R1		= 0X0020,
484 	BMA_CTL_AUTOGAIN_R1		= 0X0040,
485 	BMA_CTL_DELAY_R1		= 0X0080,
486 	BMA_CTL_BASSBOOST_R1	= 0X0100,
487 	BMA_CTL_LOUDNESS_R1		= 0X0200,
488 	// Release 2.0
489 	BMA_CTL_MUTE			= 0X00000003,
490 	BMA_CTL_VOLUME			= 0X0000000C,
491 	BMA_CTL_BASS			= 0X00000030,
492 	BMA_CTL_MID				= 0X000000C0,
493 	BMA_CTL_TREBLE			= 0X00000300,
494 	BMA_CTL_GRAPHEQ			= 0X00000C00,
495 	BMA_CTL_AUTOGAIN		= 0X00003000,
496 	BMA_CTL_DELAY			= 0X0000C000,
497 	BMA_CTL_BASSBOOST		= 0X00030000,
498 	BMA_CTL_LOUDNESS		= 0X000C0000,
499 	BMA_CTL_INPUTGAIN		= 0X00300000,
500 	BMA_CTL_INPUTGAINPAD	= 0X00C00000,
501 	BMA_CTL_PHASEINVERTER	= 0X03000000,
502 	BMA_CTL_UNDERFLOW		= 0X0C000000,
503 	BMA_CTL_OVERFLOW		= 0X30000000
504 };
505 
506 // Table A-4, page 30
507 // Format Type Codes
508 enum {
509 	USB_AUDIO_FORMAT_TYPE_UNDEFINED		= 0x00,
510 	USB_AUDIO_FORMAT_TYPE_I				= 0x01,
511 	USB_AUDIO_FORMAT_TYPE_II			= 0x02,
512 	USB_AUDIO_FORMAT_TYPE_III			= 0x03
513 };
514 
515 // Table A-1, page 29, wFormatTag
516 // Audio Data Format Type I codes
517 enum {
518 	USB_AUDIO_FORMAT_TYPE_I_UNDEFINED	= 0x0000,
519 	USB_AUDIO_FORMAT_PCM				= 0x0001,
520 	USB_AUDIO_FORMAT_PCM8				= 0x0002,
521 	USB_AUDIO_FORMAT_IEEE_FLOAT			= 0x0003,
522 	USB_AUDIO_FORMAT_ALAW				= 0x0004,
523 	USB_AUDIO_FORMAT_MULAW				= 0x0005
524 };
525 
526 
527 enum {
528 	// USB Terminal Types
529 	USB_AUDIO_UNDEFINED_USB_IO			= 0x100,
530 	USB_AUDIO_STREAMING_USB_IO			= 0x101,
531 	USB_AUDIO_VENDOR_USB_IO				= 0x1ff,
532 	// Input Terminal Types
533 	USB_AUDIO_UNDEFINED_IN				= 0x200,
534 	USB_AUDIO_MICROPHONE_IN				= 0x201,
535 	USB_AUDIO_DESKTOPMIC_IN				= 0x202,
536 	USB_AUDIO_PERSONALMIC_IN			= 0x203,
537 	USB_AUDIO_OMNI_MIC_IN				= 0x204,
538 	USB_AUDIO_MICS_ARRAY_IN				= 0x205,
539 	USB_AUDIO_PROC_MICS_ARRAY_IN		= 0x206,
540 	// Output Terminal Types
541 	USB_AUDIO_UNDEFINED_OUT				= 0x300,
542 	USB_AUDIO_SPEAKER_OUT				= 0x301,
543 	USB_AUDIO_HEAD_PHONES_OUT			= 0x302,
544 	USB_AUDIO_HMD_AUDIO_OUT				= 0x303,
545 	USB_AUDIO_DESKTOP_SPEAKER			= 0x304,
546 	USB_AUDIO_ROOM_SPEAKER				= 0x305,
547 	USB_AUDIO_COMM_SPEAKER				= 0x306,
548 	USB_AUDIO_LFE_SPEAKER				= 0x307,
549 	// Bi-directional Terminal Types
550 	USB_AUDIO_UNDEFINED_IO				= 0x400,
551 	USB_AUDIO_HANDSET_IO				= 0x401,
552 	USB_AUDIO_HEADSET_IO				= 0x402,
553 	USB_AUDIO_SPEAKER_PHONE_IO			= 0x403,
554 	USB_AUDIO_SPEAKER_PHONEES_IO		= 0x404,
555 	USB_AUDIO_SPEAKER_PHONEEC_IO		= 0x405,
556 	// Telephony Terminal Types
557 	USB_AUDIO_UNDEF_TELEPHONY_IO		= 0x500,
558 	USB_AUDIO_PHONE_LINE_IO				= 0x501,
559 	USB_AUDIO_TELEPHONE_IO				= 0x502,
560 	USB_AUDIO_DOWNLINE_PHONE_IO			= 0x503,
561 	// External Terminal Types
562 	USB_AUDIO_UNDEFINEDEXT_IO			= 0x600,
563 	USB_AUDIO_ANALOG_CONNECTOR_IO		= 0x601,
564 	USB_AUDIO_DAINTERFACE_IO			= 0x602,
565 	USB_AUDIO_LINE_CONNECTOR_IO			= 0x603,
566 	USB_AUDIO_LEGACY_CONNECTOR_IO		= 0x604,
567 	USB_AUDIO_SPDIF_INTERFACE_IO		= 0x605,
568 	USB_AUDIO_DA1394_STREAM_IO			= 0x606,
569 	USB_AUDIO_DV1394_STREAMSOUND_IO		= 0x607,
570 	USB_AUDIO_ADAT_LIGHTPIPE_IO			= 0x608,
571 	USB_AUDIO_TDIF_IO					= 0x609,
572 	USB_AUDIO_MADI_IO					= 0x60a,
573 	// Embedded Terminal Types
574 	USB_AUDIO_UNDEF_EMBEDDED_IO			= 0x700,
575 	USB_AUDIO_LC_NOISE_SOURCE_OUT		= 0x701,
576 	USB_AUDIO_EQUALIZATION_NOISE_OUT	= 0x702,
577 	USB_AUDIO_CDPLAYER_IN				= 0x703,
578 	USB_AUDIO_DAT_IO					= 0x704,
579 	USB_AUDIO_DCC_IO					= 0x705,
580 	USB_AUDIO_MINI_DISK_IO				= 0x706,
581 	USB_AUDIO_ANALOG_TAPE_IO			= 0x707,
582 	USB_AUDIO_PHONOGRAPH_IN				= 0x708,
583 	USB_AUDIO_VCR_AUDIO_IN				= 0x709,
584 	USB_AUDIO_VIDEO_DISC_AUDIO_IN		= 0x70a,
585 	USB_AUDIO_DVD_AUDIO_IN				= 0x70b,
586 	USB_AUDIO_TV_TUNER_AUDIO_IN			= 0x70c,
587 	USB_AUDIO_SAT_RECEIVER_AUDIO_IN		= 0x70d,
588 	USB_AUDIO_CABLE_TUNER_AUDIO_IN		= 0x70e,
589 	USB_AUDIO_DSS_AUDIO_IN				= 0x70f,
590 	USB_AUDIO_RADIO_RECEIVER_IN			= 0x710,
591 	USB_AUDIO_RADIO_TRANSMITTER_IN		= 0x711,
592 	USB_AUDIO_MULTI_TRACK_RECORDER_IO	= 0x712,
593 	USB_AUDIO_SYNTHESIZER_IO			= 0x713,
594 	USB_AUDIO_PIANO_IO					= 0x714,
595 	USB_AUDIO_GUITAR_IO					= 0x715,
596 	USB_AUDIO_DRUMS_IO					= 0x716,
597 	USB_AUDIO_INSTRUMENT_IO				= 0x717
598 };
599 
600 
601 #endif	// USB_AUDIO_H
602