From: Sudokamikaze <[email protected]>
This patch adds quirk VID/PID IDs for Hiby R3 portable DSD player DSD support
Signed-off-by: Sudokamikaze <[email protected]>
---
sound/usb/quirks.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 78858918cbc1..f90418149e4e 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1588,6 +1588,12 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
if (fp->altsetting == 2)
return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break;
+
+ /* ESS Sabre based USB DACs */
+ case USB_ID(0xc502, 0x0051): /* Hiby R3 */
+ if (fp->altsetting == 4)
+ return SNDRV_PCM_FMTBIT_DSD_U32_BE;
+ break;
case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */
case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */
--
2.23.0
On Mon, 26 Aug 2019 18:05:05 +0200,
Sudo Kamikaze wrote:
>
> From: Sudokamikaze <[email protected]>
>
> This patch adds quirk VID/PID IDs for Hiby R3 portable DSD player DSD support
>
> Signed-off-by: Sudokamikaze <[email protected]>
> ---
> sound/usb/quirks.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
> index 78858918cbc1..f90418149e4e 100644
> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -1588,6 +1588,12 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
> if (fp->altsetting == 2)
> return SNDRV_PCM_FMTBIT_DSD_U32_BE;
> break;
> +
> + /* ESS Sabre based USB DACs */
> + case USB_ID(0xc502, 0x0051): /* Hiby R3 */
> + if (fp->altsetting == 4)
> + return SNDRV_PCM_FMTBIT_DSD_U32_BE;
> + break;
Is fp->dsd_raw set for your device? IOW, instead of adding an
individual entry here, adding the vendor 0xc502 with fp->dsd_raw check
like below would work?
thanks,
Takashi
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1658,6 +1658,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
case 0x152a: /* Thesycon devices */
case 0x25ce: /* Mytek devices */
case 0x2ab6: /* T+A devices */
+ case 0xc502: /* ESS Sabre */
if (fp->dsd_raw)
return SNDRV_PCM_FMTBIT_DSD_U32_BE;
break;
> + /* ESS Sabre based USB DACs */
> + case USB_ID(0xc502, 0x0051): /* Hiby R3 */
> + if (fp->altsetting == 4)
> + return SNDRV_PCM_FMTBIT_DSD_U32_BE;
> + break;
Do you know who's vendor id is this? ESS Sabre is a DAC chip with I2S
input, I'm not aware of any product from ESS under Sabre brand that
would include USB interface. (?) So likely the USB interface is sourced
from somewhere else...
It is good to check with "lsusb -vvv" if the device flags DSD altsetting
as raw. Then you know it'll work with the auto-detection code and
doesn't break so easily if firmware update changes altsettings (not
uncommon to happen).
- Jussi