mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-15 16:53:54 +08:00
ALSA: usb-audio: Avoid unnecessary interface change at EP close
We toggle USB interface at PCM prepare and reset at close. When the PCM isn't prepared, resetting again makes little sense. Check the current altset and avoid unnecessary interface reset at EP close. Link: https://lore.kernel.org/r/20221009104212.18877-2-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
556a11a082
commit
9902b303b5
@ -32,6 +32,7 @@ struct snd_usb_iface_ref {
|
||||
unsigned char iface;
|
||||
bool need_setup;
|
||||
int opened;
|
||||
int altset;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
@ -899,6 +900,9 @@ static int endpoint_set_interface(struct snd_usb_audio *chip,
|
||||
int altset = set ? ep->altsetting : 0;
|
||||
int err;
|
||||
|
||||
if (ep->iface_ref->altset == altset)
|
||||
return 0;
|
||||
|
||||
usb_audio_dbg(chip, "Setting usb interface %d:%d for EP 0x%x\n",
|
||||
ep->iface, altset, ep->ep_num);
|
||||
err = usb_set_interface(chip->dev, ep->iface, altset);
|
||||
@ -910,6 +914,7 @@ static int endpoint_set_interface(struct snd_usb_audio *chip,
|
||||
|
||||
if (chip->quirk_flags & QUIRK_FLAG_IFACE_DELAY)
|
||||
msleep(50);
|
||||
ep->iface_ref->altset = altset;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user