[alsa-devel] [PATCH] ALSA: usb-audio: Add SMSL D1 to quirks for native DSD support
This patch adds quirk VID/PID IDs for the SMSL D1 in order to enable Native DSD support.
Signed-off-by: Tony Das tdas444@gmail.com --- Author: Tony Das tdas444@gmail.com Date: Tue Nov 27 22:13:30 2018 +0000
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 3d0f09108c98..aeac6bb7e111 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1515,6 +1515,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */ case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */ case USB_ID(0x6b42, 0x0042): /* MSB Technology */ + case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break;
On Wed, 28 Nov 2018 21:16:37 +0100, Tony Das wrote:
This patch adds quirk VID/PID IDs for the SMSL D1 in order to enable Native DSD support.
Signed-off-by: Tony Das tdas444@gmail.com
Applied now manually now, as the patch isn't cleanly applicable. At best, please try to submit with git-send-email.
BTW, the entries there are sorted in the num ID order, so I moved the new one to the right place, too.
thanks,
Takashi
Author: Tony Das tdas444@gmail.com Date: Tue Nov 27 22:13:30 2018 +0000
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 3d0f09108c98..aeac6bb7e111 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1515,6 +1515,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */ case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */ case USB_ID(0x6b42, 0x0042): /* MSB Technology */
- case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break;
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On 28.11.2018 22.16, Tony Das wrote:
This patch adds quirk VID/PID IDs for the SMSL D1 in order to enable Native DSD support.
Signed-off-by: Tony Das tdas444@gmail.com
Author: Tony Das tdas444@gmail.com Date: Tue Nov 27 22:13:30 2018 +0000
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 3d0f09108c98..aeac6bb7e111 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1515,6 +1515,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */ case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */ case USB_ID(0x6b42, 0x0042): /* MSB Technology */
- case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break;
These kind of device specific white-listing patches are unnecessary these days for VID 0x152a (Thesycon), 0x20b1 (XMOS) and 0x25ce (Mytek) because they are covered by the auto-detection code (below this whitelisting table). In fact, for some products they cause problems due to firmware changes that cause the DSD altsetting to change. Also there are vendors who use same VID:PID pair for multiple products with different firmware variants and different altsettings which in turn causes problems with these static altsetting listings.
So I would strongly advise to use the autodetection whenever possible. In my own kernel builds I've removed all those mentioned VIDs from the PID specific table, but for the already included patches I took more conservative approach and removed only the ones I could 100% test myself.
Sorry for the delay, I didn't notice this posting until now...
Best regards,
- Jussi
On Mon, 21 Jan 2019 17:33:22 +0100, Jussi Laako wrote:
On 28.11.2018 22.16, Tony Das wrote:
This patch adds quirk VID/PID IDs for the SMSL D1 in order to enable Native DSD support.
Signed-off-by: Tony Das tdas444@gmail.com
Author: Tony Das tdas444@gmail.com Date: Tue Nov 27 22:13:30 2018 +0000
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 3d0f09108c98..aeac6bb7e111 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1515,6 +1515,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */ case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */ case USB_ID(0x6b42, 0x0042): /* MSB Technology */
- case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */ if (fp->altsetting == 3) return SNDRV_PCM_FMTBIT_DSD_U32_BE; break;
These kind of device specific white-listing patches are unnecessary these days for VID 0x152a (Thesycon), 0x20b1 (XMOS) and 0x25ce (Mytek) because they are covered by the auto-detection code (below this whitelisting table). In fact, for some products they cause problems due to firmware changes that cause the DSD altsetting to change. Also there are vendors who use same VID:PID pair for multiple products with different firmware variants and different altsettings which in turn causes problems with these static altsetting listings.
So I would strongly advise to use the autodetection whenever possible. In my own kernel builds I've removed all those mentioned VIDs from the PID specific table, but for the already included patches I took more conservative approach and removed only the ones I could 100% test myself.
Care to send a cleanup patch? That'll be really helpful.
thanks,
Takashi
Here's a cleanup patch for XMOS and Thesycon VID's from the explicit VID:PID device whitelist. I personally don't have these remaining devices, but based on what I know they should also work with the auto-detection code.
In addition, I fixed ordering of the list so that it stays sorted.
I've also noticed earlier on thing, I strongly suspect there's a typo in "NuPrime DAC-10" VID. It is "0x16b0" now, while there are other devices with VID "0x16d0", including one other NuPrime device. Although nobody seems to have complained about it either. Or maybe even the device itself has a typo in VID, who knows...
XMOS/Thesycon family of USB Audio Class firmware flags DSD altsetting separate from the PCM ones. Thus the DSD altsetting can be auto-detected based on the flag and doesn't need maintaining specific altsetting whitelist.
In addition, static VID:PID-to-altsetting whitelisting causes problems when firmware update changes the altsetting, or same VID:PID is reused for another device that has different kind of firmware.
This patch removes existing explicit whitelist mappings for XMOS VID (0x20b1) and Thesycon VID (0x152a).
Also corrects placement of Hegel HD12 and NuPrime DAC-10 to keep list sorted based on VID.
Signed-off-by: Jussi Laako jussi@sonarnerd.net --- sound/usb/quirks.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index bb8372833fc2..ef67d19117c4 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -1479,10 +1479,6 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, /* XMOS based USB DACs */ switch (chip->usb_id) { case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */ - case USB_ID(0x20b1, 0x0002): /* Wyred 4 Sound DAC-2 DSD */ - case USB_ID(0x20b1, 0x2004): /* Matrix Audio X-SPDIF 2 */ - case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */ - case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */ case USB_ID(0x22d9, 0x0416): /* OPPO HA-1 */ case USB_ID(0x22d9, 0x0436): /* OPPO Sonica */ case USB_ID(0x22d9, 0x0461): /* OPPO UDP-205 */ @@ -1492,23 +1488,13 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, return SNDRV_PCM_FMTBIT_DSD_U32_BE; break;
- case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */ - case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */ - case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */ case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */ + case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */ case USB_ID(0x16b0, 0x06b2): /* NuPrime DAC-10 */ + case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */ case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */ case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */ case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */ - case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */ - case USB_ID(0x20b1, 0x2005): /* Denafrips Ares DAC */ - case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */ - case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */ - case USB_ID(0x20b1, 0x3021): /* Eastern El. MiniMax Tube DAC Supreme */ - case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */ - case USB_ID(0x20b1, 0x302d): /* Unison Research Unico CD Due */ - case USB_ID(0x20b1, 0x307b): /* CH Precision C1 DAC */ - case USB_ID(0x20b1, 0x3086): /* Singxer F-1 converter board */ case USB_ID(0x22d9, 0x0426): /* OPPO HA-2 */ case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */ case USB_ID(0x249c, 0x9326): /* M2Tech Young MkIII */
On Mon, 28 Jan 2019 23:47:01 +0100, Jussi Laako wrote:
XMOS/Thesycon family of USB Audio Class firmware flags DSD altsetting separate from the PCM ones. Thus the DSD altsetting can be auto-detected based on the flag and doesn't need maintaining specific altsetting whitelist.
In addition, static VID:PID-to-altsetting whitelisting causes problems when firmware update changes the altsetting, or same VID:PID is reused for another device that has different kind of firmware.
This patch removes existing explicit whitelist mappings for XMOS VID (0x20b1) and Thesycon VID (0x152a).
Also corrects placement of Hegel HD12 and NuPrime DAC-10 to keep list sorted based on VID.
Signed-off-by: Jussi Laako jussi@sonarnerd.net
Applied, thanks.
Takashi
participants (3)
-
Jussi Laako
-
Takashi Iwai
-
Tony Das