ALSA: intel8x0 - Fix PCM position craziness
authorTakashi Iwai <tiwai@suse.de>
Mon, 15 Jun 2009 10:31:38 +0000 (12:31 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 15 Jun 2009 10:36:06 +0000 (12:36 +0200)
commitf708eb1d71dc8ffb184da9f0bc53461c6dc10653
tree195e50b4208033255cdcd5471b4dec3cb796497a
parent07a2039b8eb0af4ff464efd3dfd95de5c02648c6
ALSA: intel8x0 - Fix PCM position craziness

The PCM pointer callback sometimes returns invalid positions and this
screws up the hw_ptr updater in PCM core.  Especially since now the
jiffies check is optional with xrun_debug, the invalid position is
handled as is, and causes serious sound skips, etc.

This patch simplifies the position-fix strategy in intel8x0 to be more
robust:
- just falls back to the last position if bogus position is detected
- another sanity check for the backward move of the position due to
  a race of register update and the base-index update

This patch is applicable also for 2.6.30.

Tested-by: David Miller <davem@davemloft.net>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/intel8x0.c