]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 |