]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/m68knommu/platform/coldfire/dma_timer.c
m68knommu: add sched_clock() for the DMA timer
[linux-2.6-omap-h63xx.git] / arch / m68knommu / platform / coldfire / dma_timer.c
index b623c993219e77ec4967584d7a7916c3c6c8678f..772578b1084f8df69fa8a77d7443a1f46681f5a1 100644 (file)
@@ -66,3 +66,19 @@ static int __init  init_cf_dt_clocksource(void)
 }
 
 arch_initcall(init_cf_dt_clocksource);
+
+#define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */
+#define CYC2NS_SCALE   ((1000000 << CYC2NS_SCALE_FACTOR) / (DMA_FREQ / 1000))
+
+static unsigned long long cycles2ns(unsigned long cycl)
+{
+       return (unsigned long long) ((unsigned long long)cycl *
+                       CYC2NS_SCALE) >> CYC2NS_SCALE_FACTOR;
+}
+
+unsigned long long sched_clock(void)
+{
+       unsigned long cycl = __raw_readl(DTCN0);
+
+       return cycles2ns(cycl);
+}