Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1995419imm; Thu, 24 May 2018 04:12:59 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrAfvy9MAVQaOjkGc4/wfRf+yTKl6j9gdK3+lJlxftnh4Lf4Y9DLZRGEIagXJJfwSxuLd2y X-Received: by 2002:a62:4fd8:: with SMTP id f85-v6mr6851781pfj.77.1527160379425; Thu, 24 May 2018 04:12:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527160379; cv=none; d=google.com; s=arc-20160816; b=IYBeQbglKdMFoRBWVT5aGrOO1lGVZ59jCrWGx9xGIp7a7UyoXMz9Fu3q2G3hyoaKWM p4oOlP+coVhBfGV2brdIsGwvbDVpTen/s9UDtv5TnZr310SrMK2RsrU+SvXcJ/GRHqBP 4SuyaZ3fhGcBVQUfVZwbsRCvB68wiv7RlH5e7CL8Qa2LycQYCQRn2yrEXo+SISYNHr/x KMC9N5wKDu//hAOBuoM1bM68GS5TDUnKcJTEOtEpfR/5xcfiAZRUeGfqNWLtEyYSw2is 8W+lwD79gH6K1SRUQN0cRzL+ZOQr4EUYo0pO5e2EM9lqzR4ZKDRZbfu+yxh90P+lFhUf 9Oaw== 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=Ld10qYlCFtGmpkT6/SSWkh+5mzrkGggZBqmNuwRg9bc=; b=tJZOKvHkIAeqeYnuGPxGFMAYlKiXnMmcv3v9PllLwv8hvAgfCE2J6zArLm+wTqjTch 6jCBJfnVveA5Q91VhBq0W2atGYdLA3qbeFtBN5jNQWKQywfzBVNbY6CvNKWlAgs3OsS0 i7r/LdQWDmufDyvtLdm+yfmeG/0OFbFwKhG6jk6/F6RLvaPoA62K0biFrSX130GC4bxh YIaTLuvNK+KRU/VJWtpJg5i+H4vg7PXmj3rYHdlhIDJNsfpSar00Dbs4EMVJCh1fVp4l snGVFNvisAqlisdm1K260SsLE9QApBxK5Z6BJ/Zt+PwF3E212+CghyL+2jMuRuymDeNL Jsyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=EF+Hu+k+; 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 r17-v6si434924pls.597.2018.05.24.04.12.44; Thu, 24 May 2018 04:12:59 -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=EF+Hu+k+; 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 S1033023AbeEXLKc (ORCPT + 99 others); Thu, 24 May 2018 07:10:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:34248 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S968143AbeEXJyP (ORCPT ); Thu, 24 May 2018 05:54:15 -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 95AAE20891; Thu, 24 May 2018 09:54:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527155655; bh=RJI6+uI6geh/sjWS3+MjfPDpWZ84tnRZimMJyDAhSsc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EF+Hu+k+rATWPHNaQdNVLwD1ksqTJdKtbgZtX5hv5ROxtoZT1R7nAr550RHn9TK7/ 92/MzyBX9Z7zP7GQzjKcAvoTirLrlUVYVnj39ua1CKX4hkuv4DK16YqrOUvFM9P1Y5 JJBLnxGgBnTicnoDthH3da/ytKIa0aCcq323HKCM= 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.14 068/165] ALSA: usb-audio: Add native DSD support for Luxman DA-06 Date: Thu, 24 May 2018 11:37:54 +0200 Message-Id: <20180524093624.773796914@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180524093621.979359379@linuxfoundation.org> References: <20180524093621.979359379@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.14-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 @@ -1155,24 +1155,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 */ @@ -1189,7 +1192,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 */ @@ -1210,7 +1213,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 */ @@ -1306,10 +1309,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); @@ -1396,14 +1399,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; }