mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
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 Signed-off-by: Sebastian Dalfuß <sd@sedf.de> Link: https://patch.msgid.link/apwG4DRfNyvmRzyb@sedf.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
12cba0ce11
commit
45b5beb60b
|
|
@ -849,6 +849,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
|
||||
|
|
@ -1681,6 +1702,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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user