]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-omap1/timer32k.c
Merge branch 'imx/cleanup-for-3.6' of git://git.linaro.org/people/shawnguo/linux...
[~andy/linux] / arch / arm / mach-omap1 / timer32k.c
index e3613a8bcd90c3bd1b8cbe2fc584159e3f046a8e..eae49c3980c9b22695af9a4e7e3c8db06da460ca 100644 (file)
@@ -71,6 +71,7 @@
 
 /* 16xx specific defines */
 #define OMAP1_32K_TIMER_BASE           0xfffb9000
+#define OMAP1_32KSYNC_TIMER_BASE       0xfffbc400
 #define OMAP1_32K_TIMER_CR             0x08
 #define OMAP1_32K_TIMER_TVR            0x00
 #define OMAP1_32K_TIMER_TCR            0x04
@@ -186,8 +187,22 @@ int __init omap_32k_timer_init(void)
 {
        int ret = -ENODEV;
 
-       if (cpu_is_omap16xx())
-               ret = omap_init_clocksource_32k();
+       if (cpu_is_omap16xx()) {
+               void __iomem *base;
+               struct clk *sync32k_ick;
+
+               base = ioremap(OMAP1_32KSYNC_TIMER_BASE, SZ_1K);
+               if (!base) {
+                       pr_err("32k_counter: failed to map base addr\n");
+                       return -ENODEV;
+               }
+
+               sync32k_ick = clk_get(NULL, "omap_32ksync_ick");
+               if (!IS_ERR(sync32k_ick))
+                       clk_enable(sync32k_ick);
+
+               ret = omap_init_clocksource_32k(base);
+       }
 
        if (!ret)
                omap_init_32k_timer();