summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2005-10-19 14:39:48 +0200
committerJaroslav Kysela <perex@suse.cz>2005-11-04 13:19:09 +0100
commitd44c39acafff98590b9bcdecb44dbbc3f7714b4a (patch)
treeed837bc08cc371796cdd429047fb9300dd4177dd
parent87ef7779be825c187747b6b39a24d5326d610c53 (diff)
downloadlinux-d44c39acafff98590b9bcdecb44dbbc3f7714b4a.tar.bz2
[ALSA] ymfpci: change timer resolution to 48 kHz
Modules: YMFPCI driver We better pretend that the ymfpci timer runs at 48 kHz because the interrupt frequency cannot be higher, and clients that would try to use 96 kHz would run at half their desired speed. Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
-rw-r--r--sound/pci/ymfpci/ymfpci_main.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
index c0aaade772d4..d27f3b56b513 100644
--- a/sound/pci/ymfpci/ymfpci_main.c
+++ b/sound/pci/ymfpci/ymfpci_main.c
@@ -1851,9 +1851,7 @@ static int snd_ymfpci_timer_start(snd_timer_t *timer)
unsigned int count;
chip = snd_timer_chip(timer);
- count = timer->sticks - 1;
- if (count == 0) /* minimum time is 20.8 us */
- count = 1;
+ count = (timer->sticks << 1) - 1;
spin_lock_irqsave(&chip->reg_lock, flags);
snd_ymfpci_writew(chip, YDSXGR_TIMERCOUNT, count);
snd_ymfpci_writeb(chip, YDSXGR_TIMERCTRL, 0x03);
@@ -1877,14 +1875,14 @@ static int snd_ymfpci_timer_precise_resolution(snd_timer_t *timer,
unsigned long *num, unsigned long *den)
{
*num = 1;
- *den = 96000;
+ *den = 48000;
return 0;
}
static struct _snd_timer_hardware snd_ymfpci_timer_hw = {
.flags = SNDRV_TIMER_HW_AUTO,
- .resolution = 10417, /* 1/2fs = 10.41666...us */
- .ticks = 65536,
+ .resolution = 20833, /* 1/fs = 20.8333...us */
+ .ticks = 0x8000,
.start = snd_ymfpci_timer_start,
.stop = snd_ymfpci_timer_stop,
.precise_resolution = snd_ymfpci_timer_precise_resolution,