Skip to contentSkip to conversation

ALSA: usb-audio: don't try to get Benchmark DAC1 sample rate

PATCH Applied Eric Wong 2 participants 4 messages Mar 31, 2015 – Apr 4, 2015 Sound

lore
Share & tools
lore

Eric Wong

author
#0 lore raw

PATCH 1/1 ALSA: usb-audio: don't try to get Benchmark DAC1 sample rate

Adding this quirk allows us to avoid the noisy "cannot get freq at ep 0x1" message in dmesg output every time playback starts.

This ought to affect other Benchmark DAC1 variations using the same "Microchip Technology, Inc." chip as well, but I have only tested with the "Pre" variant.

Cc Joe Turner <[email protected]>
Cc Takashi Iwai <[email protected]>

---
I also had another generic patch prepared before I noticed Joe's quirk addition for the MS Lifecam HD-5000.

 sound/usb/quirks.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
sound/usb/quirks.c +7 -2
index 753a47d..9a28365 100644
@@ -1113,8 +1113,13 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
 
 bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
 {
-	/* MS Lifecam HD-5000 doesn't support reading the sample rate. */
-	return chip->usb_id == USB_ID(0x045E, 0x076D);
+	/* devices which do not support reading the sample rate. */
+	switch (chip->usb_id) {
+	case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
+	case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
+		return true;
+	}
+	return false;
 }
 
 /* Marantz/Denon USB DACs need a vendor cmd to switch
Signature · 1 line
EW
author
#1 lore raw

RFC 1/1 ALSA: usb-audio: reduce "cannot get freq at ep" spew

Quoted 2 lines · Eric Wong

I also had another generic patch prepared before I noticed Joe's quirk addition for the MS Lifecam HD-5000.

This is the generic patch I prepared before I noticed Joe's quirk addition (applies cleanly to 3.19 and 4.0-rc6):

------------------------------8<---------------------------
Subject: [PATCH] ALSA: usb-audio: reduce "cannot get freq at ep" spew

If a device fails to support reading the sample rate, it will likely fail again and there is no point in logging the message every time the sample rate is set.

This reduces dmesg noise when using the Benchmark DAC1 PRE as a USB sound card.

---
 sound/usb/clock.c    | 7 +++++--
 sound/usb/usbaudio.h | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)
sound/usb/clock.c +5 -2
index 03fed66..512fe12 100644
@@ -307,8 +307,11 @@ static int set_sample_rate_v1(struct snd_usb_audio *chip, int iface,
 				   USB_TYPE_CLASS | USB_RECIP_ENDPOINT | USB_DIR_IN,
 				   UAC_EP_CS_ATTR_SAMPLE_RATE << 8, ep,
 				   data, sizeof(data))) < 0) {
-		dev_err(&dev->dev, "%d:%d: cannot get freq at ep %#x\n",
-			iface, fmt->altsetting, ep);
+		if (!chip->no_get_freq) {
+			dev_err(&dev->dev, "%d:%d: cannot get freq at ep %#x\n",
+				iface, fmt->altsetting, ep);
+			chip->no_get_freq = 1;
+		}
 		return 0; /* some devices don't support reading */
 	}
 
sound/usb/usbaudio.h +2 -1
index 91d0380..be65671 100644
@@ -43,7 +43,8 @@ struct snd_usb_audio {
 	unsigned int in_pm:1;
 	unsigned int autosuspended:1;	
 	unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */
-	
+	unsigned int no_get_freq:1;
+
 	int num_interfaces;
 	int num_suspended_intf;
 
Signature · 1 line
EW
#2 lore raw

Re: [RFC] ALSA: usb-audio: reduce "cannot get freq at ep" spew

At Tue, 31 Mar 2015 07:36:28 +0000,

Quoted 11 lines · Eric Wong
Quoted 2 lines · Eric Wong

I also had another generic patch prepared before I noticed Joe's quirk addition for the MS Lifecam HD-5000.

This is the generic patch I prepared before I noticed Joe's quirk addition (applies cleanly to 3.19 and 4.0-rc6):

------------------------------8<---------------------------
Subject: [PATCH] ALSA: usb-audio: reduce "cannot get freq at ep" spew

Quoted 6 lines

If a device fails to support reading the sample rate, it will likely fail again and there is no point in logging the message every time the sample rate is set.

This reduces dmesg noise when using the Benchmark DAC1 PRE as a USB sound card.

Hm, this shuts up all the rest for the device, so it also hides if the message comes from multiple EPs.

Takashi

Quoted 42 lines
---
 sound/usb/clock.c    | 7 +++++--
 sound/usb/usbaudio.h | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)
sound/usb/clock.c +5 -2
index 03fed66..512fe12 100644
@@ -307,8 +307,11 @@ static int set_sample_rate_v1(struct snd_usb_audio *chip, int iface,
 				   USB_TYPE_CLASS | USB_RECIP_ENDPOINT | USB_DIR_IN,
 				   UAC_EP_CS_ATTR_SAMPLE_RATE << 8, ep,
 				   data, sizeof(data))) < 0) {
-		dev_err(&dev->dev, "%d:%d: cannot get freq at ep %#x\n",
-			iface, fmt->altsetting, ep);
+		if (!chip->no_get_freq) {
+			dev_err(&dev->dev, "%d:%d: cannot get freq at ep %#x\n",
+				iface, fmt->altsetting, ep);
+			chip->no_get_freq = 1;
+		}
 		return 0; /* some devices don't support reading */
 	}
 
sound/usb/usbaudio.h +2 -1
index 91d0380..be65671 100644
@@ -43,7 +43,8 @@ struct snd_usb_audio {
 	unsigned int in_pm:1;
 	unsigned int autosuspended:1;	
 	unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */
-	
+	unsigned int no_get_freq:1;
+
 	int num_interfaces;
 	int num_suspended_intf;
 
Signature · 1 line
EW
Applied
#3 lore raw
In reply to Eric Wong

At Tue, 31 Mar 2015 07:34:05 +0000,

Quoted 5 lines · Eric Wong

Adding this quirk allows us to avoid the noisy "cannot get freq at ep 0x1" message in dmesg output every time playback starts.

Quoted 7 lines

This ought to affect other Benchmark DAC1 variations using the same "Microchip Technology, Inc." chip as well, but I have only tested with the "Pre" variant.

Cc Joe Turner <[email protected]>
Cc Takashi Iwai <[email protected]>

Applied, thanks.

Takashi

Quoted 30 lines

---
I also had another generic patch prepared before I noticed Joe's quirk addition for the MS Lifecam HD-5000.

 sound/usb/quirks.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
sound/usb/quirks.c +7 -2
index 753a47d..9a28365 100644
@@ -1113,8 +1113,13 @@ void snd_usb_set_format_quirk(struct snd_usb_substream *subs,
 
 bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
 {
-	/* MS Lifecam HD-5000 doesn't support reading the sample rate. */
-	return chip->usb_id == USB_ID(0x045E, 0x076D);
+	/* devices which do not support reading the sample rate. */
+	switch (chip->usb_id) {
+	case USB_ID(0x045E, 0x076D): /* MS Lifecam HD-5000 */
+	case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
+		return true;
+	}
+	return false;
 }
 
 /* Marantz/Denon USB DACs need a vendor cmd to switch
Signature · 1 line
EW