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