Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp164610imw; Wed, 13 Jul 2022 22:02:17 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uO7a4JoZJLFzYLJ2V+d4FDEobk6dZ4APzKQjR97FUAwks1se98YtqTvMErMRl8g0XDSwYB X-Received: by 2002:a17:903:18a:b0:16c:4f75:7297 with SMTP id z10-20020a170903018a00b0016c4f757297mr6629098plg.133.1657774937189; Wed, 13 Jul 2022 22:02:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657774937; cv=none; d=google.com; s=arc-20160816; b=YytqbnTjv8figeIP917zZmcQrfTgDY+lJrwIBQ79EtqeW2c7EVmdorwKx9zNdF/60z 2ED6XmOJl/q1SLRvzZdNTdk2NWEyCQssKo7qr2ZEXo2syf+f0GvDjV/AuYbBm2DD08fG FLGbhwmIMfynzaziYpBaQyYBcJ/KstgxmjR3HW8d36Yr1lanvBhvNbuRjB/7smz1yrpD /rFBpyRhbtJ5Y9eYgtoY8zMQW8QYkogD2jFNNeg9zkhlB9Le4MJaiP03MLvNQI20tGbz PdiN0lPItH2lalKVZMc4AumhHHgyb6JMl2aQU1xSsyo4OqNp0aAScotYSbssOfCqMpsb Kujw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZkddcmtXTEngG9aoYIS7Oo98IuPKCrBD4O3fSVLnNDI=; b=qy4VLcyxcDFcpkcxJvS2DicsTVtc+BLHlebUGAzbINlmdK1yYkWl41GoKMXf10TsUo xj+ErjDaMJ2Lp0HuyayDnAen6LNwzD/6FZJ0Bo4xzLDswRAh4pZHmhmHs/TkkArv5Zhq PLBmPo0uxeaIOcfGYMulkzR0k8Yt+WKNiepILHlx579dHQq26uWW+K25khgN13RWNArD stUW6zCJJW/nJrH9JNTmisRKFhiW72CITa8xtkjQ/V6A071PbFxk3YMOAtFb5FcbDNha NOSF71tBn2MHLE1YiTfcZZ7ScZdATJ8jFGvOcuYq5xRSqPO+kSBvys+MsdG3eiPX69bq LhSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m5ErzDG4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 145-20020a630697000000b003c64eaa98cbsi643777pgg.58.2022.07.13.22.02.04; Wed, 13 Jul 2022 22:02:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m5ErzDG4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236976AbiGNEcT (ORCPT + 99 others); Thu, 14 Jul 2022 00:32:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237433AbiGNEb1 (ORCPT ); Thu, 14 Jul 2022 00:31:27 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D2AB32DB7; Wed, 13 Jul 2022 21:25:29 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id DA139B82333; Thu, 14 Jul 2022 04:25:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26D5BC34114; Thu, 14 Jul 2022 04:25:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1657772726; bh=Yq4+OAykBYjQ9xMianAzkJZwCiKUJxPTc6gaUkZ7J+E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m5ErzDG4Sw/0VlhEmu4vMf9pS8dIlgq9vaRTLHpVYNj3FsGlrNxwtR5HSkqKJoAI7 kVY/u/r+6duYq+fSljtKxg8ImuB8IQfjWOPDf9fjCs1Pda+UsjWor8NCG0FVlKN4Fn 0SDwQTZtSSVWvuR0lLHlc7/2CoPb1CeaaMG/+rz4y06P3IqQi88mGfuTY7U5XvOenC IwdfT56E3L2zYTarZyyeIatjUyYdnDcokvRsnlrFsoIMmkE4werwk2hmsJ8yWpJT70 kQHN2KdYeaY1A17SmDi2Pc20fBz9JP3KdbiEUiIIult2DsUx0WyGiUBe9mTdm+ajte 5UouWLBL/P7+Q== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: John Veness , Takashi Iwai , Sasha Levin , perex@perex.cz, tiwai@suse.com, hahnjo@hahnjo.de, sdoregor@sdore.me, willovertonuk@gmail.com, brendan@grieve.com.au, alexander@tsoy.me, alsa-devel@alsa-project.org Subject: [PATCH AUTOSEL 5.15 24/28] ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices Date: Thu, 14 Jul 2022 00:24:25 -0400 Message-Id: <20220714042429.281816-24-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220714042429.281816-1-sashal@kernel.org> References: <20220714042429.281816-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: John Veness [ Upstream commit 6e2c9105e0b743c92a157389d40f00b81bdd09fe ] Treat the claimed 96kHz 1ch in the descriptors as 48kHz 2ch, so that the audio stream doesn't sound mono. Also fix initial stream alignment, so that left and right channels are in the correct order. Signed-off-by: John Veness Link: https://lore.kernel.org/r/20220624140757.28758-1-john-linux@pelago.org.uk Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/usb/quirks-table.h | 48 ++++++++++++++++++++++++++++++++++++++++ sound/usb/quirks.c | 3 +++ 2 files changed, 51 insertions(+) diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 4f56e1784932..853da162fd18 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -3802,6 +3802,54 @@ YAMAHA_DEVICE(0x7010, "UB99"), } }, +/* + * MacroSilicon MS2100/MS2106 based AV capture cards + * + * These claim 96kHz 1ch in the descriptors, but are actually 48kHz 2ch. + * They also need QUIRK_FLAG_ALIGN_TRANSFER, which makes one wonder if + * they pretend to be 96kHz mono as a workaround for stereo being broken + * by that... + * + * They also have an issue with initial stream alignment that causes the + * channels to be swapped and out of phase, which is dealt with in quirks.c. + */ +{ + USB_AUDIO_DEVICE(0x534d, 0x0021), + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "MacroSilicon", + .product_name = "MS210x", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = &(const struct snd_usb_audio_quirk[]) { + { + .ifnum = 2, + .type = QUIRK_AUDIO_STANDARD_MIXER, + }, + { + .ifnum = 3, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 2, + .iface = 3, + .altsetting = 1, + .altset_idx = 1, + .attributes = 0, + .endpoint = 0x82, + .ep_attr = USB_ENDPOINT_XFER_ISOC | + USB_ENDPOINT_SYNC_ASYNC, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 48000, + .rate_max = 48000, + } + }, + { + .ifnum = -1 + } + } + } +}, + /* * MacroSilicon MS2109 based HDMI capture cards * diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index e8468f9b007d..a72874bc0936 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1478,6 +1478,7 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs, case USB_ID(0x041e, 0x3f19): /* E-Mu 0204 USB */ set_format_emu_quirk(subs, fmt); break; + case USB_ID(0x534d, 0x0021): /* MacroSilicon MS2100/MS2106 */ case USB_ID(0x534d, 0x2109): /* MacroSilicon MS2109 */ subs->stream_offset_adj = 2; break; @@ -1904,6 +1905,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_IGNORE_CTL_ERROR), DEVICE_FLG(0x413c, 0xa506, /* Dell AE515 sound bar */ QUIRK_FLAG_GET_SAMPLE_RATE), + DEVICE_FLG(0x534d, 0x0021, /* MacroSilicon MS2100/MS2106 */ + QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */ -- 2.35.1