ALSA: usb-audio: Remove redundant workaround for Roland quirk
The recent fix for the delayed card registration made the current
workaround for QUIRK_AUTODETECT superfluous, since the card
registration itself is delayed until the last interface probe.
This patch drops the redundant workaround in
create_autodetect_quirks() for simplification.
Fixes: 39efc9c8a9
("ALSA: usb-audio: Fix last interface check for registration")
Link: https://bugzilla.suse.com/show_bug.cgi?id=1205111
Link: https://lore.kernel.org/r/20221108065824.14418-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
971cb608d1
commit
ea83ec5039
|
@ -376,7 +376,8 @@ static int create_auto_midi_quirk(struct snd_usb_audio *chip,
|
||||||
|
|
||||||
static int create_autodetect_quirk(struct snd_usb_audio *chip,
|
static int create_autodetect_quirk(struct snd_usb_audio *chip,
|
||||||
struct usb_interface *iface,
|
struct usb_interface *iface,
|
||||||
struct usb_driver *driver)
|
struct usb_driver *driver,
|
||||||
|
const struct snd_usb_audio_quirk *quirk)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -386,45 +387,6 @@ static int create_autodetect_quirk(struct snd_usb_audio *chip,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int create_autodetect_quirks(struct snd_usb_audio *chip,
|
|
||||||
struct usb_interface *iface,
|
|
||||||
struct usb_driver *driver,
|
|
||||||
const struct snd_usb_audio_quirk *quirk)
|
|
||||||
{
|
|
||||||
int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber;
|
|
||||||
int ifcount, ifnum, err;
|
|
||||||
|
|
||||||
err = create_autodetect_quirk(chip, iface, driver);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ALSA PCM playback/capture devices cannot be registered in two steps,
|
|
||||||
* so we have to claim the other corresponding interface here.
|
|
||||||
*/
|
|
||||||
ifcount = chip->dev->actconfig->desc.bNumInterfaces;
|
|
||||||
for (ifnum = 0; ifnum < ifcount; ifnum++) {
|
|
||||||
if (ifnum == probed_ifnum || quirk->ifnum >= 0)
|
|
||||||
continue;
|
|
||||||
iface = usb_ifnum_to_if(chip->dev, ifnum);
|
|
||||||
if (!iface ||
|
|
||||||
usb_interface_claimed(iface) ||
|
|
||||||
get_iface_desc(iface->altsetting)->bInterfaceClass !=
|
|
||||||
USB_CLASS_VENDOR_SPEC)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
err = create_autodetect_quirk(chip, iface, driver);
|
|
||||||
if (err >= 0) {
|
|
||||||
err = usb_driver_claim_interface(driver, iface,
|
|
||||||
USB_AUDIO_IFACE_UNUSED);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
|
* Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
|
||||||
* The only way to detect the sample rate is by looking at wMaxPacketSize.
|
* The only way to detect the sample rate is by looking at wMaxPacketSize.
|
||||||
|
@ -554,7 +516,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
|
||||||
static const quirk_func_t quirk_funcs[] = {
|
static const quirk_func_t quirk_funcs[] = {
|
||||||
[QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk,
|
[QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk,
|
||||||
[QUIRK_COMPOSITE] = create_composite_quirk,
|
[QUIRK_COMPOSITE] = create_composite_quirk,
|
||||||
[QUIRK_AUTODETECT] = create_autodetect_quirks,
|
[QUIRK_AUTODETECT] = create_autodetect_quirk,
|
||||||
[QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,
|
[QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,
|
||||||
[QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,
|
[QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,
|
||||||
[QUIRK_MIDI_YAMAHA] = create_any_midi_quirk,
|
[QUIRK_MIDI_YAMAHA] = create_any_midi_quirk,
|
||||||
|
|
Loading…
Reference in New Issue