ALSA: usb-audio: Add boot quirk for Behringer CM1A
PATCH 1/1 ALSA: usb-audio: Add boot quirk for Behringer CM1A
After a power cycle and reenumeration, the Behringer CM1A* leaves its MIDI endpoint inoperative. USB enumeration and driver binding complete successfully, but MIDI outputs remain pending.
A GET_DESCRIPTOR request for the device descriptor, issued after USB configuration, makes the endpoint operational. Add a one time boot quirk to perform that request before ALSA initializes the device.
*
ID 1397:1234 BEHRINGER International GmbH CM1A
--- sound/usb/quirks.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
sound/usb/quirks.c +23 -0
@@ -850,6 +850,27 @@ static int snd_usb_accessmusic_boot_quirk(struct usb_device *dev)return 0 ; } +/* +* A post configuration device descriptor read is needed to make the CM1A +* operational after reenumeration. +*/ +static int snd_usb_cm1a_boot_quirk (struct usb_device *dev) +{ + struct usb_device_descriptor *desc __free(kfree) = kmalloc_obj(*desc); +int err; + +if (!desc) +return -ENOMEM ; + + err =usb_get_descriptor (dev,USB_DT_DEVICE ,0 , desc,sizeof (*desc)); +if (err <0 ) { +dev_err (&dev->dev,"failed to read device descriptor: %d\n" , err); +return err; + } + +return 0 ; +} +/* * Some sound cards from Native Instruments are in fact compliant to the USB * audio standard of version 2 and other approved USB standards, even though
@@ -1682,6 +1703,8 @@ int snd_usb_apply_boot_quirk_once(struct usb_device *dev,switch (id) {case USB_ID (0x07fd ,0x0008 ):/* MOTU M Series, 1st hardware version */ return snd_usb_motu_m_series_boot_quirk (dev); +case USB_ID (0x1397 ,0x1234 ):/* Behringer CM1A */ +return snd_usb_cm1a_boot_quirk (dev); }return 0 ;
base-commit: 4c4e4be4edd5dbf5f7f6a3ef4fc0c243f2d01b3c
Signature · 1 line
2.53.0
Quoted 5 lines · Sebastian Dalfuß
After a power cycle and reenumeration, the Behringer CM1A* leaves its MIDI endpoint inoperative. USB enumeration and driver binding complete successfully, but MIDI outputs remain pending.
Quoted 8 lines
A
GET_DESCRIPTORrequest for the device descriptor, issued after USB configuration, makes the endpoint operational. Add a one time boot quirk to perform that request before ALSA initializes the device.*
ID 1397:1234 BEHRINGER International GmbH CM1ASigned-off-by Sebastian Dalfuß <[email protected]>
Applied now. Thanks.
Takashi