* [PATCH] ALSA: usb-audio: Disable autosuspend for Lenovo ThinkStation P620
@ 2020-08-23 10:58 Kai-Heng Feng
2020-08-24 6:29 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Kai-Heng Feng @ 2020-08-23 10:58 UTC (permalink / raw)
To: tiwai
Cc: Kai-Heng Feng, Jaroslav Kysela, Hector Martin, Alexander Tsoy,
Hui Wang, Dmitry Panchenko, František Kučera,
Gregor Pintar, Jussi Laako, Nick Kossifidis, Chris Wulff,
Jesus Ramos, moderated list:SOUND, open list
If USB autosuspend is enabled, both front and rear panel can no longer
detect jack insertion.
Enable USB remote wakeup, i.e. needs_remote_wakeup = 1, doesn't help
either.
So disable USB autosuspend to prevent missing jack detection event.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
sound/usb/quirks-table.h | 18 ++++++++++++++----
sound/usb/quirks.c | 10 ++++++++++
sound/usb/usbaudio.h | 1 +
3 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index f4fb002e3ef4..416de71c6895 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -2827,14 +2827,24 @@ YAMAHA_DEVICE(0x7010, "UB99"),
/* Lenovo ThinkStation P620 Rear Line-in, Line-out and Microphone */
{
USB_DEVICE(0x17aa, 0x1046),
- QUIRK_DEVICE_PROFILE("Lenovo", "ThinkStation P620 Rear",
- "Lenovo-ThinkStation-P620-Rear"),
+ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+ .vendor_name = "Lenovo",
+ .product_name = "ThinkStation P620 Rear",
+ .profile_name = "Lenovo-ThinkStation-P620-Rear",
+ .ifnum = QUIRK_ANY_INTERFACE,
+ .type = QUIRK_SETUP_DISABLE_AUTOSUSPEND
+ }
},
/* Lenovo ThinkStation P620 Internal Speaker + Front Headset */
{
USB_DEVICE(0x17aa, 0x104d),
- QUIRK_DEVICE_PROFILE("Lenovo", "ThinkStation P620 Main",
- "Lenovo-ThinkStation-P620-Main"),
+ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+ .vendor_name = "Lenovo",
+ .product_name = "ThinkStation P620 Main",
+ .profile_name = "Lenovo-ThinkStation-P620-Main",
+ .ifnum = QUIRK_ANY_INTERFACE,
+ .type = QUIRK_SETUP_DISABLE_AUTOSUSPEND
+ }
},
/* Native Instruments MK2 series */
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index abf99b814a0f..b800fd92106c 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -518,6 +518,15 @@ static int setup_fmt_after_resume_quirk(struct snd_usb_audio *chip,
return 1; /* Continue with creating streams and mixer */
}
+static int setup_disable_autosuspend(struct snd_usb_audio *chip,
+ struct usb_interface *iface,
+ struct usb_driver *driver,
+ const struct snd_usb_audio_quirk *quirk)
+{
+ driver->supports_autosuspend = 0;
+ return 1; /* Continue with creating streams and mixer */
+}
+
/*
* audio-interface quirks
*
@@ -557,6 +566,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
[QUIRK_AUDIO_ALIGN_TRANSFER] = create_align_transfer_quirk,
[QUIRK_AUDIO_STANDARD_MIXER] = create_standard_mixer_quirk,
[QUIRK_SETUP_FMT_AFTER_RESUME] = setup_fmt_after_resume_quirk,
+ [QUIRK_SETUP_DISABLE_AUTOSUSPEND] = setup_disable_autosuspend,
};
if (quirk->type < QUIRK_TYPE_COUNT) {
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index b91c4c0807ec..6839915a0128 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -102,6 +102,7 @@ enum quirk_type {
QUIRK_AUDIO_ALIGN_TRANSFER,
QUIRK_AUDIO_STANDARD_MIXER,
QUIRK_SETUP_FMT_AFTER_RESUME,
+ QUIRK_SETUP_DISABLE_AUTOSUSPEND,
QUIRK_TYPE_COUNT
};
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ALSA: usb-audio: Disable autosuspend for Lenovo ThinkStation P620
2020-08-23 10:58 [PATCH] ALSA: usb-audio: Disable autosuspend for Lenovo ThinkStation P620 Kai-Heng Feng
@ 2020-08-24 6:29 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2020-08-24 6:29 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: tiwai, Jaroslav Kysela, Hector Martin, Alexander Tsoy, Hui Wang,
Dmitry Panchenko, František Kučera, Gregor Pintar,
Jussi Laako, Nick Kossifidis, Chris Wulff, Jesus Ramos,
moderated list:SOUND, open list
On Sun, 23 Aug 2020 12:58:50 +0200,
Kai-Heng Feng wrote:
>
> If USB autosuspend is enabled, both front and rear panel can no longer
> detect jack insertion.
>
> Enable USB remote wakeup, i.e. needs_remote_wakeup = 1, doesn't help
> either.
>
> So disable USB autosuspend to prevent missing jack detection event.
>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Thanks, applied.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-08-24 6:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-23 10:58 [PATCH] ALSA: usb-audio: Disable autosuspend for Lenovo ThinkStation P620 Kai-Heng Feng
2020-08-24 6:29 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).