Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.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