ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue
[ Upstream commit bf990c1023
]
For Hamedal C20, the current rate is different from the runtime rate,
snd_usb_endpoint stop and close endpoint to resetting rate.
if snd_usb_endpoint close the endpoint, sometimes usb will
disconnect the device.
Signed-off-by: Ai Chao <aichao@kylinos.cn>
Link: https://lore.kernel.org/r/20221110063452.295110-1-aichao@kylinos.cn
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
38b09dc14f
Коммит
799970b8cc
|
@ -887,7 +887,8 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip,
|
|||
usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",
|
||||
ep->ep_num, ep->opened);
|
||||
|
||||
if (!--ep->iface_ref->opened)
|
||||
if (!--ep->iface_ref->opened &&
|
||||
!(chip->quirk_flags & QUIRK_FLAG_IFACE_SKIP_CLOSE))
|
||||
endpoint_set_interface(chip, ep, false);
|
||||
|
||||
if (!--ep->opened) {
|
||||
|
|
|
@ -1884,6 +1884,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
|
|||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
||||
DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
|
||||
QUIRK_FLAG_GENERIC_IMPLICIT_FB),
|
||||
DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */
|
||||
QUIRK_FLAG_IFACE_SKIP_CLOSE),
|
||||
|
||||
/* Vendor matches */
|
||||
VENDOR_FLG(0x045e, /* MS Lifecam */
|
||||
|
|
|
@ -169,6 +169,8 @@ extern bool snd_usb_skip_validation;
|
|||
* Apply the generic implicit feedback sync mode (same as implicit_fb=1 option)
|
||||
* QUIRK_FLAG_SKIP_IMPLICIT_FB
|
||||
* Don't apply implicit feedback sync mode
|
||||
* QUIRK_FLAG_IFACE_SKIP_CLOSE
|
||||
* Don't closed interface during setting sample rate
|
||||
*/
|
||||
|
||||
#define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0)
|
||||
|
@ -190,5 +192,6 @@ extern bool snd_usb_skip_validation;
|
|||
#define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16)
|
||||
#define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17)
|
||||
#define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18)
|
||||
#define QUIRK_FLAG_IFACE_SKIP_CLOSE (1U << 19)
|
||||
|
||||
#endif /* __USBAUDIO_H */
|
||||
|
|
Загрузка…
Ссылка в новой задаче