]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/clocksource/scx200_hrt.c
Merge tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl...
[mv-sheeva.git] / drivers / clocksource / scx200_hrt.c
index e4e4a04ab23f09e323db81926d1919d013727ffb..64f9e829443405e86bfdf154db3bceb53791d766 100644 (file)
@@ -49,9 +49,6 @@ static cycle_t read_hrt(struct clocksource *cs)
        return (cycle_t) inl(scx200_cb_base + SCx200_TIMER_OFFSET);
 }
 
-#define HRT_SHIFT_1    22
-#define HRT_SHIFT_27   26
-
 static struct clocksource cs_hrt = {
        .name           = "scx200_hrt",
        .rating         = 250,
@@ -63,6 +60,7 @@ static struct clocksource cs_hrt = {
 
 static int __init init_hrt_clocksource(void)
 {
+       u32 freq;
        /* Make sure scx200 has initialized the configuration block */
        if (!scx200_cb_present())
                return -ENODEV;
@@ -79,19 +77,13 @@ static int __init init_hrt_clocksource(void)
        outb(HR_TMEN | (mhz27 ? HR_TMCLKSEL : 0),
             scx200_cb_base + SCx200_TMCNFG_OFFSET);
 
-       if (mhz27) {
-               cs_hrt.shift = HRT_SHIFT_27;
-               cs_hrt.mult = clocksource_hz2mult((HRT_FREQ + ppm) * 27,
-                                                 cs_hrt.shift);
-       } else {
-               cs_hrt.shift = HRT_SHIFT_1;
-               cs_hrt.mult = clocksource_hz2mult(HRT_FREQ + ppm,
-                                                 cs_hrt.shift);
-       }
-       pr_info("enabling scx200 high-res timer (%s MHz +%d ppm)\n",
-               mhz27 ? "27":"1", ppm);
+       freq = (HRT_FREQ + ppm);
+       if (mhz27)
+               freq *= 27;
+
+       pr_info("enabling scx200 high-res timer (%s MHz +%d ppm)\n", mhz27 ? "27":"1", ppm);
 
-       return clocksource_register(&cs_hrt);
+       return clocksource_register_hz(&cs_hrt, freq);
 }
 
 module_init(init_hrt_clocksource);