[ALSA] usb-audio - add support for Miditech USB MIDI keyboards
Clemens Ladisch [Mon, 25 Jul 2005 14:17:29 +0000 (16:17 +0200)]
USB generic driver
Add support for Miditech Midistart and MidiStudio keyboards (another
case of devices using the standard protocol but having no descriptors).

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>

sound/usb/usbaudio.c
sound/usb/usbaudio.h
sound/usb/usbmidi.c
sound/usb/usbquirks.h

index f2b760d..9a0b089 100644 (file)
@@ -2972,6 +2972,7 @@ static int snd_usb_create_quirk(snd_usb_audio_t *chip,
        case QUIRK_MIDI_NOVATION:
        case QUIRK_MIDI_RAW:
        case QUIRK_MIDI_EMAGIC:
+       case QUIRK_MIDI_MIDITECH:
                return snd_usb_create_midi_interface(chip, iface, quirk);
        case QUIRK_COMPOSITE:
                return create_composite_quirk(chip, iface, quirk);
index a879122..c1415f4 100644 (file)
@@ -167,6 +167,7 @@ struct snd_usb_audio {
 #define QUIRK_MIDI_NOVATION            10
 #define QUIRK_MIDI_RAW                 11
 #define QUIRK_MIDI_EMAGIC              12
+#define QUIRK_MIDI_MIDITECH            13
 
 typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t;
 typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t;
@@ -210,6 +211,8 @@ 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 */
+
 /*
  */
 
index 5c75487..5778a9b 100644 (file)
@@ -1515,6 +1515,9 @@ int snd_usb_create_midi_interface(snd_usb_audio_t* chip,
                               sizeof(snd_usb_midi_endpoint_info_t));
                        err = snd_usbmidi_detect_endpoints(umidi, &endpoints[0], 1);
                        break;
+               case QUIRK_MIDI_MIDITECH:
+                       err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints);
+                       break;
                default:
                        snd_printd(KERN_ERR "invalid quirk type %d\n", quirk->type);
                        err = -ENXIO;
index 6779643..f74e652 100644 (file)
@@ -1379,6 +1379,25 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 },
 
 {
+       USB_DEVICE(0x4752, 0x0011),
+       .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
+               .vendor_name = "Miditech",
+               .product_name = "Midistart-2",
+               .ifnum = 0,
+               .type = QUIRK_MIDI_MIDITECH
+       }
+},
+{
+       USB_DEVICE(0x7104, 0x2202),
+       .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
+               .vendor_name = "Miditech",
+               .product_name = "MidiStudio-2",
+               .ifnum = 0,
+               .type = QUIRK_MIDI_MIDITECH
+       }
+},
+
+{
        /*
         * Some USB MIDI devices don't have an audio control interface,
         * so we have to grab MIDI streaming interfaces here.