[ALSA] usb-audio - add support for Miditech USB MIDI keyboards
authorClemens Ladisch <clemens@ladisch.de>
Mon, 25 Jul 2005 14:17:29 +0000 (16:17 +0200)
committerJaroslav Kysela <perex@suse.cz>
Thu, 28 Jul 2005 10:22:37 +0000 (12:22 +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 f2b760d8d77e2e8814c86527ef515a9ba0f81af7..9a0b0899d156c76fbbe7adf7a6d1e4ddc9f2f50d 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 a8791220547774d3b61fe1795145bdad200750a7..c1415f4b60042e47ccb5940041c29faaf39bef84 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 5c754879c2b63134f233df3be3f5a1da23009e53..5778a9b725ec1eebbd03d1763861262500bf7315 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 67796430e588bfce5189a506b3705f7b9befaddd..f74e652a1e51cd7ce0f88c0659d65ce12b156434 100644 (file)
@@ -1378,6 +1378,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,