initial commit
[armstart-ibdap] / inc / usbd / usbd_audio.h
1 /***********************************************************************\r
2 * $Id:: mw_usbd_audio.h 165 2011-04-14 17:41:11Z usb10131                     $\r
3 *\r
4 * Project: USB device ROM Stack\r
5 *\r
6 * Description:\r
7 *     USB Audio Device Class Definitions.\r
8 *\r
9 ***********************************************************************\r
10 *   Copyright(C) 2011, NXP Semiconductor\r
11 *   All rights reserved.\r
12 *\r
13 * Software that is described herein is for illustrative purposes only\r
14 * which provides customers with programming information regarding the\r
15 * products. This software is supplied "AS IS" without any warranties.\r
16 * NXP Semiconductors assumes no responsibility or liability for the\r
17 * use of the software, conveys no license or title under any patent,\r
18 * copyright, or mask work right to the product. NXP Semiconductors\r
19 * reserves the right to make changes in the software without\r
20 * notification. NXP Semiconductors also make no representation or\r
21 * warranty that such application will be suitable for the specified\r
22 * use without further testing or modification.\r
23 **********************************************************************/\r
24 #ifndef __AUDIO_H__\r
25 #define __AUDIO_H__\r
26 \r
27 \r
28 /* Audio Interface Subclass Codes */\r
29 #define AUDIO_SUBCLASS_UNDEFINED                0x00\r
30 #define AUDIO_SUBCLASS_AUDIOCONTROL             0x01\r
31 #define AUDIO_SUBCLASS_AUDIOSTREAMING           0x02\r
32 #define AUDIO_SUBCLASS_MIDISTREAMING            0x03\r
33 \r
34 /* Audio Interface Protocol Codes */\r
35 #define AUDIO_PROTOCOL_UNDEFINED                0x00\r
36 \r
37 \r
38 /* Audio Descriptor Types */\r
39 #define AUDIO_UNDEFINED_DESCRIPTOR_TYPE         0x20\r
40 #define AUDIO_DEVICE_DESCRIPTOR_TYPE            0x21\r
41 #define AUDIO_CONFIGURATION_DESCRIPTOR_TYPE     0x22\r
42 #define AUDIO_STRING_DESCRIPTOR_TYPE            0x23\r
43 #define AUDIO_INTERFACE_DESCRIPTOR_TYPE         0x24\r
44 #define AUDIO_ENDPOINT_DESCRIPTOR_TYPE          0x25\r
45 \r
46 \r
47 /* Audio Control Interface Descriptor Subtypes */\r
48 #define AUDIO_CONTROL_UNDEFINED                 0x00\r
49 #define AUDIO_CONTROL_HEADER                    0x01\r
50 #define AUDIO_CONTROL_INPUT_TERMINAL            0x02\r
51 #define AUDIO_CONTROL_OUTPUT_TERMINAL           0x03\r
52 #define AUDIO_CONTROL_MIXER_UNIT                0x04\r
53 #define AUDIO_CONTROL_SELECTOR_UNIT             0x05\r
54 #define AUDIO_CONTROL_FEATURE_UNIT              0x06\r
55 #define AUDIO_CONTROL_PROCESSING_UNIT           0x07\r
56 #define AUDIO_CONTROL_EXTENSION_UNIT            0x08\r
57 \r
58 /* Audio Streaming Interface Descriptor Subtypes */\r
59 #define AUDIO_STREAMING_UNDEFINED               0x00\r
60 #define AUDIO_STREAMING_GENERAL                 0x01\r
61 #define AUDIO_STREAMING_FORMAT_TYPE             0x02\r
62 #define AUDIO_STREAMING_FORMAT_SPECIFIC         0x03\r
63 \r
64 /* Audio Endpoint Descriptor Subtypes */\r
65 #define AUDIO_ENDPOINT_UNDEFINED                0x00\r
66 #define AUDIO_ENDPOINT_GENERAL                  0x01\r
67 \r
68 \r
69 /* Audio Descriptor Sizes */\r
70 #define AUDIO_CONTROL_INTERFACE_DESC_SZ(n)      0x08+n\r
71 #define AUDIO_STREAMING_INTERFACE_DESC_SIZE     0x07\r
72 #define AUDIO_INPUT_TERMINAL_DESC_SIZE          0x0C\r
73 #define AUDIO_OUTPUT_TERMINAL_DESC_SIZE         0x09\r
74 #define AUDIO_MIXER_UNIT_DESC_SZ(p,n)           0x0A+p+n\r
75 #define AUDIO_SELECTOR_UNIT_DESC_SZ(p)          0x06+p\r
76 #define AUDIO_FEATURE_UNIT_DESC_SZ(ch,n)        0x07+(ch+1)*n\r
77 #define AUDIO_PROCESSING_UNIT_DESC_SZ(p,n,x)    0x0D+p+n+x\r
78 #define AUDIO_EXTENSION_UNIT_DESC_SZ(p,n)       0x0D+p+n\r
79 #define AUDIO_STANDARD_ENDPOINT_DESC_SIZE       0x09\r
80 #define AUDIO_STREAMING_ENDPOINT_DESC_SIZE      0x07\r
81 \r
82 \r
83 /* Audio Processing Unit Process Types */\r
84 #define AUDIO_UNDEFINED_PROCESS                 0x00\r
85 #define AUDIO_UP_DOWN_MIX_PROCESS               0x01\r
86 #define AUDIO_DOLBY_PROLOGIC_PROCESS            0x02\r
87 #define AUDIO_3D_STEREO_PROCESS                 0x03\r
88 #define AUDIO_REVERBERATION_PROCESS             0x04\r
89 #define AUDIO_CHORUS_PROCESS                    0x05\r
90 #define AUDIO_DYN_RANGE_COMP_PROCESS            0x06\r
91 \r
92 \r
93 /* Audio Request Codes */\r
94 #define AUDIO_REQUEST_UNDEFINED                 0x00\r
95 #define AUDIO_REQUEST_SET_CUR                   0x01\r
96 #define AUDIO_REQUEST_GET_CUR                   0x81\r
97 #define AUDIO_REQUEST_SET_MIN                   0x02\r
98 #define AUDIO_REQUEST_GET_MIN                   0x82\r
99 #define AUDIO_REQUEST_SET_MAX                   0x03\r
100 #define AUDIO_REQUEST_GET_MAX                   0x83\r
101 #define AUDIO_REQUEST_SET_RES                   0x04\r
102 #define AUDIO_REQUEST_GET_RES                   0x84\r
103 #define AUDIO_REQUEST_SET_MEM                   0x05\r
104 #define AUDIO_REQUEST_GET_MEM                   0x85\r
105 #define AUDIO_REQUEST_GET_STAT                  0xFF\r
106 \r
107 \r
108 /* Audio Control Selector Codes */\r
109 #define AUDIO_CONTROL_UNDEFINED                 0x00    /* Common Selector */\r
110 \r
111 /*  Terminal Control Selectors */\r
112 #define AUDIO_COPY_PROTECT_CONTROL              0x01\r
113 \r
114 /*  Feature Unit Control Selectors */\r
115 #define AUDIO_MUTE_CONTROL                      0x01\r
116 #define AUDIO_VOLUME_CONTROL                    0x02\r
117 #define AUDIO_BASS_CONTROL                      0x03\r
118 #define AUDIO_MID_CONTROL                       0x04\r
119 #define AUDIO_TREBLE_CONTROL                    0x05\r
120 #define AUDIO_GRAPHIC_EQUALIZER_CONTROL         0x06\r
121 #define AUDIO_AUTOMATIC_GAIN_CONTROL            0x07\r
122 #define AUDIO_DELAY_CONTROL                     0x08\r
123 #define AUDIO_BASS_BOOST_CONTROL                0x09\r
124 #define AUDIO_LOUDNESS_CONTROL                  0x0A\r
125 \r
126 /*  Processing Unit Control Selectors: */\r
127 #define AUDIO_ENABLE_CONTROL                    0x01    /* Common Selector */\r
128 #define AUDIO_MODE_SELECT_CONTROL               0x02    /* Common Selector */\r
129 \r
130 /*  - Up/Down-mix Control Selectors */\r
131 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
132 /*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\r
133 \r
134 /*  - Dolby Prologic Control Selectors */\r
135 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
136 /*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\r
137 \r
138 /*  - 3D Stereo Extender Control Selectors */\r
139 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
140 #define AUDIO_SPACIOUSNESS_CONTROL              0x02\r
141 \r
142 /*  - Reverberation Control Selectors */\r
143 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
144 #define AUDIO_REVERB_LEVEL_CONTROL              0x02\r
145 #define AUDIO_REVERB_TIME_CONTROL               0x03\r
146 #define AUDIO_REVERB_FEEDBACK_CONTROL           0x04\r
147 \r
148 /*  - Chorus Control Selectors */\r
149 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
150 #define AUDIO_CHORUS_LEVEL_CONTROL              0x02\r
151 #define AUDIO_SHORUS_RATE_CONTROL               0x03\r
152 #define AUDIO_CHORUS_DEPTH_CONTROL              0x04\r
153 \r
154 /*  - Dynamic Range Compressor Control Selectors */\r
155 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
156 #define AUDIO_COMPRESSION_RATE_CONTROL          0x02\r
157 #define AUDIO_MAX_AMPL_CONTROL                  0x03\r
158 #define AUDIO_THRESHOLD_CONTROL                 0x04\r
159 #define AUDIO_ATTACK_TIME_CONTROL               0x05\r
160 #define AUDIO_RELEASE_TIME_CONTROL              0x06\r
161 \r
162 /*  Extension Unit Control Selectors */\r
163 /*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\r
164 \r
165 /*  Endpoint Control Selectors */\r
166 #define AUDIO_SAMPLING_FREQ_CONTROL             0x01\r
167 #define AUDIO_PITCH_CONTROL                     0x02\r
168 \r
169 \r
170 /* Audio Format Specific Control Selectors */\r
171 \r
172 /*  MPEG Control Selectors */\r
173 #define AUDIO_MPEG_CONTROL_UNDEFINED            0x00\r
174 #define AUDIO_MPEG_DUAL_CHANNEL_CONTROL         0x01\r
175 #define AUDIO_MPEG_SECOND_STEREO_CONTROL        0x02\r
176 #define AUDIO_MPEG_MULTILINGUAL_CONTROL         0x03\r
177 #define AUDIO_MPEG_DYN_RANGE_CONTROL            0x04\r
178 #define AUDIO_MPEG_SCALING_CONTROL              0x05\r
179 #define AUDIO_MPEG_HILO_SCALING_CONTROL         0x06\r
180 \r
181 /*  AC-3 Control Selectors */\r
182 #define AUDIO_AC3_CONTROL_UNDEFINED             0x00\r
183 #define AUDIO_AC3_MODE_CONTROL                  0x01\r
184 #define AUDIO_AC3_DYN_RANGE_CONTROL             0x02\r
185 #define AUDIO_AC3_SCALING_CONTROL               0x03\r
186 #define AUDIO_AC3_HILO_SCALING_CONTROL          0x04\r
187 \r
188 \r
189 /* Audio Format Types */\r
190 #define AUDIO_FORMAT_TYPE_UNDEFINED             0x00\r
191 #define AUDIO_FORMAT_TYPE_I                     0x01\r
192 #define AUDIO_FORMAT_TYPE_II                    0x02\r
193 #define AUDIO_FORMAT_TYPE_III                   0x03\r
194 \r
195 \r
196 /* Audio Format Type Descriptor Sizes */\r
197 #define AUDIO_FORMAT_TYPE_I_DESC_SZ(n)          0x08+(n*3)\r
198 #define AUDIO_FORMAT_TYPE_II_DESC_SZ(n)         0x09+(n*3)\r
199 #define AUDIO_FORMAT_TYPE_III_DESC_SZ(n)        0x08+(n*3)\r
200 #define AUDIO_FORMAT_MPEG_DESC_SIZE             0x09\r
201 #define AUDIO_FORMAT_AC3_DESC_SIZE              0x0A\r
202 \r
203 \r
204 /* Audio Data Format Codes */\r
205 \r
206 /*  Audio Data Format Type I Codes */\r
207 #define AUDIO_FORMAT_TYPE_I_UNDEFINED           0x0000\r
208 #define AUDIO_FORMAT_PCM                        0x0001\r
209 #define AUDIO_FORMAT_PCM8                       0x0002\r
210 #define AUDIO_FORMAT_IEEE_FLOAT                 0x0003\r
211 #define AUDIO_FORMAT_ALAW                       0x0004\r
212 #define AUDIO_FORMAT_MULAW                      0x0005\r
213 \r
214 /*  Audio Data Format Type II Codes */\r
215 #define AUDIO_FORMAT_TYPE_II_UNDEFINED          0x1000\r
216 #define AUDIO_FORMAT_MPEG                       0x1001\r
217 #define AUDIO_FORMAT_AC3                        0x1002\r
218 \r
219 /*  Audio Data Format Type III Codes */\r
220 #define AUDIO_FORMAT_TYPE_III_UNDEFINED         0x2000\r
221 #define AUDIO_FORMAT_IEC1937_AC3                0x2001\r
222 #define AUDIO_FORMAT_IEC1937_MPEG1_L1           0x2002\r
223 #define AUDIO_FORMAT_IEC1937_MPEG1_L2_3         0x2003\r
224 #define AUDIO_FORMAT_IEC1937_MPEG2_NOEXT        0x2003\r
225 #define AUDIO_FORMAT_IEC1937_MPEG2_EXT          0x2004\r
226 #define AUDIO_FORMAT_IEC1937_MPEG2_L1_LS        0x2005\r
227 #define AUDIO_FORMAT_IEC1937_MPEG2_L2_3         0x2006\r
228 \r
229 \r
230 /* Predefined Audio Channel Configuration Bits */\r
231 #define AUDIO_CHANNEL_M                         0x0000  /* Mono */\r
232 #define AUDIO_CHANNEL_L                         0x0001  /* Left Front */\r
233 #define AUDIO_CHANNEL_R                         0x0002  /* Right Front */\r
234 #define AUDIO_CHANNEL_C                         0x0004  /* Center Front */\r
235 #define AUDIO_CHANNEL_LFE                       0x0008  /* Low Freq. Enhance. */\r
236 #define AUDIO_CHANNEL_LS                        0x0010  /* Left Surround */\r
237 #define AUDIO_CHANNEL_RS                        0x0020  /* Right Surround */\r
238 #define AUDIO_CHANNEL_LC                        0x0040  /* Left of Center */\r
239 #define AUDIO_CHANNEL_RC                        0x0080  /* Right of Center */\r
240 #define AUDIO_CHANNEL_S                         0x0100  /* Surround */\r
241 #define AUDIO_CHANNEL_SL                        0x0200  /* Side Left */\r
242 #define AUDIO_CHANNEL_SR                        0x0400  /* Side Right */\r
243 #define AUDIO_CHANNEL_T                         0x0800  /* Top */\r
244 \r
245 \r
246 /* Feature Unit Control Bits */\r
247 #define AUDIO_CONTROL_MUTE                      0x0001\r
248 #define AUDIO_CONTROL_VOLUME                    0x0002\r
249 #define AUDIO_CONTROL_BASS                      0x0004\r
250 #define AUDIO_CONTROL_MID                       0x0008\r
251 #define AUDIO_CONTROL_TREBLE                    0x0010\r
252 #define AUDIO_CONTROL_GRAPHIC_EQUALIZER         0x0020\r
253 #define AUDIO_CONTROL_AUTOMATIC_GAIN            0x0040\r
254 #define AUDIO_CONTROL_DEALY                     0x0080\r
255 #define AUDIO_CONTROL_BASS_BOOST                0x0100\r
256 #define AUDIO_CONTROL_LOUDNESS                  0x0200\r
257 \r
258 /* Processing Unit Control Bits: */\r
259 #define AUDIO_CONTROL_ENABLE                    0x0001  /* Common Bit */\r
260 #define AUDIO_CONTROL_MODE_SELECT               0x0002  /* Common Bit */\r
261 \r
262 /* - Up/Down-mix Control Bits */\r
263 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
264 /*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\r
265 \r
266 /* - Dolby Prologic Control Bits */\r
267 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
268 /*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\r
269 \r
270 /* - 3D Stereo Extender Control Bits */\r
271 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
272 #define AUDIO_CONTROL_SPACIOUSNESS              0x0002\r
273 \r
274 /* - Reverberation Control Bits */\r
275 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
276 #define AUDIO_CONTROL_REVERB_TYPE               0x0002\r
277 #define AUDIO_CONTROL_REVERB_LEVEL              0x0004\r
278 #define AUDIO_CONTROL_REVERB_TIME               0x0008\r
279 #define AUDIO_CONTROL_REVERB_FEEDBACK           0x0010\r
280 \r
281 /* - Chorus Control Bits */\r
282 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
283 #define AUDIO_CONTROL_CHORUS_LEVEL              0x0002\r
284 #define AUDIO_CONTROL_SHORUS_RATE               0x0004\r
285 #define AUDIO_CONTROL_CHORUS_DEPTH              0x0008\r
286 \r
287 /* - Dynamic Range Compressor Control Bits */\r
288 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
289 #define AUDIO_CONTROL_COMPRESSION_RATE          0x0002\r
290 #define AUDIO_CONTROL_MAX_AMPL                  0x0004\r
291 #define AUDIO_CONTROL_THRESHOLD                 0x0008\r
292 #define AUDIO_CONTROL_ATTACK_TIME               0x0010\r
293 #define AUDIO_CONTROL_RELEASE_TIME              0x0020\r
294 \r
295 /* Extension Unit Control Bits */\r
296 /*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\r
297 \r
298 /* Endpoint Control Bits */\r
299 #define AUDIO_CONTROL_SAMPLING_FREQ             0x01\r
300 #define AUDIO_CONTROL_PITCH                     0x02\r
301 #define AUDIO_MAX_PACKETS_ONLY                  0x80\r
302 \r
303 \r
304 /* Audio Terminal Types */\r
305 \r
306 /*  USB Terminal Types */\r
307 #define AUDIO_TERMINAL_USB_UNDEFINED            0x0100\r
308 #define AUDIO_TERMINAL_USB_STREAMING            0x0101\r
309 #define AUDIO_TERMINAL_USB_VENDOR_SPECIFIC      0x01FF\r
310 \r
311 /*  Input Terminal Types */\r
312 #define AUDIO_TERMINAL_INPUT_UNDEFINED          0x0200\r
313 #define AUDIO_TERMINAL_MICROPHONE               0x0201\r
314 #define AUDIO_TERMINAL_DESKTOP_MICROPHONE       0x0202\r
315 #define AUDIO_TERMINAL_PERSONAL_MICROPHONE      0x0203\r
316 #define AUDIO_TERMINAL_OMNI_DIR_MICROPHONE      0x0204\r
317 #define AUDIO_TERMINAL_MICROPHONE_ARRAY         0x0205\r
318 #define AUDIO_TERMINAL_PROCESSING_MIC_ARRAY     0x0206\r
319 \r
320 /*  Output Terminal Types */\r
321 #define AUDIO_TERMINAL_OUTPUT_UNDEFINED         0x0300\r
322 #define AUDIO_TERMINAL_SPEAKER                  0x0301\r
323 #define AUDIO_TERMINAL_HEADPHONES               0x0302\r
324 #define AUDIO_TERMINAL_HEAD_MOUNTED_AUDIO       0x0303\r
325 #define AUDIO_TERMINAL_DESKTOP_SPEAKER          0x0304\r
326 #define AUDIO_TERMINAL_ROOM_SPEAKER             0x0305\r
327 #define AUDIO_TERMINAL_COMMUNICATION_SPEAKER    0x0306\r
328 #define AUDIO_TERMINAL_LOW_FREQ_SPEAKER         0x0307\r
329 \r
330 /*  Bi-directional Terminal Types */\r
331 #define AUDIO_TERMINAL_BIDIRECTIONAL_UNDEFINED  0x0400\r
332 #define AUDIO_TERMINAL_HANDSET                  0x0401\r
333 #define AUDIO_TERMINAL_HEAD_MOUNTED_HANDSET     0x0402\r
334 #define AUDIO_TERMINAL_SPEAKERPHONE             0x0403\r
335 #define AUDIO_TERMINAL_SPEAKERPHONE_ECHOSUPRESS 0x0404\r
336 #define AUDIO_TERMINAL_SPEAKERPHONE_ECHOCANCEL  0x0405\r
337 \r
338 /*  Telephony Terminal Types */\r
339 #define AUDIO_TERMINAL_TELEPHONY_UNDEFINED      0x0500\r
340 #define AUDIO_TERMINAL_PHONE_LINE               0x0501\r
341 #define AUDIO_TERMINAL_TELEPHONE                0x0502\r
342 #define AUDIO_TERMINAL_DOWN_LINE_PHONE          0x0503\r
343 \r
344 /*  External Terminal Types */\r
345 #define AUDIO_TERMINAL_EXTERNAL_UNDEFINED       0x0600\r
346 #define AUDIO_TERMINAL_ANALOG_CONNECTOR         0x0601\r
347 #define AUDIO_TERMINAL_DIGITAL_AUDIO_INTERFACE  0x0602\r
348 #define AUDIO_TERMINAL_LINE_CONNECTOR           0x0603\r
349 #define AUDIO_TERMINAL_LEGACY_AUDIO_CONNECTOR   0x0604\r
350 #define AUDIO_TERMINAL_SPDIF_INTERFACE          0x0605\r
351 #define AUDIO_TERMINAL_1394_DA_STREAM           0x0606\r
352 #define AUDIO_TERMINAL_1394_DA_STREAM_TRACK     0x0607\r
353 \r
354 /*  Embedded Function Terminal Types */\r
355 #define AUDIO_TERMINAL_EMBEDDED_UNDEFINED       0x0700\r
356 #define AUDIO_TERMINAL_CALIBRATION_NOISE        0x0701\r
357 #define AUDIO_TERMINAL_EQUALIZATION_NOISE       0x0702\r
358 #define AUDIO_TERMINAL_CD_PLAYER                0x0703\r
359 #define AUDIO_TERMINAL_DAT                      0x0704\r
360 #define AUDIO_TERMINAL_DCC                      0x0705\r
361 #define AUDIO_TERMINAL_MINI_DISK                0x0706\r
362 #define AUDIO_TERMINAL_ANALOG_TAPE              0x0707\r
363 #define AUDIO_TERMINAL_PHONOGRAPH               0x0708\r
364 #define AUDIO_TERMINAL_VCR_AUDIO                0x0709\r
365 #define AUDIO_TERMINAL_VIDEO_DISC_AUDIO         0x070A\r
366 #define AUDIO_TERMINAL_DVD_AUDIO                0x070B\r
367 #define AUDIO_TERMINAL_TV_TUNER_AUDIO           0x070C\r
368 #define AUDIO_TERMINAL_SATELLITE_RECEIVER_AUDIO 0x070D\r
369 #define AUDIO_TERMINAL_CABLE_TUNER_AUDIO        0x070E\r
370 #define AUDIO_TERMINAL_DSS_AUDIO                0x070F\r
371 #define AUDIO_TERMINAL_RADIO_RECEIVER           0x0710\r
372 #define AUDIO_TERMINAL_RADIO_TRANSMITTER        0x0711\r
373 #define AUDIO_TERMINAL_MULTI_TRACK_RECORDER     0x0712\r
374 #define AUDIO_TERMINAL_SYNTHESIZER              0x0713\r
375 \r
376 \r
377 #endif  /* __AUDIO_H__ */\r