1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 
27 #ifndef _SYS_USB_AUDIO_H
28 #define	_SYS_USB_AUDIO_H
29 
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /*
36  * macros from audio spec 1.0
37  *
38  * audio class-specific descriptor types (Appendix A.4)
39  */
40 #define	USB_AUDIO_CS_DEVICE		0x21
41 #define	USB_AUDIO_CS_CONFIGURATION	0x22
42 #define	USB_AUDIO_CS_STRING		0x23
43 #define	USB_AUDIO_CS_INTERFACE		0x24
44 #define	USB_AUDIO_CS_ENDPOINT		0x25
45 
46 /* audio class-specific AC Interface Descriptor Subtypes (A.5) */
47 #define	USB_AUDIO_HEADER		0x01
48 #define	USB_AUDIO_INPUT_TERMINAL	0x02
49 #define	USB_AUDIO_OUTPUT_TERMINAL	0x03
50 #define	USB_AUDIO_MIXER_UNIT		0x04
51 #define	USB_AUDIO_SELECTOR_UNIT		0x05
52 #define	USB_AUDIO_FEATURE_UNIT		0x06
53 #define	USB_AUDIO_PROCESSING_UNIT	0x07
54 #define	USB_AUDIO_EXTENSION_UNIT	0x08
55 
56 /* audio class-specific AS Interface descriptor Subtypes (A.6) */
57 #define	USB_AUDIO_AS_GENERAL		0x01
58 #define	USB_AUDIO_AS_FORMAT_TYPE	0x02
59 #define	USB_AUDIO_AS_FORMAT_SPECIFIC	0x03
60 
61 /* Processing Uniti Process Types (A.7) */
62 #define	USB_AUDIO_UP_DOWNMIX_PROCESS		0x01
63 #define	USB_AUDIO_DOLBY_PROLOGIC_PROCESS	0x02
64 #define	USB_AUDIO_3D_STEREO_EXTENDER_PROCESS	0x03
65 #define	USB_AUDIO_REVERBERATION_PROCESS		0x04
66 #define	USB_AUDIO_CHORUS_PROCESS		0x05
67 #define	USB_AUDIO_DYN_RANGE_COMP_PROCESS	0x06
68 
69 /* Audio Class-specific endpoint descriptor Subtypes (A.8) */
70 #define	USB_AUDIO_EP_GENERAL		0x07
71 
72 /* Audio Class-specific Request Codes */
73 #define	USB_AUDIO_SET_CUR		0x01
74 #define	USB_AUDIO_GET_CUR		0x81
75 #define	USB_AUDIO_SET_MIN		0x02
76 #define	USB_AUDIO_GET_MIN		0x82
77 #define	USB_AUDIO_SET_MAX		0x03
78 #define	USB_AUDIO_GET_MAX		0x83
79 #define	USB_AUDIO_SET_RES		0x04
80 #define	USB_AUDIO_GET_RES		0x84
81 #define	USB_AUDIO_SET_MEM		0x05
82 #define	USB_AUDIO_GET_MEM		0x85
83 #define	USB_AUDIO_GET_STAT		0xff
84 
85 /* Terminal Control Selectors (A.10.1) */
86 #define	USB_AUDIO_COPY_PROTECT_CONTROL	0x01
87 
88 /* Feature Unit Control Selectors (A.1.10.2) */
89 #define	USB_AUDIO_MUTE_CONTROL		0x01
90 #define	USB_AUDIO_VOLUME_CONTROL	0x02
91 #define	USB_AUDIO_BASS_CONTROL		0x03
92 #define	USB_AUDIO_MID_CONTROL		0x04
93 #define	USB_AUDIO_TREBLE_CONTROL	0x05
94 #define	USB_AUDIO_GRAPHIC_CONTROL	0x06
95 #define	USB_AUDIO_AUTOMATIC_GAIN_CONTROL 0x07
96 #define	USB_AUDIO_DELAY_CONTROL		0x08
97 #define	USB_AUDIO_BASS_BOOST_CONTROL	0x09
98 #define	USB_AUDIO_LOUDNESS_CONTROL	0x0A
99 
100 /* the spec defines volume control value of 0x8000 as silence */
101 #define	USB_AUDIO_VOLUME_SILENCE	0x8000
102 
103 /* Up/Down-mix Processing Unit Control Selectors (A.10.3.1) */
104 #define	USB_AUDIO_UD_ENABLE_CONTROL	0x01
105 #define	USB_AUDIO_UD_MODE_SELECT_CONTROL 0x02
106 
107 /* Dolby Prologic Processing Unit Control Selectors (A.10.3.2) */
108 #define	USB_AUDIO_DP_ENABLE_CONTROL	0x01
109 #define	USB_AUDIO_DP_MODE_SELECT_CONTROL 0x02
110 
111 /* Reverberation Processing Unit Control Selectors (A.10.3.3) */
112 #define	USB_AUDIO_RV_ENABLE_CONTROL	0x01
113 #define	USB_AUDIO_REVERB_LEVEL_CONTROL	0x02
114 #define	USB_AUDIO_REVERB_TIME_CONTROL	0x03
115 #define	USB_AUDIO_REVERB_FEEDBACK_CONTROL 0x04
116 
117 /* Chorus Processing Unit Control Selectors (A.10.3.5) */
118 #define	USB_AUDIO_CH_ENABLE_CONTROL	0x01
119 #define	USB_AUDIO_CHORUS_LEVEL_CONTROL	0x02
120 #define	USB_AUDIO_CHORUS_RATE_CONTROL	0x03
121 #define	USB_AUDIO_CHORUS_DEPTH_CONTROL	0x04
122 
123 /* Dynamic range compressor Processing Unit Control Selectors (A.10.3.6) */
124 #define	USB_AUDIO_DR_ENABLE_CONTROL	0x01
125 #define	USB_AUDIO_COMPRESSION_RATE_CONTROL 0x02
126 #define	USB_AUDIO_MAXAMPL_CONTROL	0x03
127 #define	USB_AUDIO_THRESHOLD_CONTROL	0x04
128 #define	USB_AUDIO_ATTACK_TIME		0x05
129 #define	USB_AUDIO_RELEASE_TIME		0x06
130 
131 /* Extension Unit Control Selectors (A.10.4) */
132 #define	USB_AUDIO_XU_ENABLE_CONTROL	0x01
133 
134 /* Endpoint Control Selectors (A.10.5) */
135 #define	USB_AUDIO_SAMPLING_FREQ_CONTROL	0x01
136 #define	USB_AUDIO_PITCH_CONTROL		0x02
137 
138 /* descriptors */
139 /* Class specific AC interface header descriptor (4.3.2) */
140 typedef struct usb_audio_cs_if_descr {
141 	uint8_t	bLength;	/* size */
142 	uint8_t	bDescriptorType; /* CS_INTERFACE */
143 	uint8_t bDescriptorSubType; /* HEADER */
144 	uint16_t bcdADC;	/* release # */
145 	uint16_t wTotalLength;	/* the whole wad */
146 	uint8_t blnCollection;	/* # interfaces */
147 	uint8_t baInterfaceNr[1]; /* interface # */
148 } usb_audio_cs_if_descr_t;
149 
150 #define	CS_AC_IF_HEADER_FORMAT "cccsscc"
151 #define	CS_AC_IF_HEADER_SIZE 9
152 
153 /* input terminal descriptor (4.3.2.1) */
154 typedef struct usb_audio_input_term_descr {
155 	uint8_t	bLength;	/* size */
156 	uint8_t	bDescriptorType; /* CS_INTERFACE */
157 	uint8_t bDescriptorSubType; /* INPUT_TERMINAL */
158 	uint8_t bTerminalID;	/* unique identifier */
159 	uint16_t wTerminalType;	/* type of terminal */
160 	uint8_t bAssocTerminal; /* identifier */
161 	uint8_t bNrChannels;	/* # channels */
162 	uint16_t wChannelConfig; /* logical channel loc */
163 	uint8_t iChannelNames;	/* string index */
164 	uint8_t iTerminal;	/* terminal string index */
165 } usb_audio_input_term_descr_t;
166 
167 #define	CS_AC_INPUT_TERM_FORMAT "ccccsccscc"
168 #define	CS_AC_INPUT_TERM_SIZE 12
169 
170 /* output terminal descriptor (4.3.2.2) */
171 typedef struct usb_audio_output_term_descr {
172 	uint8_t	bLength;	/* size */
173 	uint8_t	bDescriptorType; /* CS_INTERFACE */
174 	uint8_t bDescriptorSubType; /* OUTPUT_TERMINAL */
175 	uint8_t bTerminalID;	/* unique identifier */
176 	uint16_t wTerminalType;	/* type of terminal */
177 	uint8_t bAssocTerminal; /* identifier */
178 	uint8_t bSourceID;	/* identifier */
179 	uint8_t iTerminal;	/* terminal string index */
180 } usb_audio_output_term_descr_t;
181 
182 #define	CS_AC_OUTPUT_TERM_FORMAT "ccccsccc"
183 #define	CS_AC_OUTPUT_TERM_SIZE 9
184 
185 /*
186  * mixer unit descriptor (4.3.2.3)
187  * this is awkward descriptors because of the variable size array in
188  * the middle (baSourceID).
189  */
190 typedef struct usb_audio_mixer_unit_descr1 {
191 	uint8_t	bLength;	/* size */
192 	uint8_t	bDescriptorType; /* CS_INTERFACE */
193 	uint8_t bDescriptorSubType; /* MIXER_UNIT */
194 	uint8_t bUnitID;	/* identifier */
195 	uint8_t bNrInPins;	/* # input pins */
196 	uint8_t baSourceID[1];	/* idenfifiers */
197 } usb_audio_mixer_unit_descr1_t;
198 
199 #define	CS_AC_MIXER_UNIT_DESCR1_FORMAT "cccccc"
200 #define	CS_AC_MIXER_UNIT_DESCR1_SIZE 6
201 
202 typedef struct usb_audio_mixer_unit_descr2 {
203 	uint8_t bNrChannels;	/* # channels */
204 	uint16_t wChannelConfig; /* location of channels */
205 	uint8_t iChannelNames;	/* string index */
206 	uint8_t	bmControls[1];	/* bitmap prog. ctlrs */
207 } usb_audio_mixer_unit_descr2_t;
208 
209 typedef struct usb_audio_mixer_unit_descr3 {
210 	uint8_t iMixer;	/* string index */
211 } usb_audio_mixer_unit_descr3_t;
212 
213 /* selector unit descriptor (4.3.2.4) */
214 typedef struct usb_audio_selector_unit_descr1 {
215 	uint8_t	bLength;	/* size */
216 	uint8_t	bDescriptorType; /* CS_INTERFACE */
217 	uint8_t bDescriptorSubType; /* SELECTOR_UNIT */
218 	uint8_t bUnitID;	/* identifier */
219 	uint8_t bNrInPins;	/* input pins on the unit */
220 	uint8_t baSourceID[1];	/* ID of pins */
221 } usb_audio_selector_unit_descr1_t;
222 
223 #define	CS_AC_SELECTOR_UNIT_DESCR1_FORMAT "cccccc"
224 #define	CS_AC_SELECTOR_UNIT_DESCR1_SIZE 6
225 
226 typedef struct usb_audio_selector_unit_descr2 {
227 	uint8_t iSelector[1];	/* string index */
228 } usb_audio_selector_unit_descr2_t;
229 
230 /* feature unit descriptor (4.3.2.5) */
231 typedef struct usb_audio_feature_unit_descr1 {
232 	uint8_t	bLength;	/* size */
233 	uint8_t	bDescriptorType; /* CS_INTERFACE */
234 	uint8_t bDescriptorSubType; /* FEATURE_UNIT */
235 	uint8_t bUnitID;	/* identifier */
236 	uint8_t bSourceID;	/* identifier */
237 	uint8_t bControlSize;	/* size of bmaControls */
238 	uint8_t bmaControls[1];	/* bitmap of features */
239 } usb_audio_feature_unit_descr1_t;
240 
241 #define	CS_AC_FEATURE_UNIT_FORMAT	"ccccccc"
242 #define	CS_AC_FEATURE_UNIT_SIZE		7
243 
244 typedef struct usb_audio_feature_unit_descr2 {
245 	uint8_t iFeature;	/* string index */
246 } usb_audio_feature_unit_descr2_t;
247 
248 /* processing unit descriptor (4.3.2.6) */
249 typedef struct usb_audio_processing_unit_descr1 {
250 	uint8_t	bLength;	/* size */
251 	uint8_t	bDescriptorType; /* CS_INTERFACE */
252 	uint8_t bDescriptorSubType; /* PROCESSING_UNIT */
253 	uint8_t bUnitID;	/* identifier */
254 	uint8_t	wProcessType;	/* type of processing */
255 	uint8_t bNrInPins;	/* input pins on the unit */
256 	uint8_t baSourceID[1];	/* ID of pins */
257 } usb_audio_processing_unit_descr1_t;
258 
259 #define	CS_AC_PROCESSING_UNIT_DESCR1_FORMAT	"ccccccc"
260 #define	CS_AC_PROCESSING_UNIT_DESCR1_SIZE	7
261 
262 typedef struct usb_audio_processing_unit_descr2 {
263 	uint8_t	bNrChannels;	/* # log. output channels */
264 	uint16_t wChannelConfig; /* spatial location */
265 	uint8_t iChannelnames;	/* index to name */
266 	uint8_t bControlSize;	/* size in bytes */
267 	uint8_t bmControls[1];	/* control bits */
268 } usb_audio_processing_unit_descr2_t;
269 
270 typedef struct usb_audio_processing_unit_descr3 {
271 	uint8_t iProcessing;	/* index to string descr */
272 	uint8_t Process_specific[1];
273 } usb_audio_processing_unit_descr3_t;
274 
275 /* extension unit descriptor (4.3.2.7) */
276 typedef struct usb_audio_extension_unit_descr1 {
277 	uint8_t	bLength;	/* size */
278 	uint8_t	bDescriptorType; /* CS_INTERFACE */
279 	uint8_t bDescriptorSubType; /* PROCESSING_UNIT */
280 	uint8_t wExtensionCode; /* vendor spec. */
281 	uint8_t bUnitID;	/* identifier */
282 	uint8_t bNrInPins;	/* input pins on the unit */
283 	uint8_t baSourceID[1];	/* ID of pins */
284 } usb_audio_extension_unit_descr1_t;
285 
286 #define	CS_AC_EXTENSION_UNIT_DESCR1_FORMAT	"ccccccc"
287 #define	CS_AC_EXTENSION_UNIT_DESCR1_SIZE	7
288 
289 typedef struct usb_audio_extension_unit_descr2 {
290 	uint8_t	bNrChannels;	/* # log. output channels */
291 	uint16_t wChannelConfig; /* spatial location */
292 	uint8_t iChannelnames;	/* index to name */
293 	uint8_t bControlSize;	/* size in bytes */
294 	uint8_t bmControls[1];	/* control bits */
295 } usb_audio_extension_unit_descr2_t;
296 
297 typedef struct usb_audio_extension_unit_descr3 {
298 	uint8_t iExtension;	/* index to string descr */
299 } usb_audio_extension_unit_descr3_t;
300 
301 
302 
303 /* associated interface descriptor (4.3.2.8) */
304 typedef struct usb_audio_associated_if_descr {
305 	uint8_t	blength;	/* size */
306 	uint8_t	bDescriptorType; /* CS_INTERFACE */
307 	uint8_t bDescriptorSubType; /* ASSOC Interface */
308 	uint8_t bInterfaceNr;	/* interface number */
309 } usb_audio_associated_if_descr_t;
310 
311 
312 /*
313  * class specific AS interface descriptor (4.5.2)
314  */
315 typedef struct usb_audio_as_if_descr {
316 	uint8_t	blength;	/* size */
317 	uint8_t	bDescriptorType; /* CS_INTERFACE */
318 	uint8_t bDescriptorSubType; /* AS_GENERAL */
319 	uint8_t bTerminalLink;	/* identifier */
320 	uint8_t bDelay;		/* delay in data path */
321 	uint16_t wFormatTag;	/* data format */
322 } usb_audio_as_if_descr_t;
323 
324 #define	AS_IF_DESCR_FORMAT	"cccccs"
325 #define	AS_IF_DESCR_SIZE	7
326 
327 
328 /* class specific AS isochronous audio data ep descr (4.6.1.2) */
329 typedef struct usb_audio_as_isoc_ep_descr {
330 	uint8_t	blength;	/* size */
331 	uint8_t	bDescriptorType; /* CS_ENDPOINT */
332 	uint8_t bDescriptorSubType; /* EP_GENERAL */
333 	uint8_t bmAttributes;	/* bitmap of attributes */
334 	uint8_t bLockDelayUnits; /* type of units */
335 	uint16_t wLockDelay;	/* lock of internal clock */
336 } usb_audio_as_isoc_ep_descr_t;
337 
338 #define	AS_ISOC_EP_DESCR_FORMAT "5cs"
339 #define	AS_ISOC_EP_DESCR_SIZE 7
340 
341 /*
342  * data format descriptor, no need for parse format since
343  * all fields are chars
344  */
345 typedef struct usb_audio_type1_format_descr {
346 	uint8_t	blength;	/* size */
347 	uint8_t	bDescriptorType; /* CS_INTERFACE */
348 	uint8_t bDescriptorSubType; /* FORMAT_TYPE */
349 	uint8_t	bFormatType;	/* FORMAT_TYPE_1 */
350 	uint8_t bNrChannels;	/* #phys channels */
351 	uint8_t bSubFrameSize;	/* bytes per frame */
352 	uint8_t bBitResolution;	/* bits in subframe */
353 	uint8_t bSamFreqType;	/* sampling freq type */
354 	uint8_t bSamFreqs[6];	/* sampling freqs */
355 } usb_audio_type1_format_descr_t;
356 
357 #define	AUDIO_TYPE1_FORMAT_FORMAT "10c"
358 #define	AUDIO_TYPE1_FORMAT_SIZE	10
359 
360 /* audio data format codes */
361 #define	USB_AUDIO_FORMAT_TYPE1_PCM		0x0001
362 #define	USB_AUDIO_FORMAT_TYPE1_PCM8		0x0002
363 #define	USB_AUDIO_FORMAT_TYPE1_IEEE_FLOAT	0x0003
364 #define	USB_AUDIO_FORMAT_TYPE1_ALAW		0x0004
365 #define	USB_AUDIO_FORMAT_TYPE1_MULAW		0x0005
366 
367 #define	USB_AUDIO_FORMAT_TYPE2_MPEG		0x1001
368 #define	USB_AUDIO_FORMAT_TYPE2_AC		0x1002
369 
370 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_AC_3	0x2001
371 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG1_L1	0x2002
372 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG1_L2	0x2003
373 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG2_NOEXT 0x2003
374 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG2_EXT 0x2004
375 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG2_L1_LS 0x2005
376 #define	USB_AUDIO_FORMAT_TYPE3_IEC1937_MPEG2_L2_LS 0x2006
377 
378 #define	USB_AUDIO_FORMAT_TYPE_1			0x01
379 #define	USB_AUDIO_FORMAT_TYPE_2			0x02
380 #define	USB_AUDIO_FORMAT_TYPE_3			0x03
381 
382 /* format specific control selectors */
383 #define	USB_AUDIO_MP_DUAL_CHANNEL_CONTROL	0x01
384 #define	USB_AUDIO_MP_SECOND_STEREO_CONTROL	0x02
385 #define	USB_AUDIO_MP_MULTILINGUAL		0x03
386 #define	USB_AUDIO_MP_DYN_RANGE_CONTROL		0x04
387 #define	USB_AUDIO_MP_SCALING_CONTROL		0x05
388 #define	USB_AUDIO_MP_HILO_SCALING_CONTROL	0x06
389 
390 #define	USB_AUDIO_AC_MODE_CONTROL		0x01
391 #define	USB_AUDIO_AC_DYN_RANGE_CONTROL		0x02
392 #define	USB_AUDIO_AC_SCALING_CONTROL		0x03
393 #define	USB_AUDIO_AC_HILO_SCALING_CONTROL	0x04
394 
395 /* From USB Device Class Definition for Terminal Types */
396 /* USB Terminal Types (2.1) */
397 #define	USB_AUDIO_TERM_TYPE_STREAMING		0x0101
398 #define	USB_AUDIO_TERM_TYPE_VS			0x01ff
399 
400 /* Input term types (2.2) */
401 #define	USB_AUDIO_TERM_TYPE_MICROPHONE		0x0201
402 #define	USB_AUDIO_TERM_TYPE_DT_MICROPHONE	0x0202
403 #define	USB_AUDIO_TERM_TYPE_PERS_MICROPHONE	0x0203
404 #define	USB_AUDIO_TERM_TYPE_OMNI_DIR_MICROPHONE	0x0204
405 #define	USB_AUDIO_TERM_TYPE_MICROPHONE_ARRAY	0x0205
406 #define	USB_AUDIO_TERM_TYPE_PROCESSING_MIC_ARRAY 0x0206
407 
408 /* output term types (2.3) */
409 #define	USB_AUDIO_TERM_TYPE_SPEAKER		0x0301
410 #define	USB_AUDIO_TERM_TYPE_HEADPHONES		0x0302
411 #define	USB_AUDIO_TERM_TYPE_DISPLAY_AUDIO	0x0303
412 #define	USB_AUDIO_TERM_TYPE_DT_SPEAKER		0x0304
413 #define	USB_AUDIO_TERM_TYPE_ROOM_SPEAKER	0x0305
414 #define	USB_AUDIO_TERM_TYPE_COMM_SPEAKER	0x0306
415 #define	USB_AUDIO_TERM_TYPE_LF_EFFECTS_SPEAKER	0x0307
416 
417 /* bi-directional terminal types (2.4) */
418 #define	USB_AUDIO_TERM_TYPE_HANDSET		0x0401
419 #define	USB_AUDIO_TERM_TYPE_HEADSET		0x0402
420 #define	USB_AUDIO_TERM_TYPE_SPEAKERPHONE	0x0403
421 #define	USB_AUDIO_TERM_TYPE_ECHO_SUPP_SPEAKERPHONE 0x0404
422 #define	USB_AUDIO_TERM_TYPE_ECHO_CANCEL_SPEAKERPHONE 0x0405
423 
424 /* telephony terminal types (2.5) */
425 #define	USB_AUDIO_TERM_TYPE_PHONE_LINE		0x0501
426 #define	USB_AUDIO_TERM_TYPE_TELEPHONE		0x0502
427 #define	USB_AUDIO_TERM_TYPE_DOWN_LINE_PHONE	0x0503
428 
429 /* external terminal types (2.6) */
430 #define	USB_AUDIO_TERM_TYPE_ANALOG_CONNECTOR	0x0601
431 #define	USB_AUDIO_TERM_TYPE_DIGITAL_AUDIO_IF	0x0602
432 #define	USB_AUDIO_TERM_TYPE_LINE_CONNECTOR	0x0603
433 #define	USB_AUDIO_TERM_TYPE_LEGACY_AUDIO_CONNECTOR 0x0604
434 #define	USB_AUDIO_TERM_TYPE_SPDIF_IF		0x0605
435 #define	USB_AUDIO_TERM_TYPE_1394_DA_STREAM	0x0606
436 #define	USB_AUDIO_TERM_TYPE_1394_DV_STREAM_SNDTRCK 0x0607
437 
438 /* embedded function term types (2.7) */
439 #define	USB_AUDIO_TERM_TYPE_LVL_CAL_NOISE_SRC	0x0701
440 #define	USB_AUDIO_TERM_TYPE_EQUAL_NOISE		0x0702
441 #define	USB_AUDIO_TERM_TYPE_CD_PLAYER		0x0703
442 #define	USB_AUDIO_TERM_TYPE_DAT			0x0704
443 #define	USB_AUDIO_TERM_TYPE_DCC			0x0705
444 #define	USB_AUDIO_TERM_TYPE_MINIDISK		0x0706
445 #define	USB_AUDIO_TERM_TYPE_ANALOG_TAPE		0x0707
446 #define	USB_AUDIO_TERM_TYPE_PHONOGRAPH		0x0708
447 #define	USB_AUDIO_TERM_TYPE_VCR_AUDIO		0x0709
448 #define	USB_AUDIO_TERM_TYPE_VIDEO_DISK_AUDIO	0x070A
449 #define	USB_AUDIO_TERM_TYPE_DVD_AUDIO		0x070B
450 #define	USB_AUDIO_TERM_TYPE_TV_TUNER_AUDIO	0x070C
451 #define	USB_AUDIO_TERM_TYPE_SATELLITE_RCV_AUDIO	0x070D
452 #define	USB_AUDIO_TERM_TYPE_CABLE_TUNER_AUDIO	0x070E
453 #define	USB_AUDIO_TERM_TYPE_CABLE_DSS_AUDIO	0x070F
454 #define	USB_AUDIO_TERM_TYPE_RADIO_RECEIVER	0x0710
455 #define	USB_AUDIO_TERM_TYPE_RADIO_TRANSMITTER	0x0711
456 #define	USB_AUDIO_TERM_TYPE_MULTI_TRACK_RECORDER 0x0712
457 #define	USB_AUDIO_TERM_TYPE_SYNTHESIZER		0x0713
458 
459 #define	PRINT_MASK_ATTA		0x00000001
460 #define	PRINT_MASK_CLOSE	0x00000002
461 #define	PRINT_MASK_OPEN		0x00000004
462 #define	PRINT_MASK_EVENTS	0x00000008
463 #define	PRINT_MASK_PM		0x00000010
464 #define	PRINT_MASK_CB		0x00000020
465 #define	PRINT_MASK_ALL		0xFFFFFFFF
466 
467 #define	USB_AUDIO_MIN_PKTSZ	0
468 #define	USB_AUDIO_MAX_PKTSZ	(4 * 1024)
469 
470 #define	USB_AUDIO_MUTE_ON	1
471 #define	USB_AUDIO_MUTE_OFF	0
472 
473 #define	USB_AUDIO_PRECISION_8	8
474 #define	USB_AUDIO_PRECISION_16	16
475 
476 #define	USB_AUDIO_PLAY		0x0001
477 #define	USB_AUDIO_RECORD	0x0002
478 
479 #ifdef __cplusplus
480 }
481 #endif
482 
483 #endif	/* _SYS_USB_AUDIO_H */
484