diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2005-07-25 10:17:29 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-07-28 06:22:37 -0400 |
commit | f38275fe994c333b809796230f4f98090f8d919b (patch) | |
tree | 1eea6ae95c6e54202e674a66306a8763df924166 | |
parent | d06e4c4001cf26147a6af0718703368944f0df32 (diff) |
[ALSA] usb-audio - add support for Miditech USB MIDI keyboards
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>
-rw-r--r-- | sound/usb/usbaudio.c | 1 | ||||
-rw-r--r-- | sound/usb/usbaudio.h | 3 | ||||
-rw-r--r-- | sound/usb/usbmidi.c | 3 | ||||
-rw-r--r-- | sound/usb/usbquirks.h | 19 |
4 files changed, 26 insertions, 0 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index f2b760d8d77e..9a0b0899d156 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -2972,6 +2972,7 @@ static int snd_usb_create_quirk(snd_usb_audio_t *chip, | |||
2972 | case QUIRK_MIDI_NOVATION: | 2972 | case QUIRK_MIDI_NOVATION: |
2973 | case QUIRK_MIDI_RAW: | 2973 | case QUIRK_MIDI_RAW: |
2974 | case QUIRK_MIDI_EMAGIC: | 2974 | case QUIRK_MIDI_EMAGIC: |
2975 | case QUIRK_MIDI_MIDITECH: | ||
2975 | return snd_usb_create_midi_interface(chip, iface, quirk); | 2976 | return snd_usb_create_midi_interface(chip, iface, quirk); |
2976 | case QUIRK_COMPOSITE: | 2977 | case QUIRK_COMPOSITE: |
2977 | return create_composite_quirk(chip, iface, quirk); | 2978 | return create_composite_quirk(chip, iface, quirk); |
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index a87912205477..c1415f4b6004 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h | |||
@@ -167,6 +167,7 @@ struct snd_usb_audio { | |||
167 | #define QUIRK_MIDI_NOVATION 10 | 167 | #define QUIRK_MIDI_NOVATION 10 |
168 | #define QUIRK_MIDI_RAW 11 | 168 | #define QUIRK_MIDI_RAW 11 |
169 | #define QUIRK_MIDI_EMAGIC 12 | 169 | #define QUIRK_MIDI_EMAGIC 12 |
170 | #define QUIRK_MIDI_MIDITECH 13 | ||
170 | 171 | ||
171 | typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t; | 172 | typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t; |
172 | typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t; | 173 | typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t; |
@@ -210,6 +211,8 @@ struct snd_usb_midi_endpoint_info { | |||
210 | /* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info | 211 | /* for QUIRK_MIDI_EMAGIC, data points to a snd_usb_midi_endpoint_info |
211 | * structure (out_cables and in_cables only) */ | 212 | * structure (out_cables and in_cables only) */ |
212 | 213 | ||
214 | /* for QUIRK_MIDI_MIDITECH, data is NULL */ | ||
215 | |||
213 | /* | 216 | /* |
214 | */ | 217 | */ |
215 | 218 | ||
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index 5c754879c2b6..5778a9b725ec 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c | |||
@@ -1515,6 +1515,9 @@ int snd_usb_create_midi_interface(snd_usb_audio_t* chip, | |||
1515 | sizeof(snd_usb_midi_endpoint_info_t)); | 1515 | sizeof(snd_usb_midi_endpoint_info_t)); |
1516 | err = snd_usbmidi_detect_endpoints(umidi, &endpoints[0], 1); | 1516 | err = snd_usbmidi_detect_endpoints(umidi, &endpoints[0], 1); |
1517 | break; | 1517 | break; |
1518 | case QUIRK_MIDI_MIDITECH: | ||
1519 | err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); | ||
1520 | break; | ||
1518 | default: | 1521 | default: |
1519 | snd_printd(KERN_ERR "invalid quirk type %d\n", quirk->type); | 1522 | snd_printd(KERN_ERR "invalid quirk type %d\n", quirk->type); |
1520 | err = -ENXIO; | 1523 | err = -ENXIO; |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 67796430e588..f74e652a1e51 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
@@ -1379,6 +1379,25 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
1379 | }, | 1379 | }, |
1380 | 1380 | ||
1381 | { | 1381 | { |
1382 | USB_DEVICE(0x4752, 0x0011), | ||
1383 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | ||
1384 | .vendor_name = "Miditech", | ||
1385 | .product_name = "Midistart-2", | ||
1386 | .ifnum = 0, | ||
1387 | .type = QUIRK_MIDI_MIDITECH | ||
1388 | } | ||
1389 | }, | ||
1390 | { | ||
1391 | USB_DEVICE(0x7104, 0x2202), | ||
1392 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | ||
1393 | .vendor_name = "Miditech", | ||
1394 | .product_name = "MidiStudio-2", | ||
1395 | .ifnum = 0, | ||
1396 | .type = QUIRK_MIDI_MIDITECH | ||
1397 | } | ||
1398 | }, | ||
1399 | |||
1400 | { | ||
1382 | /* | 1401 | /* |
1383 | * Some USB MIDI devices don't have an audio control interface, | 1402 | * Some USB MIDI devices don't have an audio control interface, |
1384 | * so we have to grab MIDI streaming interfaces here. | 1403 | * so we have to grab MIDI streaming interfaces here. |