diff options
author | Brent Cook <busterbcook@yahoo.com> | 2006-01-10 08:27:20 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-22 04:22:14 -0500 |
commit | e03173fce2f2c233b755f2d668d6d4247a717453 (patch) | |
tree | c1ba0936ae513f308fda33db69fc3d626d2a9c99 | |
parent | 34226c4239861654c69888e6e98973b2cc908c0b (diff) |
[ALSA] Add support for EDIROL UM-3ex
Modules: USB generic driver
This is my naive attempt at adding ALSA device support. The attached
patch provides support for the EDIROL UM-3ex. This is a 3-port USB midi
interface with a built-in USB hub and the ability to chain 2 other
UM-3x's in a master-slave configuration. I only have one, so I do not
know how this works in practice.
Though this is a 3-port device, I had to throw in that 4th 'Control' interface
to the definition in order to make the 3rd port work. If I set in/out_cables
to 0x000b, a 3rd interface appears on the driver, but it does nothing.
Changing it to 0x000f allows the 3rd interface to work, but of course
interface 4 does not work because it does not exist.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/usb/usbmidi.c | 2 | ||||
-rw-r--r-- | sound/usb/usbquirks.h | 22 |
2 files changed, 24 insertions, 0 deletions
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c index f15b021c3ce8..905e33e60681 100644 --- a/sound/usb/usbmidi.c +++ b/sound/usb/usbmidi.c | |||
@@ -1092,6 +1092,8 @@ static struct { | |||
1092 | { USB_ID(0x086a, 0x0001), 8, "%s Broadcast" }, | 1092 | { USB_ID(0x086a, 0x0001), 8, "%s Broadcast" }, |
1093 | { USB_ID(0x086a, 0x0002), 8, "%s Broadcast" }, | 1093 | { USB_ID(0x086a, 0x0002), 8, "%s Broadcast" }, |
1094 | { USB_ID(0x086a, 0x0003), 4, "%s Broadcast" }, | 1094 | { USB_ID(0x086a, 0x0003), 4, "%s Broadcast" }, |
1095 | /* Edirol UM-3ex */ | ||
1096 | { USB_ID(0x0582, 0x009a), 3, "%s Control" }, | ||
1095 | }; | 1097 | }; |
1096 | 1098 | ||
1097 | static void snd_usbmidi_init_substream(struct snd_usb_midi* umidi, | 1099 | static void snd_usbmidi_init_substream(struct snd_usb_midi* umidi, |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 6190ada00e38..8f348611bb00 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
@@ -204,6 +204,28 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
204 | } | 204 | } |
205 | }, | 205 | }, |
206 | { | 206 | { |
207 | USB_DEVICE(0x0582, 0x009a), | ||
208 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { | ||
209 | .vendor_name = "EDIROL", | ||
210 | .product_name = "UM-3ex", | ||
211 | .ifnum = QUIRK_ANY_INTERFACE, | ||
212 | .type = QUIRK_COMPOSITE, | ||
213 | .data = (const struct snd_usb_audio_quirk[]) { | ||
214 | { | ||
215 | .ifnum = 0, | ||
216 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | ||
217 | .data = & (const struct snd_usb_midi_endpoint_info) { | ||
218 | .out_cables = 0x000f, | ||
219 | .in_cables = 0x000f | ||
220 | } | ||
221 | }, | ||
222 | { | ||
223 | .ifnum = -1 | ||
224 | } | ||
225 | } | ||
226 | } | ||
227 | }, | ||
228 | { | ||
207 | USB_DEVICE(0x0582, 0x0002), | 229 | USB_DEVICE(0x0582, 0x0002), |
208 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { | 230 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { |
209 | .vendor_name = "EDIROL", | 231 | .vendor_name = "EDIROL", |