2 #include <linux/string.h>
3 #include <linux/errno.h>
4 #include <linux/timex.h>
7 #include <asm/pgtable.h>
12 #define CYCLONE_CBAR_ADDR 0xFEB00CD0
13 #define CYCLONE_PMCC_OFFSET 0x51A0
14 #define CYCLONE_MPCS_OFFSET 0x51A8
15 #define CYCLONE_MPMC_OFFSET 0x51D0
16 #define CYCLONE_TIMER_FREQ 99780000
17 #define CYCLONE_TIMER_MASK CLOCKSOURCE_MASK(32)
20 static void __iomem *cyclone_ptr;
35 static int __init init_cyclone_clocksource(
void)
53 printk(
KERN_ERR "Summit chipset: Could not find valid CBAR register.\n");
60 printk(
KERN_ERR "Summit chipset: Could not find valid CBAR value.\n");
68 printk(
KERN_ERR "Summit chipset: Could not find valid PMCC register.\n");
78 printk(
KERN_ERR "Summit chipset: Could not find valid MPCS register.\n");
88 printk(
KERN_ERR "Summit chipset: Could not find valid MPMC register.\n");
93 for (i = 0; i < 3; i++){
100 if (
readl(cyclone_timer) == old) {
101 printk(
KERN_ERR "Summit chipset: Counter not counting! DISABLED\n");
103 cyclone_timer =
NULL;
107 cyclone_ptr = cyclone_timer;
109 return clocksource_register_hz(&clocksource_cyclone,