From patchwork Thu Mar 25 19:09:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas X-Patchwork-Id: 409569 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CF24C433DB for ; Thu, 25 Mar 2021 19:10:27 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E53AC61A2B for ; Thu, 25 Mar 2021 19:10:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E53AC61A2B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 72E8A1655; Thu, 25 Mar 2021 20:09:33 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 72E8A1655 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1616699423; bh=9teo4qQwNno98ieyMEx3NdugYeMgzlAO8KKf/HtAn9M=; h=From:Date:Subject:To:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=grxm+GIbHVfBzR8s2InGn8hNd/nldCobninboGszY0fGSxTcYJSffNcwDhd1+XGxc d1pLi24uNoVMasjNfFJNwsHd5GiOjxCB6xCvzijZbpp/AePKBmjXaQ9jsziFRvNdvS NXRdlDuhfz+yXjZXXRQ2s6lFL4Yw62KLPyVabKMs= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id E94B0F80257; Thu, 25 Mar 2021 20:09:32 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id AACA3F8025F; Thu, 25 Mar 2021 20:09:31 +0100 (CET) Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 36DECF800FF for ; Thu, 25 Mar 2021 20:09:22 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 36DECF800FF Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hhFL+GKQ" Received: by mail-ed1-x52c.google.com with SMTP id dm8so3678726edb.2 for ; Thu, 25 Mar 2021 12:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=5frNTrcV2pWMlzUjO6s28wDy4b8gnTeOinMGfC73Qtc=; b=hhFL+GKQbUsnf1Ya4LptU6qhq+iPjW/k9CWOxcqTggDHzIrWBn8z75faZ75X5x9Qie KgnQoAUA4N9/WNS2GOgi752hF4Ibpu+L2uqP2D6LoJ8T2oaH+qwaiwEX3szv+UWcYXMx fktPCTkhav9K6CDt7PrcQgJoAm78g1fSidK7nafRTyOP6GXWDryGjEp2QfXNXUUc92sG ZhpDoKoTIf01DRyeyWwIplkoLGe/3zNVpG+KLaahd7DRN6DRuD8L49NKqY7A/pXkqm0e j9ZGxekYBUFp/fJHgMHipSVhPTXTXqS+g+8CxbQSR4IoF0IjLpzvQSxWD2rNQ3grKMTd mipg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=5frNTrcV2pWMlzUjO6s28wDy4b8gnTeOinMGfC73Qtc=; b=dLjF1NUU1S2y/korV1xmiQfLEcnjKp+WlGyafj6KOz05/bzUwe3b6FXD/FXft9yAQ8 M53wNQJhyjMk9Xip+bd4B/m2p8aZJcsVdc+ZlLCQcrUg/YhDcNEJLCMyle5FuVJvJc2r lUSE9ov/6MYe2IT3cXV5Mg2WhTZiQ44j/MUAFz4aCFEucr7EFVo4zBg18sV1j3ggqIFy nFg0N0yrkWngnq1S0Ey0sZLlyDQJ4iGWpZd+CVqDFaPdLIL6Ly9BnqcjH1vZEhhM91FD zUfUfWDyhcM6N9gXKpCRJQ7LEXM6tDyNxuXH3ZSh4ZM/KlvKbu+i/FTs3eNPc9x3CUIo EAUg== X-Gm-Message-State: AOAM531YKP8g5+H8xyT+FeA8vT28kAf2f3E532ChNvHJkDrmI0wi13bt YY3MFADMR6d9wEfB04qcF29Xpn3Vg63SYQ2HayNT1rCqnxA= X-Google-Smtp-Source: ABdhPJytRPO3OmRYpmNYdA4Tk2pUEBFcaUAYMooecu++hEMIE+pSfBJE6AGMGM2D3Qk9y22QGAOEl/FXmXsBjHwhiHA= X-Received: by 2002:aa7:d416:: with SMTP id z22mr10634934edq.239.1616699361964; Thu, 25 Mar 2021 12:09:21 -0700 (PDT) MIME-Version: 1.0 From: Lucas Date: Thu, 25 Mar 2021 14:09:10 -0500 Message-ID: Subject: Patch for some Roland devices' USB digital audio To: alsa-devel@alsa-project.org X-Content-Filtered-By: Mailman/MimeDel 2.1.15 X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 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" A couple days ago, I found this excellent informational post, and that Mike Oliphant's patch is in mainline now: http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html Since I was fairly certain it applies to the Roland devices I own, I added my USB IDs. Wonderfully, now USB audio capture seems to be working perfectly from the three devices I can test: the INTEGRA-7, Boutique D-05, & VG-99! I don't know if the D-05 and VG-99 have digital audio playback/output, as I only tried it with the INTEGRA-7. It does work, but only when the INTEGRA-7's "Sampling Rate" is set to "44.1 kHz" and "Ext Part Source Select" is set to "USB AUDIO". I searched a bit for other Roland devices people have had USB digital audio issues with over the years, and took the liberty of adding them to the patch too. Likely there are still many more, especially in the Boutique line, but I couldn't find their USB IDs. I hope this can be added to the mainline kernel too, as this support should help many that have struggled. I, certainly, have been hoping somebody would figure this out for quite a while, and even bought a USB through/monitoring device to try to develop it myself (sadly, the software supporting that has its own bugs, so I probably should've just used wireshark). Suffice it to say, I'm quite happy to have this figured out, and to not have to delve into stuff I know nothing about! :) Thanks, Lucas diff -Nur ./linux-5.11.9.orig/sound/usb/implicit.c ./linux-5.11.9.roland/sound/usb/implicit.c --- ./linux-5.11.9.orig/sound/usb/implicit.c 2021-03-24 05:54:19.000000000 -0500 +++ ./linux-5.11.9.roland/sound/usb/implicit.c 2021-03-25 03:05:33.414870404 -0500 @@ -71,13 +71,27 @@ .ep_num = 0x84, .iface = 0 }, /* MOTU MicroBook II */ /* No quirk for playback but with capture quirk (see below) */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a6), /* Roland JUNO-G */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ad), /* Roland SH-201 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00b2), /* Roland VG-99 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c7), /* Roland V-Synth GT */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0111), /* Roland GAIA SH-01 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0120), /* Roland OCTA-CAPTURE */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x012b), /* Roland DUO-CAPTURE */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x012f), /* Roland QUAD-CAPTURE */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x0130), /* BOSS BR-80 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0138), /* BOSS RC-300 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x013e), /* Roland R-26 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x015b), /* Roland INTEGRA-7 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171), /* BOSS RC-505 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x017c), /* Roland TR-8 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x0185), /* BOSS GP-10 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x0189), /* BOSS GT-100v2 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01b5), /* Roland JP-08 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d6), /* BOSS GT-1 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d8), /* BOSS Katana */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e5), /* BOSS GT-001 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01ff), /* Roland D-05 */ IMPLICIT_FB_SKIP_DEV(0x0582, 0x0203), /* BOSS AD-10 */ {} /* terminator */ @@ -85,13 +99,27 @@ /* Implicit feedback quirk table for capture: only FIXED type */ static const struct snd_usb_implicit_fb_match capture_implicit_fb_quirks[] = { + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a6, 0x0d, 0x01), /* Roland JUNO-G */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ad, 0x0d, 0x01), /* Roland SH-201 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00b2, 0x0d, 0x01), /* Roland VG-99 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c7, 0x0d, 0x01), /* Roland V-Synth GT */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0111, 0x0d, 0x01), /* Roland GAIA SH-01 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0120, 0x0d, 0x01), /* Roland OCTA-CAPTURE */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x012b, 0x0d, 0x01), /* Roland DUO-CAPTURE */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x012f, 0x0d, 0x01), /* Roland QUAD-CAPTURE */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0130, 0x0d, 0x01), /* BOSS BR-80 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0138, 0x0d, 0x01), /* BOSS RC-300 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x013e, 0x0d, 0x01), /* Roland R-26 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x015b, 0x0d, 0x01), /* Roland INTEGRA-7 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0171, 0x0d, 0x01), /* BOSS RC-505 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x017c, 0x0d, 0x01), /* Roland TR-8 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0185, 0x0d, 0x01), /* BOSS GP-10 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0189, 0x0d, 0x01), /* BOSS GT-100v2 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01b5, 0x0d, 0x01), /* Roland JP-08 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d6, 0x0d, 0x01), /* BOSS GT-1 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d8, 0x0d, 0x01), /* BOSS Katana */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e5, 0x0d, 0x01), /* BOSS GT-001 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01ff, 0x0d, 0x01), /* Roland D-05 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0203, 0x0d, 0x01), /* BOSS AD-10 */ {} /* terminator */