void sec_debug_print_gptimer_reg(void) { printk("%s: gptimer-clockevent\n",__func__); printk("load reg: 0x%x\n",__raw_readl(TIMER_LOAD(0,0))); printk("value reg: 0x%x\n",__raw_readl(TIMER_VALUE(0,0))); printk("control reg: 0x%x\n",__raw_readl(TIMER_CTL(0,0))); printk("interrupt reg: 0x%x\n",__raw_readl(TIMER_INT(0,0))); printk("%s: gptimer-clocksource\n",__func__); printk("load reg: 0x%x\n",__raw_readl(TIMER_LOAD(0,2))); printk("value reg: 0x%x\n",__raw_readl(TIMER_VALUE(0,2))); printk("control reg: 0x%x\n",__raw_readl(TIMER_CTL(0,2))); printk("interrupt reg: 0x%x\n",__raw_readl(TIMER_INT(0,2))); }
/* ****************************************************************** */ static void __gptimer_clocksource_init(const char *name, unsigned long hz) { /* disalbe irq since it's just a read source */ __raw_writel(0, TIMER_INT(SOURCE_TIMER)); __gptimer_ctl(SOURCE_TIMER, TIMER_DISABLE, PERIOD_MODE); __raw_writel(ULONG_MAX, TIMER_LOAD(SOURCE_TIMER)); __gptimer_ctl(SOURCE_TIMER, TIMER_ENABLE, PERIOD_MODE); clocksource_mmio_init(TIMER_VALUE(SOURCE_TIMER), name, hz, 300, 32, clocksource_mmio_readl_down); }
static cycle_t __gptimer_read(struct clocksource *cs) { return ~(readl_relaxed(TIMER_VALUE(SOURCE_TIMER))); }