summaryrefslogtreecommitdiffstats
path: root/drivers/usb/class/audio.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/class/audio.h')
-rw-r--r--drivers/usb/class/audio.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/drivers/usb/class/audio.h b/drivers/usb/class/audio.h
new file mode 100644
index 000000000000..45916eb12103
--- /dev/null
+++ b/drivers/usb/class/audio.h
@@ -0,0 +1,110 @@
+#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
OpenPOWER on IntegriCloud