From patchwork Thu Jun 25 15:26:46 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Dominic_Sacr=C3=A9?= X-Patchwork-Id: 6676061 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id BF06BC05AC for ; Thu, 25 Jun 2015 15:28:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 00FF8206E6 for ; Thu, 25 Jun 2015 15:28:53 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 895E2206D4 for ; Thu, 25 Jun 2015 15:28:51 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 9C92D2606BE; Thu, 25 Jun 2015 17:28:50 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, NO_DNS_FOR_FROM,UNPARSEABLE_RELAY autolearn=no version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id A34F42606D8; Thu, 25 Jun 2015 17:28:11 +0200 (CEST) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 16D7D2606D8; Thu, 25 Jun 2015 17:28:10 +0200 (CEST) Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by alsa0.perex.cz (Postfix) with ESMTP id 43F7D2606D7 for ; Thu, 25 Jun 2015 17:27:46 +0200 (CEST) Received: from dastp.fritz.box ([79.253.161.158]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0MN1j6-1ZAJr73YZk-006fVH; Thu, 25 Jun 2015 17:27:45 +0200 From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= To: alsa-devel@alsa-project.org Date: Thu, 25 Jun 2015 17:26:46 +0200 Message-Id: <1435246006-5333-1-git-send-email-dominic.sacre@gmx.de> X-Mailer: git-send-email 2.4.4 MIME-Version: 1.0 X-Provags-ID: V03:K0:b8+CdkQiD9AlUsk6R66aBboQ19zxOy+0fm1jCW4fs6JH2WZHm+B ARLw1cc9s0gNzzdmcn8HU55drVnYig/sshS/W0dZEYvUtq4Ze/+hSiHjPkIl8Muvpc1HyKF 4zaRwmajnylbp8qu0w25iMcAb/mV7ktJ8LbWYKjlR78V9nlvzayfSH/yGZuwd8YqRebjExG zawjs6xL6VET7UfPkFAZQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:OwBifeYnAn0=:SHQxZJoa0o1mRn58HE+rRA rkgj1mpS/f7OTQ6VIsl7ZXfsTVUV2UqLEpyCqCCcUQtSrwvIKpG4ji5BNgAmSAQmMcsKG/MGm VNsyBgfPx+O+M6EvLBpN5Byp5iwR0cWlKa11d5LTPT9Sfeu/ngb/hXCIsDFPea8Kf8uzsJrsS Lg4ORaqZPV9FLvDSblRO2fArkACyx+W4wpR8wJdZedu2EGdkkW4mDwCxf+6jLFwJuXaU2UK2w ixe6+Kqdr9rlq6HHfNdWGX/kGxg6a8unzjfJP9L7o68El2lbDzjhwOoxAGfLB7qLrnFZD723j 605EsIjhNwLykXOoW0JtzmVrf2zpVRZRHX7diheikU5YC5CPMKQE8JT6+zduTKaSxwWIFYP6i gtptgiYapIQguJL4aQ+WWVOHR4G+qfbFZBjuRd0mhBOYsl4ZtzdA1km8ImDplYor1DmAD2EXJ OI0LkhAuBIZt51rG0lCQjyif4Kr67vA/PjHpl8BVeqw8cp7H6SdUTk62uclEXBvcLkYggtV1p OZMtT1ZItyk3np2LAnRLR6lP8OoOmMvQp17RMf7IAfLen+7Ae5QvCLRsYPgBHQqiHxDdEUgAP 5Ny2K4oHuA7b8KSDGo374Tidf2H26hiU275SIQiePmLoTLguAJcqzRA51mhkVi+n17cPTkJzA mCB+9MXN9Htm+4zjzlyls2BJOcz4vmYz1ryLhSWPr64/al7DIYubYRbx0JD+pIW7fIBA= Cc: =?UTF-8?q?Dominic=20Sacr=C3=A9?= , Albert Huitsing Subject: [alsa-devel] [PATCH] ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4 X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP The Steinberg MI2 and MI4 interfaces are compatible with the USB class audio spec, but the MIDI part of the devices is reported as a vendor specific interface. This patch adds entries to quirks-table.h to recognize the MIDI endpoints. Audio functionality was already working and is unaffected by this change. Signed-off-by: Dominic Sacré Signed-off-by: Albert Huitsing --- sound/usb/quirks-table.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 2f6d3e9..304c02a 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -3152,6 +3152,49 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"), }, { + /* Steinberg MI2 */ + USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040), + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = & (const struct snd_usb_audio_quirk[]) { + { + .ifnum = 3, + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = &(const struct snd_usb_midi_endpoint_info) { + .out_cables = 0x0001, + .in_cables = 0x0001 + } + }, + { + .ifnum = -1 + } + } + } +}, +{ + /* Steinberg MI4 */ + USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040), + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = & (const struct snd_usb_audio_quirk[]) { + { + .ifnum = 3, + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = &(const struct snd_usb_midi_endpoint_info) { + .out_cables = 0x0001, + .in_cables = 0x0001 + } + }, + { + .ifnum = -1 + } + } + } +}, + +{ /* * Some USB MIDI devices don't have an audio control interface, * so we have to grab MIDI streaming interfaces here.