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