aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.