* [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C
@ 2024-12-09 9:05 Adrian Ratiu
2024-12-09 9:05 ` [PATCH v2 2/2] sound: usb: format: don't warn that raw DSD is unsupported Adrian Ratiu
2024-12-09 9:59 ` [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Takashi Iwai
0 siblings, 2 replies; 3+ messages in thread
From: Adrian Ratiu @ 2024-12-09 9:05 UTC (permalink / raw)
To: Takashi Iwai, Jaroslav Kysela
Cc: linux-sound, linux-kernel, kernel, Adrian Ratiu
This is a UAC 2 DAC capable of raw DSD on intf 2 alt 4:
Bus 007 Device 004: ID 262a:9302 SAVITECH Corp. TC44C
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 [unknown]
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x262a SAVITECH Corp.
idProduct 0x9302 TC44C
bcdDevice 0.01
iManufacturer 1 DDHIFI
iProduct 2 TC44C
iSerial 6 5000000001
.......
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 4
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 3
bmControls 0x00
bFormatType 1
bmFormats 0x80000000
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
.......
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
sound/usb/quirks.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 00101875d9a8..0e97d076a113 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2323,6 +2323,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_DSD_RAW),
DEVICE_FLG(0x2522, 0x0007, /* LH Labs Geek Out HD Audio 1V5 */
QUIRK_FLAG_SET_IFACE_FIRST),
+ DEVICE_FLG(0x262a, 0x9302, /* ddHiFi TC44C */
+ QUIRK_FLAG_DSD_RAW),
DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
QUIRK_FLAG_IGNORE_CTL_ERROR),
DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
--
2.45.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v2 2/2] sound: usb: format: don't warn that raw DSD is unsupported
2024-12-09 9:05 [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Adrian Ratiu
@ 2024-12-09 9:05 ` Adrian Ratiu
2024-12-09 9:59 ` [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Takashi Iwai
1 sibling, 0 replies; 3+ messages in thread
From: Adrian Ratiu @ 2024-12-09 9:05 UTC (permalink / raw)
To: Takashi Iwai, Jaroslav Kysela
Cc: linux-sound, linux-kernel, kernel, Adrian Ratiu
UAC 2 & 3 DAC's set bit 31 of the format to signal support for a
RAW_DATA type, typically used for DSD playback.
This is correctly tested by (format & UAC*_FORMAT_TYPE_I_RAW_DATA),
fp->dsd_raw = true; and call snd_usb_interface_dsd_format_quirks(),
however a confusing and unnecessary message gets printed because
the bit is not properly tested in the last "unsupported" if test:
if (format & ~0x3F) { ... }
For example the output:
usb 7-1: new high-speed USB device number 5 using xhci_hcd
usb 7-1: New USB device found, idVendor=262a, idProduct=9302, bcdDevice=0.01
usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
usb 7-1: Product: TC44C
usb 7-1: Manufacturer: TC44C
usb 7-1: SerialNumber: 5000000001
hid-generic 0003:262A:9302.001E: No inputs registered, leaving
hid-generic 0003:262A:9302.001E: hidraw6: USB HID v1.00 Device [DDHIFI TC44C] on usb-0000:08:00.3-1/input0
usb 7-1: 2:4 : unsupported format bits 0x100000000
This last "unsupported format" is actually wrong: we know the
format is a RAW_DATA which we assume is DSD, so there is no need
to print the confusing message.
This we unset bit 31 of the format after recognizing it, to avoid
the message.
Suggested-by: Takashi Iwai <tiwai@suse.com>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
sound/usb/format.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/sound/usb/format.c b/sound/usb/format.c
index 0cbf1d4fbe6e..6049d957694c 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -60,6 +60,8 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
/* flag potentially raw DSD capable altsettings */
fp->dsd_raw = true;
+ /* clear special format bit to avoid "unsupported format" msg below */
+ format &= ~UAC2_FORMAT_TYPE_I_RAW_DATA;
}
format <<= 1;
@@ -71,8 +73,11 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
sample_width = as->bBitResolution;
sample_bytes = as->bSubslotSize;
- if (format & UAC3_FORMAT_TYPE_I_RAW_DATA)
+ if (format & UAC3_FORMAT_TYPE_I_RAW_DATA) {
pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
+ /* clear special format bit to avoid "unsupported format" msg below */
+ format &= ~UAC3_FORMAT_TYPE_I_RAW_DATA;
+ }
format <<= 1;
break;
--
2.45.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C
2024-12-09 9:05 [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Adrian Ratiu
2024-12-09 9:05 ` [PATCH v2 2/2] sound: usb: format: don't warn that raw DSD is unsupported Adrian Ratiu
@ 2024-12-09 9:59 ` Takashi Iwai
1 sibling, 0 replies; 3+ messages in thread
From: Takashi Iwai @ 2024-12-09 9:59 UTC (permalink / raw)
To: Adrian Ratiu
Cc: Takashi Iwai, Jaroslav Kysela, linux-sound, linux-kernel, kernel
On Mon, 09 Dec 2024 10:05:28 +0100,
Adrian Ratiu wrote:
>
> This is a UAC 2 DAC capable of raw DSD on intf 2 alt 4:
>
> Bus 007 Device 004: ID 262a:9302 SAVITECH Corp. TC44C
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 239 Miscellaneous Device
> bDeviceSubClass 2 [unknown]
> bDeviceProtocol 1 Interface Association
> bMaxPacketSize0 64
> idVendor 0x262a SAVITECH Corp.
> idProduct 0x9302 TC44C
> bcdDevice 0.01
> iManufacturer 1 DDHIFI
> iProduct 2 TC44C
> iSerial 6 5000000001
> .......
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> bAlternateSetting 4
> bNumEndpoints 2
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 32
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 16
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 3
> bmControls 0x00
> bFormatType 1
> bmFormats 0x80000000
> bNrChannels 2
> bmChannelConfig 0x00000000
> iChannelNames 0
> .......
>
> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Applied both patches now. Thanks.
Takashi
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-12-09 9:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-09 9:05 [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Adrian Ratiu
2024-12-09 9:05 ` [PATCH v2 2/2] sound: usb: format: don't warn that raw DSD is unsupported Adrian Ratiu
2024-12-09 9:59 ` [PATCH v2 1/2] sound: usb: enable DSD output for ddHiFi TC44C Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox