sound: usb-audio: make the MotU Fastlane work again
[safe/jmp/linux-2.6] / sound / usb / usbaudio.h
index b58dc0c..8e7f789 100644 (file)
 #define USB_SUBCLASS_MIDI_STREAMING    0x03
 #define USB_SUBCLASS_VENDOR_SPEC       0xff
 
-#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
 /*
  */
 
-typedef struct snd_usb_audio snd_usb_audio_t;
-
 struct snd_usb_audio {
        int index;
        struct usb_device *dev;
-       snd_card_t *card;
+       struct snd_card *card;
        u32 usb_id;
        int shutdown;
        int num_interfaces;
+       int num_suspended_intf;
 
        struct list_head pcm_list;      /* list of pcm streams */
        int pcm_devs;
@@ -161,20 +153,19 @@ enum quirk_type {
        QUIRK_MIDI_YAMAHA,
        QUIRK_MIDI_MIDIMAN,
        QUIRK_MIDI_NOVATION,
-       QUIRK_MIDI_RAW,
+       QUIRK_MIDI_FASTLANE,
        QUIRK_MIDI_EMAGIC,
-       QUIRK_MIDI_MIDITECH,
+       QUIRK_MIDI_CME,
+       QUIRK_MIDI_US122L,
        QUIRK_AUDIO_STANDARD_INTERFACE,
        QUIRK_AUDIO_FIXED_ENDPOINT,
-       QUIRK_AUDIO_EDIROL_UA700_UA25,
        QUIRK_AUDIO_EDIROL_UA1000,
+       QUIRK_AUDIO_EDIROL_UA101,
+       QUIRK_AUDIO_EDIROL_UAXX,
 
        QUIRK_TYPE_COUNT
 };
 
-typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t;
-typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t;
-
 struct snd_usb_audio_quirk {
        const char *vendor_name;
        const char *product_name;
@@ -214,7 +205,7 @@ struct snd_usb_midi_endpoint_info {
 /* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info
  * structure (out_cables and in_cables only) */
 
-/* for QUIRK_MIDI_MIDITECH, data is NULL */
+/* for QUIRK_MIDI_CME, data is NULL */
 
 /*
  */
@@ -228,12 +219,16 @@ unsigned int snd_usb_combine_bytes(unsigned char *bytes, int size);
 void *snd_usb_find_desc(void *descstart, int desclen, void *after, u8 dtype);
 void *snd_usb_find_csint_desc(void *descstart, int desclen, void *after, u8 dsubtype);
 
-int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout);
+int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe,
+                   __u8 request, __u8 requesttype, __u16 value, __u16 index,
+                   void *data, __u16 size, int timeout);
 
-int snd_usb_create_mixer(snd_usb_audio_t *chip, int ctrlif);
+int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
+                        int ignore_error);
 void snd_usb_mixer_disconnect(struct list_head *p);
 
-int snd_usb_create_midi_interface(snd_usb_audio_t *chip, struct usb_interface *iface, const snd_usb_audio_quirk_t *quirk);
+int snd_usb_create_midi_interface(struct snd_usb_audio *chip, struct usb_interface *iface,
+                                 const struct snd_usb_audio_quirk *quirk);
 void snd_usbmidi_input_stop(struct list_head* p);
 void snd_usbmidi_input_start(struct list_head* p);
 void snd_usbmidi_disconnect(struct list_head *p);
@@ -249,10 +244,6 @@ void snd_usbmidi_disconnect(struct list_head *p);
 #define get_cfg_desc(cfg)      (&(cfg)->desc)
 #endif
 
-#ifndef snd_usb_complete_callback
-#define snd_usb_complete_callback(x) (x)
-#endif
-
 #ifndef snd_usb_get_speed
 #define snd_usb_get_speed(dev) ((dev)->speed)
 #endif