linux/sound/pci
Karsten Wiese 4f550df58f [ALSA] Reduce interrupt latency in sound/pci/via82xx.c
Modules: VIA82xx driver

The change only affects the via823x kind of chips.
Here the  via8233_pcm_pointer_hw() function
(named snd_via8233_pcm_pointer() before)
needed to loop until a non zero position is red from the chip.

Measurements have shown that more than 200 loops are typically needed on
an Athlon64.
As io-reads cost many cycles, those loops sum up huge.
via8233_pcm_pointer_hw() runs either in interrupt or with interrupts
disabled. So it introduces significant interrupt latency.

The patch introduces a calculated position value hwptr_done,
that is updated by the interrupt routine when a period is completed.
It is only used, if the 823x chip returns a zero position, which can't
be interpreted reliably.

Further optimisation is applied on the 8233 chip's interrupt routine:
Only the SGD_SHADOW is read, as it contains all infos needed.
We ommit ~5 more register reads that way.

Signed-off-by: Karsten Wiese <annabellesgarden@yahoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2005-11-04 13:19:00 +01:00
..
ac97 [ALSA] Remove snd_runtime_check() macro 2005-11-04 13:17:42 +01:00
ali5451 [ALSA] dev_class=SNDRV_PCM_CLASS_MODEM for modem PCMs 2005-11-04 13:16:56 +01:00
au88x0 [ALSA] au88x0: codec access procs for multiple AC97 codecs 2005-11-04 13:16:24 +01:00
ca0106 [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
cs46xx [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
emu10k1 [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
hda [ALSA] hda-codec - Get subsystem ID from AFG/MFG 2005-11-04 13:18:29 +01:00
ice1712 [ALSA] Add support of high-rate SPDIF output 2005-11-04 13:18:37 +01:00
korg1212 [ALSA] korg1212: fix typo 2005-10-07 14:46:33 +02:00
mixart [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
nm256 [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
rme9652 [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
trident [ALSA] Remove snd_runtime_check() macro 2005-11-04 13:17:42 +01:00
vx222 [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
ymfpci [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
Kconfig [ALSA] sound: align device drivers menus 2005-11-04 13:17:08 +01:00
Makefile [ALSA] ad1889: add AD1889 driver 2005-09-12 10:40:17 +02:00
ad1889.c [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
ad1889.h [ALSA] ad1889: add AD1889 driver 2005-09-12 10:40:17 +02:00
als4000.c [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
atiixp.c [ALSA] Add dummy obsoleted module options for backward compatibility 2005-11-04 13:17:28 +01:00
atiixp_modem.c [ALSA] Add dummy obsoleted module options for backward compatibility 2005-11-04 13:17:28 +01:00
azt3328.c [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
azt3328.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bt87x.c [PATCH] pci_ids: macros: replace partial with whole symbols 2005-10-28 15:36:59 -07:00
cmipci.c [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
cs4281.c [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
ens1370.c [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
ens1371.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
es1938.c [ALSA] es1938 - Clean up and fix trigger in PM 2005-11-04 13:18:23 +01:00
es1968.c [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
fm801.c [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
intel8x0.c [ALSA] intel8x0 - enable ac97_quirk hp_only for Acer Aspire 3003LCi 2005-11-04 13:17:35 +01:00
intel8x0m.c [ALSA] Sasha Khapyorsky: My email address is changed, there is update. 2005-11-04 13:17:40 +01:00
maestro3.c [ALSA] set owner field in struct pci_driver 2005-09-12 11:12:34 +02:00
rme32.c [PATCH] add PCI IDs so RME32 and RME96 drivers build 2005-09-14 14:34:17 -07:00
rme96.c [PATCH] add PCI IDs so RME32 and RME96 drivers build 2005-09-14 14:34:17 -07:00
sonicvibes.c [ALSA] Remove vmalloc wrapper, kfree_nocheck() 2005-11-04 13:18:00 +01:00
via82xx.c [ALSA] Reduce interrupt latency in sound/pci/via82xx.c 2005-11-04 13:19:00 +01:00
via82xx_modem.c [ALSA] Sasha Khapyorsky: My email address is changed, there is update. 2005-11-04 13:17:40 +01:00