summaryrefslogtreecommitdiffstats
path: root/sound/drivers/pcsp/pcsp.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-08-11 10:18:39 +0200
committerTakashi Iwai <tiwai@suse.de>2008-10-20 14:47:15 +0200
commit96c7d478efad594e483ee8a826395b1342404885 (patch)
tree8ecb6f20f1f72f9d406b3c949d9b811347dcbb3e /sound/drivers/pcsp/pcsp.h
parent76a4d10e522bfc238ddf70f35272088d420d2dcf (diff)
downloadlinux-96c7d478efad594e483ee8a826395b1342404885.tar.gz
linux-96c7d478efad594e483ee8a826395b1342404885.tar.bz2
linux-96c7d478efad594e483ee8a826395b1342404885.zip
ALSA: pcsp - Fix locking messes in snd-pcsp
snd-pcsp driver takes chip->substream_lock together with PCM substream lock. These are even mixed up with hrtimer's lock, resulting in messy lock depencies. Right now, snd-pcsp driver resolves the deadlock by using HRTIMER_CB_SOFTIRQ. However, this isn't nice for a really fast path like bit-flipping. This patch introduces a tasklet for PCM period handling so that the hrtimer callback can be handled fast. This also reduce the use of chip->substream_lock to avoid deadlocks. It's still used in pointer callback, but even this could be removed with a proper barrier. Another good solution is to introduce async trigger callback. But, this will involve with a major rewrite of the PCM core code, so I take first this easy fix. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/drivers/pcsp/pcsp.h')
-rw-r--r--sound/drivers/pcsp/pcsp.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/drivers/pcsp/pcsp.h b/sound/drivers/pcsp/pcsp.h
index 1d661f795e8c..70533a333b5b 100644
--- a/sound/drivers/pcsp/pcsp.h
+++ b/sound/drivers/pcsp/pcsp.h
@@ -77,6 +77,7 @@ struct snd_pcsp {
extern struct snd_pcsp pcsp_chip;
extern enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle);
+extern void pcsp_sync_stop(struct snd_pcsp *chip);
extern int snd_pcsp_new_pcm(struct snd_pcsp *chip);
extern int snd_pcsp_new_mixer(struct snd_pcsp *chip);