summaryrefslogtreecommitdiffstats
path: root/sound/pci/intel8x0.c
diff options
context:
space:
mode:
authorKarsten Wiese <annabellesgarden@yahoo.de>2005-10-18 14:31:07 +0200
committerJaroslav Kysela <perex@suse.cz>2005-11-04 13:19:00 +0100
commit4f550df58f4758ea023704b409830ad9c3b47771 (patch)
tree83f935c11032a2a4099e0996717482ddcce945ca /sound/pci/intel8x0.c
parentf0597a416dc44e3afe25090e9af9d42bad62547d (diff)
downloadop-kernel-dev-4f550df58f4758ea023704b409830ad9c3b47771.zip
op-kernel-dev-4f550df58f4758ea023704b409830ad9c3b47771.tar.gz
[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>
Diffstat (limited to 'sound/pci/intel8x0.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud