Re: [alsa-devel] no reset_resume for driver snd-usb-audio for logitech headset H600
On Tue, 8 Oct 2013 baumber@hotmail.com wrote:
Hello,
please help me with the bug for my Logitech Headset;
https://bugzilla.kernel.org/show_bug.cgi?id=62691
Bug ID: 62691 Summary: no reset_resume for driver snd-usb-audio for logitech headset H600
Thank you
Best regards, Bernhard
Actually this should be brought to the attention of the ALSA developers (CC'ed). They are the people in charge of the snd-usb-audio driver.
Alan Stern
At Tue, 8 Oct 2013 13:38:26 -0400 (EDT), Alan Stern wrote:
On Tue, 8 Oct 2013 baumber@hotmail.com wrote:
Hello,
please help me with the bug for my Logitech Headset;
https://bugzilla.kernel.org/show_bug.cgi?id=62691
Bug ID: 62691 Summary: no reset_resume for driver snd-usb-audio for logitech headset H600
Thank you
Best regards, Bernhard
Actually this should be brought to the attention of the ALSA developers (CC'ed). They are the people in charge of the snd-usb-audio driver.
How about simply applying the same resume for reset_resume like below?
Takashi
---
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume, + .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1, };
Takashi Iwai wrote:
On Tue, 8 Oct 2013 baumber@hotmail.com wrote:
https://bugzilla.kernel.org/show_bug.cgi?id=62691
Summary: no reset_resume for driver snd-usb-audio for logitech headset H600
How about simply applying the same resume for reset_resume like below?
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1,
};
When the device was reset, the state of all mixer controls has been lost. Disconnecting the card (the default behaviour without reset_resume) is the correct thing to do in this situation.
Userspace should pick up the USB device again when it reappears. (But it doesn't. Is this a PulseAudio or a KDE problem?)
And why does the kernel whine about the lack of a callback that is documented as being optional?
Regards, Clemens
At Wed, 09 Oct 2013 10:41:57 +0200, Clemens Ladisch wrote:
Takashi Iwai wrote:
On Tue, 8 Oct 2013 baumber@hotmail.com wrote:
https://bugzilla.kernel.org/show_bug.cgi?id=62691
Summary: no reset_resume for driver snd-usb-audio for logitech headset H600
How about simply applying the same resume for reset_resume like below?
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1,
};
When the device was reset, the state of all mixer controls has been lost. Disconnecting the card (the default behaviour without reset_resume) is the correct thing to do in this situation.
Ah, I somehow thought we resume the mixer control values as well (as they are cached in the driver). So it's possible to resume these in reset_resume case, in theory, too.
But, not all stuff has been cached, e.g. the quirk stuff may be handled exceptionally.
Userspace should pick up the USB device again when it reappears. (But it doesn't. Is this a PulseAudio or a KDE problem?)
PulseAudio shows the problem, AFAIK. IIRC, it's a bit tricky to achieve this because it can be other
And why does the kernel whine about the lack of a callback that is documented as being optional?
Indeed...
Takashi
At Wed, 09 Oct 2013 11:13:44 +0200, Takashi Iwai wrote:
At Wed, 09 Oct 2013 10:41:57 +0200, Clemens Ladisch wrote:
Takashi Iwai wrote:
On Tue, 8 Oct 2013 baumber@hotmail.com wrote:
https://bugzilla.kernel.org/show_bug.cgi?id=62691
Summary: no reset_resume for driver snd-usb-audio for logitech headset H600
How about simply applying the same resume for reset_resume like below?
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1,
};
When the device was reset, the state of all mixer controls has been lost. Disconnecting the card (the default behaviour without reset_resume) is the correct thing to do in this situation.
Ah, I somehow thought we resume the mixer control values as well (as they are cached in the driver). So it's possible to resume these in reset_resume case, in theory, too.
But, not all stuff has been cached, e.g. the quirk stuff may be handled exceptionally.
Userspace should pick up the USB device again when it reappears. (But it doesn't. Is this a PulseAudio or a KDE problem?)
PulseAudio shows the problem, AFAIK. IIRC, it's a bit tricky to achieve this because it can be other
[oops, pushed the send button wrongly] ... usb device, not necessarily the very same device at suspend time.
Takashi
On 2013-10-09 11:16 (CEST,UTC+2), Takashi Iwai wrote:
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1, };
Shall I add the line in b/sound/usb/card.c and try it? Which kernel version shall I use?
+ .reset_resume = usb_audio_resume,
Do you need further debugging information?
Thanks, Bernhard
At Sun, 20 Oct 2013 23:18:13 +0200, baumber@hotmail.com wrote:
On 2013-10-09 11:16 (CEST,UTC+2), Takashi Iwai wrote:
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1, };
Shall I add the line in b/sound/usb/card.c and try it? Which kernel version shall I use?
It doesn't matter which kernel version is. The error message should disappear, but I don't know whether any other positive effect you get. As Clemens pointed, there can be some negative effects by this, so it cannot be taken as is. But at least, it'd be good to know the result...
thanks,
Takashi
- .reset_resume = usb_audio_resume,
Do you need further debugging information?
Thanks, Bernhard
On 2013-10-20 23:35, Takashi Iwai wrote:
At Sun, 20 Oct 2013 23:18:13 +0200, baumber@hotmail.com wrote:
On 2013-10-09 11:16 (CEST,UTC+2), Takashi Iwai wrote:
diff --git a/sound/usb/card.c b/sound/usb/card.c index 9d9de8d..c591a83 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -747,6 +747,7 @@ static struct usb_driver usb_audio_driver = { .disconnect = usb_audio_disconnect, .suspend = usb_audio_suspend, .resume = usb_audio_resume,
- .reset_resume = usb_audio_resume, .id_table = usb_audio_ids, .supports_autosuspend = 1, };
Shall I add the line in b/sound/usb/card.c and try it? Which kernel version shall I use?
It doesn't matter which kernel version is. The error message should disappear, but I don't know whether any other positive effect you get. As Clemens pointed, there can be some negative effects by this, so it cannot be taken as is. But at least, it'd be good to know the result...
thanks,
Takashi
I have tested the patch with kernel 3.12.0 with suspend and hibernate, and the problem is gone.
No messages "no reset_resume for driver snd-usb-audio?" or other negative effects/messages.
After resume, the usb_audio_device (Headset) is the master channel in KDE Mixer, as it should be.
=> So the problem is solved for me.
Can you please add the patch to the latest kernels and LTS-kernels or whitelist the workaround for my device (ID 046d:0a29 Logitech, Inc. H600 [Wireless Headset])
Thanks, Bernhard
On Wed, 9 Oct 2013, Clemens Ladisch wrote:
And why does the kernel whine about the lack of a callback that is documented as being optional?
It might indeed be a good idea to change that dev_warn() statement to dev_dbg(). On the other hand, without that message this particular failure might have been harder to diagnose.
Does anybody have strong feelings either way?
Alan Stern
participants (4)
-
Alan Stern
-
baumber@hotmail.com
-
Clemens Ladisch
-
Takashi Iwai