#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