|
Takashi Iwai |
d3ecfd |
From 60081b35c68ba6a466dee08de581be06999c930a Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
d3ecfd |
From: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
d3ecfd |
Date: Thu, 13 Feb 2020 12:20:59 +0100
|
|
Takashi Iwai |
d3ecfd |
Subject: [PATCH] ALSA: usb-audio: Parse source ID of UAC2 effect unit
|
|
Takashi Iwai |
d3ecfd |
Git-commit: 60081b35c68ba6a466dee08de581be06999c930a
|
|
Takashi Iwai |
d3ecfd |
Patch-mainline: v5.7-rc1
|
|
Takashi Iwai |
d3ecfd |
References: bsc#1051510
|
|
Takashi Iwai |
d3ecfd |
|
|
Takashi Iwai |
d3ecfd |
During parsing the input source, we currently cut off at the Effect
|
|
Takashi Iwai |
d3ecfd |
Unit node without parsing further its source id. It's no big problem,
|
|
Takashi Iwai |
d3ecfd |
so far, but it should be more consistent to parse it properly.
|
|
Takashi Iwai |
d3ecfd |
|
|
Takashi Iwai |
d3ecfd |
This patch adds the recursive parsing in parse_term_effect_unit().
|
|
Takashi Iwai |
d3ecfd |
It doesn't add anything in the audio unit parser itself, and the
|
|
Takashi Iwai |
d3ecfd |
effect unit itself is still skipped, though.
|
|
Takashi Iwai |
d3ecfd |
|
|
Takashi Iwai |
d3ecfd |
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=206147
|
|
Takashi Iwai |
d3ecfd |
Link: https://lore.kernel.org/r/20200213112059.18745-3-tiwai@suse.de
|
|
Takashi Iwai |
d3ecfd |
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
d3ecfd |
|
|
Takashi Iwai |
d3ecfd |
---
|
|
Takashi Iwai |
d3ecfd |
sound/usb/mixer.c | 6 ++++++
|
|
Takashi Iwai |
d3ecfd |
1 file changed, 6 insertions(+)
|
|
Takashi Iwai |
d3ecfd |
|
|
Takashi Iwai |
d3ecfd |
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
|
|
Takashi Iwai |
d3ecfd |
index 81b2db0edd5f..56d0878e4999 100644
|
|
Takashi Iwai |
d3ecfd |
--- a/sound/usb/mixer.c
|
|
Takashi Iwai |
d3ecfd |
+++ b/sound/usb/mixer.c
|
|
Takashi Iwai |
d3ecfd |
@@ -901,6 +901,12 @@ static int parse_term_effect_unit(struct mixer_build *state,
|
|
Takashi Iwai |
d3ecfd |
struct usb_audio_term *term,
|
|
Takashi Iwai |
d3ecfd |
void *p1, int id)
|
|
Takashi Iwai |
d3ecfd |
{
|
|
Takashi Iwai |
d3ecfd |
+ struct uac2_effect_unit_descriptor *d = p1;
|
|
Takashi Iwai |
d3ecfd |
+ int err;
|
|
Takashi Iwai |
d3ecfd |
+
|
|
Takashi Iwai |
d3ecfd |
+ err = __check_input_term(state, d->bSourceID, term);
|
|
Takashi Iwai |
d3ecfd |
+ if (err < 0)
|
|
Takashi Iwai |
d3ecfd |
+ return err;
|
|
Takashi Iwai |
d3ecfd |
term->type = UAC3_EFFECT_UNIT << 16; /* virtual type */
|
|
Takashi Iwai |
d3ecfd |
term->id = id;
|
|
Takashi Iwai |
d3ecfd |
return 0;
|
|
Takashi Iwai |
d3ecfd |
--
|
|
Takashi Iwai |
d3ecfd |
2.16.4
|
|
Takashi Iwai |
d3ecfd |
|