ALSA: usb-audio: don't try to get Benchmark DAC1 sample rate
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.
---
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
@@ -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
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
@@ -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
@@ -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
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
Signed-off-by Eric Wong <[email protected]>--- sound/usb/clock.c | 7 +++++-- sound/usb/usbaudio.h | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-)sound/usb/clock.c +5
-2@@ -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@@ -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
Takashi Iwai
AppliedAt 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.
Signed-off-by Eric Wong <[email protected]>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@@ -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