Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp2026351imm; Thu, 24 May 2018 04:44:46 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpU7a9wuD2hbYt4BNmZ0a5ueZr7sTc785WJE120ER9OUI15C9rhot7iBcr8zun8Ac6KZqTO X-Received: by 2002:aa7:81cc:: with SMTP id c12-v6mr6966742pfn.169.1527162286532; Thu, 24 May 2018 04:44:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527162286; cv=none; d=google.com; s=arc-20160816; b=tp/uexCd6RAAabr/WoC82SI9eMfVMF2W9qlD+YB6I1QDtFHNia0OWLVZYNthD4tfDr ILzmxEmwIgRLdhfaYNabkM0HdLTCZgPE8ABoQCiQ15ZUSF6FmXaRwqIwqLG4ACN1hk8y xCIi7F0SRblVuNXm4EeyhaEJYdGUbutDTOcSdwLnDVrjCoCT2XnBS6J7pFHoUO6dLKBb H8WCE+JBa81yC0IP/hJajvxtcDO8btP0Wr++rbhMPqRTJhh5OO3iE2wvEraJrSm9RLPw RpAZqY5RVBxv7I0VitOc0qhm6IuICQorfEHAKBHy4G3r2meknwMQJki06pJ3m1vugzFt P+lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=hsSJEVrH2gbv5v1WrLQSSGTXyA+NIYCZTwxe3ubVxwA=; b=00HsIj8j8YqrfbX4NMZyRGHX6fuAup3Fd8xnm9kPmdvpPlqGdtOkEerh1ZfLfPJng5 yBT5VUi4Kg5xtZiGm7PdcAXoKnJU9jd6sAuRgH02bJtapoLRsy4HTUISimfaeoXTD0Df ij+cNZux8Ns+rXZXCwOCtUcO4moWzJrbIlcZGf5OYZCggXYzjVC1hmVwMrmPPavJt1wg zef9OCp9+T0yilqlyadAauinYe5JuHCYiddn0CjKaPBre7/1ljU0+t5RB6imApSd81uy /JAPbD6k+PYazFNCnT8Xq4jVFs0fMbqYRLzo6WlJiU8aZDqftIOOsrhhgQGjJ09HP9TO 04Dg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=NKP9AaQ9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k14-v6si5247361pgr.206.2018.05.24.04.44.31; Thu, 24 May 2018 04:44:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=NKP9AaQ9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S969254AbeEXLnn (ORCPT + 99 others); Thu, 24 May 2018 07:43:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:33450 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967191AbeEXJsQ (ORCPT ); Thu, 24 May 2018 05:48:16 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (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 8A213208A3; Thu, 24 May 2018 09:48:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527155295; bh=lkxi/jvRHjZ2Koqm7GUBAcxZk5UOAnuGYq6Gnd7bx98=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NKP9AaQ9nFdXctm51shZEzkDenlT+9VCA1Q+qt4fRbJ9HY9q4K97ZHzHQjkD2ZN8j 253lFHsqih3Jtg6oCAzSRjB66CjLhaztD3Lm96zcpV4LKByMof3F3s6ZDFpvfLcKHG i9ZLLtko6BH/iR7RV3vjJU5i2x5ltu641l04MZWA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nobutaka Okabe , Takashi Iwai , Sasha Levin Subject: [PATCH 4.9 35/96] ALSA: usb-audio: Add native DSD support for Luxman DA-06 Date: Thu, 24 May 2018 11:38:18 +0200 Message-Id: <20180524093607.586426661@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180524093605.602125311@linuxfoundation.org> References: <20180524093605.602125311@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Nobutaka Okabe [ Upstream commit 71426535f49fe6034d0e0db77608b91a0c1a022d ] Add native DSD support quirk for Luxman DA-06 DAC, by adding the PID/VID 1852:5065. Rename "is_marantz_denon_dac()" function to "is_itf_usb_dsd_2alts_dac()" to cover broader device family sharing the same USB audio implementation(*). For the same reason, rename "is_teac_dsd_dac()" function to "is_itf_usb_dsd_3alts_dac()". (*) These devices have the same USB controller "ITF-USB DSD", supplied by INTERFACE Co., Ltd. "ITF-USB DSD" USB controller has two patterns, Pattern 1. (2 altsets version) - Altset 0: for control - Altset 1: for stream (S32) - Altset 2: for stream (S32, DSD_U32) Pattern 2. (3 altsets version) - Altset 0: for control - Altset 1: for stream (S16) - Altset 2: for stream (S32) - Altset 3: for stream (S32, DSD_U32) "is_itf_usb_dsd_2alts_dac()" returns true, if the DAC has "Pattern 1" USB controller, and "is_itf_usb_dsd_3alts_dac()" returns true, if "Pattern2". Signed-off-by: Nobutaka Okabe Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- sound/usb/quirks.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1153,24 +1153,27 @@ bool snd_usb_get_sample_rate_quirk(struc return false; } -/* Marantz/Denon USB DACs need a vendor cmd to switch +/* ITF-USB DSD based DACs need a vendor cmd to switch * between PCM and native DSD mode + * (2 altsets version) */ -static bool is_marantz_denon_dac(unsigned int id) +static bool is_itf_usb_dsd_2alts_dac(unsigned int id) { switch (id) { case USB_ID(0x154e, 0x1003): /* Denon DA-300USB */ case USB_ID(0x154e, 0x3005): /* Marantz HD-DAC1 */ case USB_ID(0x154e, 0x3006): /* Marantz SA-14S1 */ + case USB_ID(0x1852, 0x5065): /* Luxman DA-06 */ return true; } return false; } -/* TEAC UD-501/UD-503/NT-503 USB DACs need a vendor cmd to switch - * between PCM/DOP and native DSD mode +/* ITF-USB DSD based DACs need a vendor cmd to switch + * between PCM and native DSD mode + * (3 altsets version) */ -static bool is_teac_dsd_dac(unsigned int id) +static bool is_itf_usb_dsd_3alts_dac(unsigned int id) { switch (id) { case USB_ID(0x0644, 0x8043): /* TEAC UD-501/UD-503/NT-503 */ @@ -1187,7 +1190,7 @@ int snd_usb_select_mode_quirk(struct snd struct usb_device *dev = subs->dev; int err; - if (is_marantz_denon_dac(subs->stream->chip->usb_id)) { + if (is_itf_usb_dsd_2alts_dac(subs->stream->chip->usb_id)) { /* First switch to alt set 0, otherwise the mode switch cmd * will not be accepted by the DAC */ @@ -1208,7 +1211,7 @@ int snd_usb_select_mode_quirk(struct snd break; } mdelay(20); - } else if (is_teac_dsd_dac(subs->stream->chip->usb_id)) { + } else if (is_itf_usb_dsd_3alts_dac(subs->stream->chip->usb_id)) { /* Vendor mode switch cmd is required. */ switch (fmt->altsetting) { case 3: /* DSD mode (DSD_U32) requested */ @@ -1304,10 +1307,10 @@ void snd_usb_ctl_msg_quirk(struct usb_de (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) mdelay(20); - /* Marantz/Denon devices with USB DAC functionality need a delay + /* ITF-USB DSD based DACs functionality need a delay * after each class compliant request */ - if (is_marantz_denon_dac(chip->usb_id) + if (is_itf_usb_dsd_2alts_dac(chip->usb_id) && (requesttype & USB_TYPE_MASK) == USB_TYPE_CLASS) mdelay(20); @@ -1371,14 +1374,14 @@ u64 snd_usb_interface_dsd_format_quirks( break; } - /* Denon/Marantz devices with USB DAC functionality */ - if (is_marantz_denon_dac(chip->usb_id)) { + /* ITF-USB DSD based DACs (2 altsets version) */ + if (is_itf_usb_dsd_2alts_dac(chip->usb_id)) { if (fp->altsetting == 2) return SNDRV_PCM_FMTBIT_DSD_U32_BE; } - /* TEAC devices with USB DAC functionality */ - if (is_teac_dsd_dac(chip->usb_id)) { + /* ITF-USB DSD based DACs (3 altsets version) */ + if (is_itf_usb_dsd_3alts_dac(chip->usb_id)) { if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; }