diff mbox series

[1/2] ALSA: usb-audio: DSD auto-detection for Playback Designs

Message ID 20190827210847.10306-1-jussi@sonarnerd.net (mailing list archive)
State New, archived
Headers show
Series [1/2] ALSA: usb-audio: DSD auto-detection for Playback Designs | expand

Commit Message

Jussi Laako Aug. 27, 2019, 9:08 p.m. UTC
Add DSD support auto-detection for newer Playback Designs devices. Older
device generations have a different USB interface implementation.

Keep the auto-detection VID whitelist sorted.

Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
---
 sound/usb/quirks.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Takashi Iwai Aug. 28, 2019, 6:03 a.m. UTC | #1
On Tue, 27 Aug 2019 23:08:46 +0200,
Jussi Laako wrote:
> 
> Add DSD support auto-detection for newer Playback Designs devices. Older
> device generations have a different USB interface implementation.
> 
> Keep the auto-detection VID whitelist sorted.
> 
> Signed-off-by: Jussi Laako <jussi@sonarnerd.net>

Applied, thanks.


Takashi
Takashi Iwai Aug. 28, 2019, 6:03 a.m. UTC | #2
On Tue, 27 Aug 2019 23:08:47 +0200,
Jussi Laako wrote:
> 
> Oppo has issued firmware updates that change alt setting used for DSD
> support. However, these devices seem to support auto-detection, so
> support is moved from explicit whitelisting to auto-detection.
> 
> Also Rotel devices have USB interfaces that support DSD with
> auto-detection.
> 
> Signed-off-by: Jussi Laako <jussi@sonarnerd.net>

Applied, thanks.


Takashi
diff mbox series

Patch

diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 7e9735aa7ac9..79fb24843d5b 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1566,7 +1566,8 @@  u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
 	struct usb_interface *iface;
 
 	/* Playback Designs */
-	if (USB_ID_VENDOR(chip->usb_id) == 0x23ba) {
+	if (USB_ID_VENDOR(chip->usb_id) == 0x23ba &&
+	    USB_ID_PRODUCT(chip->usb_id) < 0x0110) {
 		switch (fp->altsetting) {
 		case 1:
 			fp->dsd_dop = true;
@@ -1654,8 +1655,9 @@  u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
 	 * from XMOS/Thesycon
 	 */
 	switch (USB_ID_VENDOR(chip->usb_id)) {
-	case 0x20b1:  /* XMOS based devices */
 	case 0x152a:  /* Thesycon devices */
+	case 0x20b1:  /* XMOS based devices */
+	case 0x23ba:  /* Playback Designs */
 	case 0x25ce:  /* Mytek devices */
 	case 0x2ab6:  /* T+A devices */
 		if (fp->dsd_raw)