aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2005-07-25 10:17:29 -0400
committerJaroslav Kysela <perex@suse.cz>2005-07-28 06:22:37 -0400
commitf38275fe994c333b809796230f4f98090f8d919b (patch)
tree1eea6ae95c6e54202e674a66306a8763df924166
parentd06e4c4001cf26147a6af0718703368944f0df32 (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.c1
-rw-r--r--sound/usb/usbaudio.h3
-rw-r--r--sound/usb/usbmidi.c3
-rw-r--r--sound/usb/usbquirks.h19
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
171typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t; 172typedef struct snd_usb_audio_quirk snd_usb_audio_quirk_t;
172typedef struct snd_usb_midi_endpoint_info snd_usb_midi_endpoint_info_t; 173typedef 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.