All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Adrian Ratiu <adrian.ratiu@collabora.com>
Cc: Takashi Iwai <tiwai@suse.com>, Jaroslav Kysela <perex@perex.cz>,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
	kernel@collabora.com
Subject: Re: [PATCH 2/2] sound: usb: format: don't warn that raw DSD is unsupported
Date: Thu, 05 Dec 2024 08:17:53 +0100	[thread overview]
Message-ID: <87plm6vbry.wl-tiwai@suse.de> (raw)
In-Reply-To: <20241204151954.658897-2-adrian.ratiu@collabora.com>

On Wed, 04 Dec 2024 16:19:54 +0100,
Adrian Ratiu wrote:
> 
> 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.
> 
> For example:
> 
> 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.
> 
> Thus we update the condition to take into account bit 31 for DSD
> (notice the "format <<= 1;" line above).
> 
> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>

IMO, it's better to clear the already checked format bit instead, as
there are two distinct bits depending on the protocol.
That is, something like:

--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -54,6 +54,7 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
 
 		if (format & UAC2_FORMAT_TYPE_I_RAW_DATA) {
 			pcm_formats |= SNDRV_PCM_FMTBIT_SPECIAL;
+			format &= ~UAC2_FORMAT_TYPE_I_RAW_DATA;
 			/* flag potentially raw DSD capable altsettings */
 			fp->dsd_raw = true;
 		}
@@ -67,8 +68,10 @@ 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;
+			format &= ~UAC3_FORMAT_TYPE_I_RAW_DATA;
+		}
 
 		format <<= 1;
 		break;


thanks,

Takashi


> ---
>  sound/usb/format.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/usb/format.c b/sound/usb/format.c
> index 0cbf1d4fbe6e..fe2e0580e296 100644
> --- a/sound/usb/format.c
> +++ b/sound/usb/format.c
> @@ -142,7 +142,7 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
>  		pcm_formats |= SNDRV_PCM_FMTBIT_A_LAW;
>  	if (format & BIT(UAC_FORMAT_TYPE_I_MULAW))
>  		pcm_formats |= SNDRV_PCM_FMTBIT_MU_LAW;
> -	if (format & ~0x3f) {
> +	if (format & ~0x10000003F) {
>  		usb_audio_info(chip,
>  			 "%u:%d : unsupported format bits %#llx\n",
>  			 fp->iface, fp->altsetting, format);
> -- 
> 2.45.2
> 

  reply	other threads:[~2024-12-05  7:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-04 15:19 [PATCH 1/2] sound: usb: enable DSD output for ddHiFi TC44C Adrian Ratiu
2024-12-04 15:19 ` [PATCH 2/2] sound: usb: format: don't warn that raw DSD is unsupported Adrian Ratiu
2024-12-05  7:17   ` Takashi Iwai [this message]
2024-12-05  7:11 ` [PATCH 1/2] sound: usb: enable DSD output for ddHiFi TC44C Takashi Iwai
2024-12-05  7:32   ` Adrian Ratiu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87plm6vbry.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=adrian.ratiu@collabora.com \
    --cc=kernel@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.