| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |