19 Feb
2012
19 Feb
'12
10:49 p.m.
The Electrix Ebox-44 is a new USB interface, but the MIXER_UNIT descriptor is broken and refers to a non-existing unit_id.
I worked around it with the patch below to remove the additional entry, and the device seems to work as expected.
But inserting code here is probably not desirable -- I imagine I need to turn this into a quirk of some sort. Am I correct?
And what is the best way to do this?
* It doesn't appear I can use quirks-table.h to adjust the content of a mixer unit (the bNrInPins attribute)
* It seems that to use mixer_quirks.c would require a function to create the whole mixer
It's possible I'm incorrect on the above, though. Can anyone advise on how to make this fix in the correct way?
Many thanks
--
Mark
---
AudioControl Interface Descriptor:
bLength 15
bDescriptorType 36
bDescriptorSubtype 4 (MIXER_UNIT)
bUnitID 6
bNrInPins 3 <-- should be 2
baSourceID( 0) 5
baSourceID( 1) 4
baSourceID( 2) 2 <-- bogus entry
---
sound/usb/mixer.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 8147ffc..ab3ccca 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1387,6 +1387,9 @@ static int parse_audio_mixer_unit(struct mixer_build *state, int unitid, void *r
return 0;
}
+ if (state->chip->usb_id == USB_ID(0x200c, 0x1018) && unitid == 6)
+ input_pins = 2;
+
num_ins = 0;
ich = 0;
for (pin = 0; pin < input_pins; pin++) {
--
1.7.4.4