[alsa-devel] Layla 3G does not recover from ACPI Suspend
I have an Echo Layla 3G in my workstation. It works for audio, but does not recover from ACPI suspend to RAM.
On recovery the system is fine, and the Layla exists in /proc/asound/cards. But when the Layla is used it prints this message to dmesg, multiple times:
wait_handshake(): Timeout waiting for DSP
Here are the relevant dmesg lines after awakening:
Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0xf (was 0x100, writing 0x104) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x4 (was 0x0, writing 0xe7d00000) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x3 (was 0x0, writing 0xc010) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x1 (was 0x2800000, writing 0x2800112) Echoaudio Echo3G 0000:03:03.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
I couldn't see anything loading the firmware. I thought unloading and loading snd-echo3g after recovery would help. This shows the firmware being loaded, but then no ALSA device is shown in /proc/asound/cards. On loading snd-echo3g:
Echoaudio Echo3G 0000:03:03.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 Echoaudio Echo3G 0000:03:03.0: firmware: requesting ea/echo3g_dsp.fw Echoaudio Echo3G 0000:03:03.0: firmware: requesting ea/loader_dsp.fw Echoaudio Echo3G 0000:03:03.0: PCI INT A disabled Echoaudio Echo3G: probe of 0000:03:03.0 failed with error -5
Is the firmware not being loaded when it should be? Or is there some extra initialisation not being done (eg. init_hw() in echo3g_dsp.c)?
All other devices in the system recover fine, but as far as I'm aware no other PCI devices require firmware. It's a Dell x86 system, kernel 2.6.31-rc7.
Thanks for any help,
At Sun, 6 Sep 2009 15:16:57 +0100 (BST), Mark Hills wrote:
I have an Echo Layla 3G in my workstation. It works for audio, but does not recover from ACPI suspend to RAM.
On recovery the system is fine, and the Layla exists in /proc/asound/cards. But when the Layla is used it prints this message to dmesg, multiple times:
wait_handshake(): Timeout waiting for DSP
Here are the relevant dmesg lines after awakening:
Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0xf (was 0x100, writing 0x104) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x4 (was 0x0, writing 0xe7d00000) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x3 (was 0x0, writing 0xc010) Echoaudio Echo3G 0000:03:03.0: restoring config space at offset 0x1 (was 0x2800000, writing 0x2800112) Echoaudio Echo3G 0000:03:03.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
I couldn't see anything loading the firmware. I thought unloading and loading snd-echo3g after recovery would help. This shows the firmware being loaded, but then no ALSA device is shown in /proc/asound/cards. On loading snd-echo3g:
Echoaudio Echo3G 0000:03:03.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 Echoaudio Echo3G 0000:03:03.0: firmware: requesting ea/echo3g_dsp.fw Echoaudio Echo3G 0000:03:03.0: firmware: requesting ea/loader_dsp.fw Echoaudio Echo3G 0000:03:03.0: PCI INT A disabled Echoaudio Echo3G: probe of 0000:03:03.0 failed with error -5
Is the firmware not being loaded when it should be? Or is there some extra initialisation not being done (eg. init_hw() in echo3g_dsp.c)?
This driver doesn't support PM at all. So, this behavior is expected. Try to unload at suspend and reload at resume by some script.
Takashi
On Sun, 6 Sep 2009 15:16:57 +0100 (BST) Mark Hills mark@pogo.org.uk wrote:
I have an Echo Layla 3G in my workstation. It works for audio, but does not recover from ACPI suspend to RAM.
I does not recover because there is not suspend/resume support. I wrote almost complete support a lot of time ago which wasn't merged due to two unsolved issues. The resurrection procedure (actually it is a reinit from scratch) was very unreliable on my Gina24 for unknown reasons and there was an atomicity issue in the rawmidi interface. I can manage to provide you a patch for testing in a few days.
-- Giuliano.
On Tue, 8 Sep 2009, Giuliano Pochini wrote:
On Sun, 6 Sep 2009 15:16:57 +0100 (BST) Mark Hills mark@pogo.org.uk wrote:
I have an Echo Layla 3G in my workstation. It works for audio, but does not recover from ACPI suspend to RAM.
I does not recover because there is not suspend/resume support. I wrote almost complete support a lot of time ago which wasn't merged due to two unsolved issues. The resurrection procedure (actually it is a reinit from scratch) was very unreliable on my Gina24 for unknown reasons and there was an atomicity issue in the rawmidi interface. I can manage to provide you a patch for testing in a few days.
Thanks Giuliano and Takashi for the replies.
The reason for my quietness is I decided loading/unloading the module was a hack so I followed Takashi's documentation, aiming to implement some kind of suspend/resume.
However didn't have a great deal of luck; it's made especially hard with not having a separate serial console or way of viewing debug messages when the machine locks. It seemed that the amount of de-initialisation affects the ability to reinitialise the Layla 3G card from scratch. Then I ran out of time.
It would be great to see the patch, I'd be very happy to help with testing. Thanks for your work on this.
participants (3)
-
Giuliano Pochini
-
Mark Hills
-
Takashi Iwai