Linux-2.6.12-rc2
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / usb / class / audio.h
1 #define CS_AUDIO_UNDEFINED 0x20
2 #define CS_AUDIO_DEVICE 0x21
3 #define CS_AUDIO_CONFIGURATION 0x22
4 #define CS_AUDIO_STRING 0x23
5 #define CS_AUDIO_INTERFACE 0x24
6 #define CS_AUDIO_ENDPOINT 0x25
7
8 #define HEADER 0x01
9 #define INPUT_TERMINAL 0x02
10 #define OUTPUT_TERMINAL 0x03
11 #define MIXER_UNIT 0x04
12 #define SELECTOR_UNIT 0x05
13 #define FEATURE_UNIT 0x06
14 #define PROCESSING_UNIT 0x07
15 #define EXTENSION_UNIT 0x08
16
17 #define AS_GENERAL 0x01
18 #define FORMAT_TYPE 0x02
19 #define FORMAT_SPECIFIC 0x03
20
21 #define EP_GENERAL 0x01
22
23 #define MAX_CHAN 9
24 #define MAX_FREQ 16
25 #define MAX_IFACE 8
26 #define MAX_FORMAT 8
27 #define MAX_ALT 32 /* Sorry, we need quite a few for the Philips webcams */
28
29 struct usb_audio_terminal
30 {
31 u8 flags;
32 u8 assoc;
33 u16 type; /* Mic etc */
34 u8 channels;
35 u8 source;
36 u16 chancfg;
37 };
38
39 struct usb_audio_format
40 {
41 u8 type;
42 u8 channels;
43 u8 num_freq;
44 u8 sfz;
45 u8 bits;
46 u16 freq[MAX_FREQ];
47 };
48
49 struct usb_audio_interface
50 {
51 u8 terminal;
52 u8 delay;
53 u16 num_formats;
54 u16 format_type;
55 u8 flags;
56 u8 idleconf; /* Idle config */
57 #define AU_IFACE_FOUND 1
58 struct usb_audio_format format[MAX_FORMAT];
59 };
60
61 struct usb_audio_device
62 {
63 struct list_head list;
64 u8 mixer;
65 u8 selector;
66 void *irq_handle;
67 u8 num_channels;
68 u8 num_dsp_iface;
69 u8 channel_map[MAX_CHAN];
70 struct usb_audio_terminal terminal[MAX_CHAN];
71 struct usb_audio_interface interface[MAX_IFACE][MAX_ALT];
72 };
73
74
75
76 /* Audio Class specific Request Codes */
77
78 #define SET_CUR 0x01
79 #define GET_CUR 0x81
80 #define SET_MIN 0x02
81 #define GET_MIN 0x82
82 #define SET_MAX 0x03
83 #define GET_MAX 0x83
84 #define SET_RES 0x04
85 #define GET_RES 0x84
86 #define SET_MEM 0x05
87 #define GET_MEM 0x85
88 #define GET_STAT 0xff
89
90 /* Terminal Control Selectors */
91
92 #define COPY_PROTECT_CONTROL 0x01
93
94 /* Feature Unit Control Selectors */
95
96 #define MUTE_CONTROL 0x01
97 #define VOLUME_CONTROL 0x02
98 #define BASS_CONTROL 0x03
99 #define MID_CONTROL 0x04
100 #define TREBLE_CONTROL 0x05
101 #define GRAPHIC_EQUALIZER_CONTROL 0x06
102 #define AUTOMATIC_GAIN_CONTROL 0x07
103 #define DELAY_CONTROL 0x08
104 #define BASS_BOOST_CONTROL 0x09
105 #define LOUDNESS_CONTROL 0x0a
106
107 /* Endpoint Control Selectors */
108
109 #define SAMPLING_FREQ_CONTROL 0x01
110 #define PITCH_CONTROL 0x02