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