summaryrefslogtreecommitdiffstats
path: root/include/sound/pcm.h
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2010-08-18 14:16:54 +0200
committerTakashi Iwai <tiwai@suse.de>2010-08-18 15:18:02 +0200
commitbd76af0f87f7a1815b311bde269a3f18305b3169 (patch)
tree27f95b3e568146eed0958989f3f8d0c4eae3616b /include/sound/pcm.h
parente7cfbea9cb7a02ea29fdae5d39c9e3d09102c4d5 (diff)
downloadblackbird-op-linux-bd76af0f87f7a1815b311bde269a3f18305b3169.tar.gz
blackbird-op-linux-bd76af0f87f7a1815b311bde269a3f18305b3169.zip
ALSA: pcm midlevel code - add time check for double interrupt acknowledge
The current code in pcm_lib.c do all checks using only the position in the ring buffer. Unfortunately, where the interrupts gets delayed or merged into one, we need another timing source to check when the buffer size boundary overlaps to avoid the wrong updating of the ring buffer pointers. This code uses jiffies to check the right time window without any performance impact. Signed-off-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'include/sound/pcm.h')
-rw-r--r--include/sound/pcm.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 85f1c6bf8566..dfd9b76b1853 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -278,6 +278,7 @@ struct snd_pcm_runtime {
snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */
snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time */
unsigned long hw_ptr_jiffies; /* Time when hw_ptr is updated */
+ unsigned long hw_ptr_buffer_jiffies; /* buffer time in jiffies */
snd_pcm_sframes_t delay; /* extra delay; typically FIFO size */
/* -- HW params -- */
OpenPOWER on IntegriCloud