From mboxrd@z Thu Jan 1 00:00:00 1970 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=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 C0188C388F7 for ; Mon, 9 Nov 2020 13:10:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 74C3720867 for ; Mon, 9 Nov 2020 13:10:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604927416; bh=UrozhBWC6/hlD3inlUuY9ho1DZWUF9gaGeTvgbiGtVE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=eoS+XxmSogC6ElwnxJ5+OM1STWTn1fNRJERrwDh2E19k4qdYNjuGuv6hCJY0hYJKK uBwh1V1kWH5+cZYuHYt9l+ai6F1XYyyTjTfDprpgxuRKYEC63A3AfPpPq3vHV5jj57 UE2tLSpaDuzJ5Syay7Ikd3U0PPlh5ih5+ahzzLts= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732008AbgKINKP (ORCPT ); Mon, 9 Nov 2020 08:10:15 -0500 Received: from mail.kernel.org ([198.145.29.99]:35306 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731995AbgKINKK (ORCPT ); Mon, 9 Nov 2020 08:10:10 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DBFD321D46; Mon, 9 Nov 2020 13:10:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604927409; bh=UrozhBWC6/hlD3inlUuY9ho1DZWUF9gaGeTvgbiGtVE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hK72QYOYJng88heiHo0uzAPWQpkC/6BM8ZuSHc9EN93ZDiToqXU2KxbHXhjToHT1R RUuAkWNaYP4iit7eIiFbVjtdcY64MTKm1cMHqpJrTyM1wXdQZGvmAfz8IwYyu4tnm+ 0kScvYWGV5TBpRhoeHzfVsL9gINSPN2o5mgxqY6M= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Keith Winstein , Takashi Iwai Subject: [PATCH 4.19 32/71] ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2 Date: Mon, 9 Nov 2020 13:55:26 +0100 Message-Id: <20201109125021.415798354@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201109125019.906191744@linuxfoundation.org> References: <20201109125019.906191744@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Keith Winstein commit f15cfca818d756dd1c9492530091dfd583359db3 upstream. The Zoom UAC-2 USB audio interface provides an async playback endpoint ("1 OUT (ASYNC)") and capture endpoint ("2 IN (ASYNC)"), both with 2-channel S32_LE in 44.1, 48, 88.2, 96, 176.4, or 192 kilosamples/s. The device provides explicit feedback to adjust the host's playback rate, but the feedback appears unstable and biased relative to the device's capture rate. "alsaloop -t 1000" experiences playback underruns and tries to resample the captured audio to match the varying playback rate. Forcing the kernel to use implicit feedback appears to produce more stable results. This causes the host to transmit one playback sample for each capture sample received. (Zoom North America has been notified of this change.) Signed-off-by: Keith Winstein Tested-by: Keith Winstein Cc: BugLink: https://lore.kernel.org/r/20201027071841.GA164525@trolley.csail.mit.edu Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/usb/pcm.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -350,6 +350,10 @@ static int set_sync_ep_implicit_fb_quirk ep = 0x81; ifnum = 2; goto add_sync_ep_from_ifnum; + case USB_ID(0x1686, 0xf029): /* Zoom UAC-2 */ + ep = 0x82; + ifnum = 2; + goto add_sync_ep_from_ifnum; case USB_ID(0x1397, 0x0001): /* Behringer UFX1604 */ case USB_ID(0x1397, 0x0002): /* Behringer UFX1204 */ ep = 0x81;