- #define USB_DT_CS_DEVICE 0x21
- #define USB_DT_CS_CONFIG 0x22
- #define USB_DT_CS_STRING 0x23
- #define USB_DT_CS_INTERFACE 0x24
- #define USB_DT_CS_ENDPOINT 0x25
- #define CS_AUDIO_UNDEFINED 0x20
- #define CS_AUDIO_DEVICE 0x21
- #define CS_AUDIO_CONFIGURATION 0x22
- #define CS_AUDIO_STRING 0x23
- #define CS_AUDIO_INTERFACE 0x24
- #define CS_AUDIO_ENDPOINT 0x25
- #define HEADER 0x01
- #define INPUT_TERMINAL 0x02
- #define OUTPUT_TERMINAL 0x03
- #define MIXER_UNIT 0x04
- #define SELECTOR_UNIT 0x05
- #define FEATURE_UNIT 0x06
- #define PROCESSING_UNIT 0x07
- #define EXTENSION_UNIT 0x08
- #define AS_GENERAL 0x01
- #define FORMAT_TYPE 0x02
- #define FORMAT_SPECIFIC 0x03
- #define EP_GENERAL 0x01
- #define MAX_CHAN 9
- #define MAX_FREQ 16
- #define MAX_IFACE 8
- #define MAX_FORMAT 8
- #define MAX_ALT 32 /* Sorry, we need quite a few for the Philips webcams */
- struct usb_audio_terminal
- {
- u8 flags;
- u8 assoc;
- u16 type; /* Mic etc */
- u8 channels;
- u8 source;
- u16 chancfg;
- };
- struct usb_audio_format
- {
- u8 type;
- u8 channels;
- u8 num_freq;
- u8 sfz;
- u8 bits;
- u16 freq[MAX_FREQ];
- };
- struct usb_audio_interface
- {
- u8 terminal;
- u8 delay;
- u16 num_formats;
- u16 format_type;
- u8 flags;
- u8 idleconf; /* Idle config */
- #define AU_IFACE_FOUND 1
- struct usb_audio_format format[MAX_FORMAT];
- };
- struct usb_audio_device
- {
- struct list_head list;
- u8 mixer;
- u8 selector;
- void *irq_handle;
- u8 num_channels;
- u8 num_dsp_iface;
- u8 channel_map[MAX_CHAN];
- struct usb_audio_terminal terminal[MAX_CHAN];
- struct usb_audio_interface interface[MAX_IFACE][MAX_ALT];
- };
- /* Audio Class specific Request Codes */
- #define SET_CUR 0x01
- #define GET_CUR 0x81
- #define SET_MIN 0x02
- #define GET_MIN 0x82
- #define SET_MAX 0x03
- #define GET_MAX 0x83
- #define SET_RES 0x04
- #define GET_RES 0x84
- #define SET_MEM 0x05
- #define GET_MEM 0x85
- #define GET_STAT 0xff
- /* Terminal Control Selectors */
- #define COPY_PROTECT_CONTROL 0x01
- /* Feature Unit Control Selectors */
- #define MUTE_CONTROL 0x01
- #define VOLUME_CONTROL 0x02
- #define BASS_CONTROL 0x03
- #define MID_CONTROL 0x04
- #define TREBLE_CONTROL 0x05
- #define GRAPHIC_EQUALIZER_CONTROL 0x06
- #define AUTOMATIC_GAIN_CONTROL 0x07
- #define DELAY_CONTROL 0x08
- #define BASS_BOOST_CONTROL 0x09
- #define LOUDNESS_CONTROL 0x0a
- /* Endpoint Control Selectors */
- #define SAMPLING_FREQ_CONTROL 0x01
- #define PITCH_CONTROL 0x02