This patch fixes the issue with HPET on some platforms.

According to Vojtech Pavlik:

The first write after writing TN_SETVAL to the config register sets the
counter value, the second write sets the threshold.

When you only do the first write you never set the threshold and
interrupts won't be generated properly.

Thanks to John Stultz and Andrew Walrond for reporting, root causing 
the issue and verifying this fix.

Signed-off-by: Venkatesh Pallipadi <[EMAIL PROTECTED]>


--- linux-2.6.10/arch/i386/kernel/time_hpet.c.org       2005-02-04 
12:04:09.000000000 -0800
+++ linux-2.6.10/arch/i386/kernel/time_hpet.c   2005-02-04 18:01:25.000000000 
-0800
@@ -81,6 +81,11 @@ static int hpet_timer_stop_set_go(unsign
        cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC |
               HPET_TN_SETVAL | HPET_TN_32BIT;
        hpet_writel(cfg, HPET_T0_CFG);
+       /* 
+        * Some systems seems to need two writes to HPET_T0_CMP, 
+        * to get interrupts working
+        */
+       hpet_writel(tick, HPET_T0_CMP);
        hpet_writel(tick, HPET_T0_CMP);
 
        /*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to