Example #1
0
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)));
}