From patchwork Tue Jun 30 15:41:33 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: 6697181 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id AD3D89F39B for ; Tue, 30 Jun 2015 15:42:40 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CC88920623 for ; Tue, 30 Jun 2015 15:42:39 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id 53804204FB for ; Tue, 30 Jun 2015 15:42:38 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 3AD43260538; Tue, 30 Jun 2015 17:42:36 +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 792A52604DF; Tue, 30 Jun 2015 17:42:28 +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 D9D3E260522; Tue, 30 Jun 2015 17:42:26 +0200 (CEST) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by alsa0.perex.cz (Postfix) with ESMTP id BC52B260484 for ; Tue, 30 Jun 2015 17:42:19 +0200 (CEST) Received: from dastp.fritz.box ([79.253.178.131]) by mail.gmx.com (mrgmx103) with ESMTPSA (Nemesis) id 0M6B6s-1YpWGu2Rti-00yBRL; Tue, 30 Jun 2015 17:42:18 +0200 From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= To: alsa-devel@alsa-project.org Date: Tue, 30 Jun 2015 17:41:33 +0200 Message-Id: <1435678893-6757-1-git-send-email-dominic.sacre@gmx.de> X-Mailer: git-send-email 2.4.5 In-Reply-To: <558C4709.3090903@ladisch.de> References: <558C4709.3090903@ladisch.de> MIME-Version: 1.0 X-Provags-ID: V03:K0:E7JJkpSE4rUd9R68IH1luTRIpSLKMYdG8bcTXc/1e6loXqaC7q+ CnfusqRnIIRRZGKVh1rZPU8vlSoon70gk5NgR7ZYH+YpXVPzY82mHrgtB12ghnv3y/5C6vs K/oh+fV8Y6ooqU52VSQC0/qHHhSKwGCpSdkzXCSyWLJpc/8zRJoW06/Mvzv9DNprKtDYWTW 7Ej7AMck9Z37oYVfwDUMQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:kLJ4cPZwzYk=:9U0JH9mFqODiqRiljsiWkw X+KmUqmpEACCs8vqR9PVGkasDLlzoNoMrwZDCmtLzNy6sS++5DvGkWXxeey6h2cAekOfs6aHR vBGPd2qzkYLdiY0RqJsUGugR0Ose57uwlDy1NsL7RqRn6AzDCZXg+px1YTD9p8fkMRnNRoEBS t/FYqfKl5/AFlGJp7TbQZatdXentVO5TGsEgCuUCWAbhfLY6eGaFJMisgsU0T063A0A51ik15 E6i/KDRTuPlIAzJ2hieTeTwndPZY8ptdPrvVdFkAmTNZNGX/68rhbBFRko4+5DzjOC0WkLiaN Jcx/hP6M8Uikk6ktLXbcZPQHTjbB6N5im5uIjxbraPEd3AhMkiOtnP2SjWkqGbCIXIiM5Md0L 9jURa7OZ67qjduCDTIP0tyl828rcc4Et7DEyqmwdHbLpXvt2TasZMLia6GpLMqI+8w8iz/JHE UhdLBERmMS0ACorTcyZb8h52Vc2sQHy4BDx3kzSO8TKvSJ+zdl9yvtMP22JfYeXFlmb/jz4DO gfQNfbnFxhZduztpxzKzEXWHW1J/kAXCcRforjb7niHxwGRNuWfW+F5gwwRU5yyOdhuunkTUp SFs2pGKsw4XhAWTTho1S/Ax/+GPFe6Zw1OYTJln4q3NGLRIM1CGCRO9dKXQ2m7YH+khl7p8rJ ohr36iN9Ce2Rg6Jw44NqzL+1ZrqsyuYK+ND9LJ4DL30aE7kG7Ft7vxZtBVB12kpNYJtA= Cc: =?UTF-8?q?Dominic=20Sacr=C3=A9?= , clemens@ladisch.de, Albert Huitsing Subject: [alsa-devel] [PATCH v2] 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 Acked-by: Clemens Ladisch --- sound/usb/quirks-table.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 2f6d3e9..e475665 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -2512,6 +2512,74 @@ YAMAHA_DEVICE(0x7010, "UB99"), } }, +/* Steinberg devices */ +{ + /* 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 = 0, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 1, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .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 = 0, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 1, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 2, + .type = QUIRK_AUDIO_STANDARD_INTERFACE + }, + { + .ifnum = 3, + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = &(const struct snd_usb_midi_endpoint_info) { + .out_cables = 0x0001, + .in_cables = 0x0001 + } + }, + { + .ifnum = -1 + } + } + } +}, + /* TerraTec devices */ { USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),