Ticket #1353 (closed defect: fixed)

Opened 7 years ago

Last modified 6 years ago

No sound after resume from suspend

Reported by: allen_lin@… Owned by: openmoko-kernel@…
Priority: highest Milestone:
Component: kernel Version: current svn head
Severity: critical Keywords:
Cc: buglog@…, reddog@… Blocked By:
Blocking: Estimated Completion (week):
HasPatchForReview: PatchReviewResult:
Reproducible:

Change History

comment:1 Changed 7 years ago by andy@…

Well, it sounds good we are suspending and that's all that's wrong :-)

Can you try to run

# alsactl restore

from a shell after resume and see if it allows the feedback sounds again?

comment:2 Changed 7 years ago by reddog@…

If the alsactl restore doesn't help you could test if it's the same issue we
have in the #79 bug.
To find out if it is just do the following:
"/etc/init.d/xserver-nodm stop"
"/etc/init.d/pulseaudio stop"
"/usr/bin/pulseaudio -vvvv --no-cpu-limit --resample-method=trivial -nF
/etc/pulse/session"
then on another terminal:
"/etc/init.d/xserver-nodm start"

if you can see a message like: "W: module-alsa-sink.c: Got POLLERR from ALSA" in
the pulseaudio output, it is the same issue!

comment:3 Changed 7 years ago by reddog@…

  • Cc reddog@… added

comment:4 Changed 7 years ago by graeme@…

Here is a copy of email I sent to kernel list which never got any comments.

I spent this afternoon debugging the audio resume problem that was seen
in pulse and I can confirm it is a bug.

iiscon = readl(s3c24xx_i2s.regs + S3C2410_IISCON);

in function s3c24xx_snd_lrsync always returns 0x0F and function is
waiting for 0x10F to start sound. This would normally indicate that
the L/R clock isnt functioning.

But if you change this function to just return 0 then audio will
restart after resume showing L/R clock is in fact running.

So it seems reading the register gets stuck, I dont know why. I also
don't know if this function is needed, I inherited it need to do
a whole lot of left only sample tests to tell if samsung hardware is
really broken.

comment:5 Changed 6 years ago by andy

  • Status changed from new to closed
  • Resolution set to fixed

I have a workaround based on Graeme's findings in andy branch which "fixes" this.

comment:6 Changed 6 years ago by olberger

AFAICT this also happens on 2007.2... so is it indeed considered fixed ?

comment:7 Changed 6 years ago by andy

There's another bug with pulseaudio choking on suspend -- without pulseaudio around suspend / resume and audio work fine.

comment:8 Changed 6 years ago by yarikoptic

Since others already confirmed that I am not alone I am reopening the bug (ACTUALLY I CANT -- apparently I don't have permissions... WTF?)

I am running 2008.9 with recent updates. on resume, no sound to the speaker. stop/start on pulseaudio resolves the issue until next suspend

Here is what I have installed for pulseaudio (bug report for fix doesn't include version where it got fixed thus...)
pulseaudio-lib-alsa-util - 0.9.10-r4 -
pulseaudio-lib-authkey - 0.9.10-r4 -
pulseaudio-lib-authkey-prop - 0.9.10-r4 -
pulseaudio-lib-cli - 0.9.10-r4 -
pulseaudio-lib-iochannel - 0.9.10-r4 -
pulseaudio-lib-ioline - 0.9.10-r4 -
pulseaudio-lib-ipacl - 0.9.10-r4 -
pulseaudio-lib-packet - 0.9.10-r4 -
pulseaudio-lib-pdispatch - 0.9.10-r4 -
pulseaudio-lib-protocol-cli - 0.9.10-r4 -
pulseaudio-lib-protocol-esound - 0.9.10-r4 -
pulseaudio-lib-protocol-native - 0.9.10-r4 -
pulseaudio-lib-protocol-simple - 0.9.10-r4 -
pulseaudio-lib-pstream - 0.9.10-r4 -
pulseaudio-lib-pstream-util - 0.9.10-r4 -
pulseaudio-lib-socket-server - 0.9.10-r4 -
pulseaudio-lib-socket-util - 0.9.10-r4 -
pulseaudio-lib-strlist - 0.9.10-r4 -
pulseaudio-lib-tagstruct - 0.9.10-r4 -
pulseaudio-module-alsa-sink - 0.9.10-r4 -
pulseaudio-module-alsa-source - 0.9.10-r4 -
pulseaudio-module-cli - 0.9.10-r4 -
pulseaudio-module-cli-protocol-unix - 0.9.10-r4 -
pulseaudio-module-esound-protocol-unix - 0.9.10-r4 -
pulseaudio-module-native-protocol-unix - 0.9.10-r4 -
pulseaudio-module-simple-protocol-tcp - 0.9.10-r4 -
pulseaudio-server - 0.9.10-r4 -

comment:9 Changed 6 years ago by yarikoptic

not sure if useful.

prior to suspend pulseaudio is busy with querying both
/dev/snd/pcmC0D0p and /dev/snd/timer

after resume - it doesn't care about timer anymore and just loops at pcmC0D0p according to strace:
1483 SYS_298(0x8001, 0x40ff5cfc, 0x2, 0x1000, 0x2b08000) = 0
1483 SYS_298(0x8001, 0x40ff5d62, 0x1, 0x1800, 0x4eb10) = 0
1483 ioctl(18, 0xc0844123, 0x4ed60) = 0
1483 ioctl(18, 0xc0844123, 0x4ed60) = 0
1483 ioctl(18, 0xc0844123, 0x4ed60) = 0
1483 ioctl(18, 0xc0844123, 0x4ed60) = 0
1483 ioctl(18, 0xc0844123, 0x4ed60) = 0

/proc/1482/fd/18 -> /dev/snd/pcmC0D0p

comment:10 Changed 6 years ago by yarikoptic

for now I just removed pulseaudio -- it seems it is needed only for 2007 stack and I installed openmoko-mediaplayer2 so it pulled pulseaudio in

opkg remove openmoko-mediaplayer2 openmoko-sound-system2 pulseaudio-server

Note: See TracTickets for help on using tickets.