aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/time.c
diff options
context:
space:
mode:
authorVojtech Pavlik <vojtech@suse.cz>2006-06-26 07:58:35 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-26 13:48:19 -0400
commitb2df3ddb68fc02e3bae78b7adaeca8561d02ea6d (patch)
tree6787e6674fc52b1b31032cfa3edcf40034bf6bf0 /arch/x86_64/kernel/time.c
parent4221133845f81ab4428c79a89e37be2c87624c1a (diff)
[PATCH] x86_64: Explain why HPET T0_CMP register is written twice
After writing the CFG register, the first value written to the T0_CMP register is the value at which next interrupt should be triggered, every value after that sets the period of the interrupt. For that reason, the code needs to write the value twice - to set both the phase and period. [AK: I had already figured it out by myself, but it's still useful to have a comment for this.] Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/time.c')
-rw-r--r--arch/x86_64/kernel/time.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
index 51afb07bc14e..ee622ac0376b 100644
--- a/arch/x86_64/kernel/time.c
+++ b/arch/x86_64/kernel/time.c
@@ -795,8 +795,8 @@ static int hpet_timer_stop_set_go(unsigned long tick)
795 if (hpet_use_timer) { 795 if (hpet_use_timer) {
796 hpet_writel(HPET_TN_ENABLE | HPET_TN_PERIODIC | HPET_TN_SETVAL | 796 hpet_writel(HPET_TN_ENABLE | HPET_TN_PERIODIC | HPET_TN_SETVAL |
797 HPET_TN_32BIT, HPET_T0_CFG); 797 HPET_TN_32BIT, HPET_T0_CFG);
798 hpet_writel(hpet_tick, HPET_T0_CMP); 798 hpet_writel(hpet_tick, HPET_T0_CMP); /* next interrupt */
799 hpet_writel(hpet_tick, HPET_T0_CMP); /* AK: why twice? */ 799 hpet_writel(hpet_tick, HPET_T0_CMP); /* period */
800 cfg |= HPET_CFG_LEGACY; 800 cfg |= HPET_CFG_LEGACY;
801 } 801 }
802/* 802/*