* [PATCH v2] ALSA: usb-audio: fix Line6 Helix audio format rates
@ 2019-07-07 8:27 Nicola Lunghi
2019-07-07 9:27 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Nicola Lunghi @ 2019-07-07 8:27 UTC (permalink / raw)
To: alsa-devel
Cc: Nicola Lunghi, Jaroslav Kysela, Takashi Iwai, Greg Kroah-Hartman,
Allison Randal, Jussi Laako, Thomas Gleixner, linux-kernel
Line6 Helix and HX stomp devices don't support retrieving
the number of clock sample rate.
Add a quirk to set it to 48Khz by default.
Signed-off-by: Nicola Lunghi <nick83ola@gmail.com>
---
sound/usb/format.c | 46 +++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 43 insertions(+), 3 deletions(-)
diff --git a/sound/usb/format.c b/sound/usb/format.c
index c02b51a82775..31780dfb8eb9 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -285,6 +285,33 @@ static int parse_uac2_sample_rate_range(struct snd_usb_audio *chip,
return nr_rates;
}
+/* Line6 Helix series don't support the UAC2_CS_RANGE usb function
+ * call. Return a static table of known clock rates.
+ */
+static int line6_parse_audio_format_rates_quirk(struct snd_usb_audio *chip,
+ struct audioformat *fp)
+{
+ switch (chip->usb_id) {
+ case USB_ID(0x0E41, 0x4241): /* Line6 Helix */
+ case USB_ID(0x0E41, 0x4242): /* Line6 Helix Rack */
+ case USB_ID(0x0E41, 0x4244): /* Line6 Helix LT */
+ case USB_ID(0x0E41, 0x4246): /* Line6 HX-Stomp */
+ /* supported rates: 48Khz */
+ kfree(fp->rate_table);
+ fp->rate_table = kmalloc(sizeof(int), GFP_KERNEL);
+ if (!fp->rate_table)
+ return -ENOMEM;
+ fp->nr_rates = 1;
+ fp->rate_min = 48000;
+ fp->rate_max = 48000;
+ fp->rates = SNDRV_PCM_RATE_48000;
+ fp->rate_table[0] = 48000;
+ return 0;
+ }
+
+ return -ENODEV;
+}
+
/*
* parse the format descriptor and stores the possible sample rates
* on the audioformat table (audio class v2 and v3).
@@ -294,7 +321,7 @@ static int parse_audio_format_rates_v2v3(struct snd_usb_audio *chip,
{
struct usb_device *dev = chip->dev;
unsigned char tmp[2], *data;
- int nr_triplets, data_size, ret = 0;
+ int nr_triplets, data_size, ret, ret_l6 = 0;
int clock = snd_usb_clock_find_source(chip, fp->protocol,
fp->clock, false);
@@ -313,9 +340,22 @@ static int parse_audio_format_rates_v2v3(struct snd_usb_audio *chip,
tmp, sizeof(tmp));
if (ret < 0) {
- dev_err(&dev->dev,
- "%s(): unable to retrieve number of sample rates (clock %d)\n",
+ /* line6 helix devices don't support UAC2_CS_CONTROL_SAM_FREQ call */
+ ret_l6 = line6_parse_audio_format_rates_quirk(chip, fp);
+ if (ret_l6 == -ENODEV) {
+ /* no line6 device found continue showing the error */
+ dev_err(&dev->dev,
+ "%s(): unable to retrieve number of sample rates (clock %d)\n",
+ __func__, clock);
+ goto err;
+ }
+ if (ret_l6 == 0) {
+ dev_info(&dev->dev,
+ "%s(): unable to retrieve number of sample rates: set it to a predefined value (clock %d).\n",
__func__, clock);
+ return 0;
+ }
+ ret = ret_l6;
goto err;
}
--
2.19.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] ALSA: usb-audio: fix Line6 Helix audio format rates
2019-07-07 8:27 [PATCH v2] ALSA: usb-audio: fix Line6 Helix audio format rates Nicola Lunghi
@ 2019-07-07 9:27 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2019-07-07 9:27 UTC (permalink / raw)
To: Nicola Lunghi
Cc: alsa-devel, Thomas Gleixner, Greg Kroah-Hartman, Allison Randal,
Jaroslav Kysela, Jussi Laako, linux-kernel
On Sun, 07 Jul 2019 10:27:34 +0200,
Nicola Lunghi wrote:
> @@ -294,7 +321,7 @@ static int parse_audio_format_rates_v2v3(struct snd_usb_audio *chip,
> {
> struct usb_device *dev = chip->dev;
> unsigned char tmp[2], *data;
> - int nr_triplets, data_size, ret = 0;
> + int nr_triplets, data_size, ret, ret_l6 = 0;
This caused a compile warning:
sound/usb/format.c: In function ‘parse_audio_format_rates_v2v3’:
sound/usb/format.c:337:30: warning: ‘ret’ may be used uninitialized in this function [-Wmaybe-uninitialized]
int nr_triplets, data_size, ret, ret_l6 = 0;
^~~
So I applied with a fix, keeping ret = 0 while dropping the
superfluous zero initialization for ret_l6.
thanks,
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-07-07 9:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-07-07 8:27 [PATCH v2] ALSA: usb-audio: fix Line6 Helix audio format rates Nicola Lunghi
2019-07-07 9:27 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox