aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2005-10-19 08:39:48 -0400
committerJaroslav Kysela <perex@suse.cz>2005-11-04 07:19:09 -0500
commitd44c39acafff98590b9bcdecb44dbbc3f7714b4a (patch)
treeed837bc08cc371796cdd429047fb9300dd4177dd /sound
parent87ef7779be825c187747b6b39a24d5326d610c53 (diff)
[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>
Diffstat (limited to 'sound')
-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)
1851 unsigned int count; 1851 unsigned int count;
1852 1852
1853 chip = snd_timer_chip(timer); 1853 chip = snd_timer_chip(timer);
1854 count = timer->sticks - 1; 1854 count = (timer->sticks << 1) - 1;
1855 if (count == 0) /* minimum time is 20.8 us */
1856 count = 1;
1857 spin_lock_irqsave(&chip->reg_lock, flags); 1855 spin_lock_irqsave(&chip->reg_lock, flags);
1858 snd_ymfpci_writew(chip, YDSXGR_TIMERCOUNT, count); 1856 snd_ymfpci_writew(chip, YDSXGR_TIMERCOUNT, count);
1859 snd_ymfpci_writeb(chip, YDSXGR_TIMERCTRL, 0x03); 1857 snd_ymfpci_writeb(chip, YDSXGR_TIMERCTRL, 0x03);
@@ -1877,14 +1875,14 @@ static int snd_ymfpci_timer_precise_resolution(snd_timer_t *timer,
1877 unsigned long *num, unsigned long *den) 1875 unsigned long *num, unsigned long *den)
1878{ 1876{
1879 *num = 1; 1877 *num = 1;
1880 *den = 96000; 1878 *den = 48000;
1881 return 0; 1879 return 0;
1882} 1880}
1883 1881
1884static struct _snd_timer_hardware snd_ymfpci_timer_hw = { 1882static struct _snd_timer_hardware snd_ymfpci_timer_hw = {
1885 .flags = SNDRV_TIMER_HW_AUTO, 1883 .flags = SNDRV_TIMER_HW_AUTO,
1886 .resolution = 10417, /* 1/2fs = 10.41666...us */ 1884 .resolution = 20833, /* 1/fs = 20.8333...us */
1887 .ticks = 65536, 1885 .ticks = 0x8000,
1888 .start = snd_ymfpci_timer_start, 1886 .start = snd_ymfpci_timer_start,
1889 .stop = snd_ymfpci_timer_stop, 1887 .stop = snd_ymfpci_timer_stop,
1890 .precise_resolution = snd_ymfpci_timer_precise_resolution, 1888 .precise_resolution = snd_ymfpci_timer_precise_resolution,