From: Kristian Amlie <kristian@amlie.name>
To: clemens@ladisch.de, zonque@gmail.com
Cc: Kristian Amlie <kristian@amlie.name>, alsa-devel@alsa-project.org
Subject: [PATCH] Added support for Starr Labs USB MIDI devices.
Date: Thu, 25 Aug 2011 15:40:02 +0200 [thread overview]
Message-ID: <1314279602-28093-1-git-send-email-kristian@amlie.name> (raw)
In-Reply-To: <CACTFLAMPXVVfODASqWB8RD0HuKqh5L8eJ9LmY=fgLkLwDKwW=w@mail.gmail.com>
Based on a patch by Daniel Mack.
Signed-off-by: Kristian Amlie <kristian@amlie.name>
Acked-by: Daniel Mack <zonque@gmail.com>
---
sound/usb/midi.c | 23 +++++++++++++++++++++++
sound/usb/quirks-table.h | 11 +++++++++++
sound/usb/quirks.c | 1 +
sound/usb/usbaudio.h | 1 +
4 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/sound/usb/midi.c b/sound/usb/midi.c
index f928910..5110e78 100644
--- a/sound/usb/midi.c
+++ b/sound/usb/midi.c
@@ -816,6 +816,18 @@ static struct usb_protocol_ops snd_usbmidi_raw_ops = {
.output = snd_usbmidi_raw_output,
};
+static void snd_usbmidi_ftdi_input(struct snd_usb_midi_in_endpoint* ep,
+ uint8_t* buffer, int buffer_length)
+{
+ if (buffer_length > 2)
+ snd_usbmidi_input_data(ep, 0, buffer + 2, buffer_length - 2);
+}
+
+static struct usb_protocol_ops snd_usbmidi_ftdi_ops = {
+ .input = snd_usbmidi_ftdi_input,
+ .output = snd_usbmidi_raw_output,
+};
+
static void snd_usbmidi_us122l_input(struct snd_usb_midi_in_endpoint *ep,
uint8_t *buffer, int buffer_length)
{
@@ -2163,6 +2175,17 @@ int snd_usbmidi_create(struct snd_card *card,
/* endpoint 1 is input-only */
endpoints[1].out_cables = 0;
break;
+ case QUIRK_MIDI_FTDI:
+ umidi->usb_protocol_ops = &snd_usbmidi_ftdi_ops;
+
+ /* set baud rate */
+ err = usb_control_msg(umidi->dev, usb_sndctrlpipe(umidi->dev, 0),
+ 3, 0x40, 0x60, 0, NULL, 0, 1000);
+ if (err < 0)
+ break;
+
+ err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints);
+ break;
default:
snd_printd(KERN_ERR "invalid quirk type %d\n", quirk->type);
err = -ENXIO;
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 0b2ae8e..68ca427 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -39,6 +39,17 @@
.idProduct = prod, \
.bInterfaceClass = USB_CLASS_VENDOR_SPEC
+/* Starr Labs MIDI USB device */
+{
+ USB_DEVICE(0x0403, 0xb8d8),
+ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+ /* .vendor_name = "STARR LABS", */
+ /* .product_name = "Starr Labs MIDI USB device", */
+ .ifnum = 0,
+ .type = QUIRK_MIDI_FTDI
+ }
+},
+
/* Creative/Toshiba Multimedia Center SB-0500 */
{
USB_DEVICE(0x041e, 0x3048),
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 090e193..65591df 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -306,6 +306,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
[QUIRK_MIDI_EMAGIC] = create_any_midi_quirk,
[QUIRK_MIDI_CME] = create_any_midi_quirk,
[QUIRK_MIDI_AKAI] = create_any_midi_quirk,
+ [QUIRK_MIDI_FTDI] = create_any_midi_quirk,
[QUIRK_AUDIO_STANDARD_INTERFACE] = create_standard_audio_quirk,
[QUIRK_AUDIO_FIXED_ENDPOINT] = create_fixed_stream_quirk,
[QUIRK_AUDIO_EDIROL_UAXX] = create_uaxx_quirk,
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index 1e79986..3e2b035 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -80,6 +80,7 @@ enum quirk_type {
QUIRK_MIDI_CME,
QUIRK_MIDI_AKAI,
QUIRK_MIDI_US122L,
+ QUIRK_MIDI_FTDI,
QUIRK_AUDIO_STANDARD_INTERFACE,
QUIRK_AUDIO_FIXED_ENDPOINT,
QUIRK_AUDIO_EDIROL_UAXX,
--
1.7.3.4
next prev parent reply other threads:[~2011-08-25 13:40 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-22 10:52 How to add a new MIDI device to the usbaudio driver Kristian Amlie
2011-08-22 10:54 ` Daniel Mack
2011-08-22 11:40 ` Kristian Amlie
2011-08-22 11:49 ` Daniel Mack
2011-08-23 7:35 ` Kristian Amlie
2011-08-23 8:43 ` Daniel Mack
2011-08-23 9:03 ` Paul Menzel
2011-08-23 9:22 ` Daniel Mack
2011-08-23 9:42 ` Kristian Amlie
2011-08-23 10:02 ` Paul Menzel
2011-08-27 10:38 ` Kristian Amlie
2011-08-23 9:38 ` Clemens Ladisch
2011-08-23 9:42 ` Daniel Mack
2011-08-23 10:07 ` Kristian Amlie
2011-08-23 10:16 ` Daniel Mack
2011-08-23 11:57 ` Kristian Amlie
2011-08-23 12:20 ` Daniel Mack
2011-08-23 13:12 ` Kristian Amlie
2011-08-23 13:16 ` Daniel Mack
2011-08-23 13:28 ` Kristian Amlie
2011-08-23 13:44 ` Daniel Mack
2011-08-24 8:09 ` Kristian Amlie
2011-08-24 8:32 ` Daniel Mack
2011-08-24 10:14 ` Kristian Amlie
2011-08-24 10:29 ` Daniel Mack
2011-08-24 13:14 ` Kristian Amlie
2011-08-24 13:18 ` Daniel Mack
2011-08-24 19:51 ` Clemens Ladisch
2011-08-25 11:28 ` Kristian Amlie
2011-08-25 11:35 ` [PATCH] Added support for Starr Labs USB MIDI devices Kristian Amlie
2011-08-25 12:20 ` Daniel Mack
2011-08-25 13:40 ` Kristian Amlie [this message]
2011-08-26 11:24 ` Clemens Ladisch
2011-08-25 12:38 ` How to add a new MIDI device to the usbaudio driver Daniel Mack
2011-08-24 11:44 ` Clemens Ladisch
2011-08-24 12:05 ` Daniel Mack
2011-08-24 13:19 ` Kristian Amlie
2011-08-24 16:01 ` Clemens Ladisch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1314279602-28093-1-git-send-email-kristian@amlie.name \
--to=kristian@amlie.name \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=zonque@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).