All of lore.kernel.org
 help / color / mirror / Atom feed
* Handling HDA FIFO error
@ 2013-05-14 17:00 Daniel Drake
  2013-05-15  9:08 ` Clemens Ladisch
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel Drake @ 2013-05-14 17:00 UTC (permalink / raw)
  To: alsa-devel

Hi,

On the OLPC XO-1.5 (VIA VX855 SoC with HDA) we sometimes see a problem
where audio playback fails. Easy to reproduce by playing a short wav
file in a loop, it will fail after a minute or two.

The playback app gets confused here: snd_pcm_wait() returns success,
but snd_pcm_writei() returns EAGAIN.

Digging into the HDA code, I can see that normally, when the stream
gets started, we get interrupts with SD_STS as 0x24. In the failure
case, as soon as we start the stream, we get a flood of interrupts
with SD_STS 0x8 - which indicates FIFO error.

Disabling interrupt generation upon FIFO error does not help much - it
avoids the flood of interrupts, but doesn't change the fact that audio
playing apps hang or loop infinitely.

I have tried the various position_fix options with no luck.

Are there any things I could check that would explain why a FIFO error
might be occurring? After a quick read of the HDA spec I don't really
understand what this FIFO actually is and what it does, how does it
relate to the BDL, CORB and RIRB?

Failing that... any suggestions for how to improve the hda_intel
driver to handle FIFO error gracefully? Right now there is no code to
handle that.

Thanks
Daniel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-05-25 14:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-14 17:00 Handling HDA FIFO error Daniel Drake
2013-05-15  9:08 ` Clemens Ladisch
2013-05-15 10:08   ` Takashi Iwai
2013-05-25 14:08     ` Daniel Drake

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.