/* nothing really to do with interrupts, just starts up a counter. The 32KHz 32-bit timer overruns in 134217 seconds  */
int timer_init(void)
/* nothing really to do with interrupts, just starts up a counter. The 32KHz 32-bit timer overruns in 134217 seconds  */
int timer_init(void)
{
	int i;
	struct gpt_regs *gpt = (struct gpt_regs *)GPT1_BASE_ADDR;
	struct ccm_regs *ccm = (struct ccm_regs *)CCM_BASE_ADDR;
	writel(GPTCR_SWR, &gpt->ctrl);
	writel(readl(&ccm->cgr1) | 3 << MXC_CCM_CGR1_GPT_OFFSET, &ccm->cgr1);
	for (i = 0; i < 100; i++)
		writel(0, &gpt->ctrl);
	writel(0, &gpt->pre);
	writel(readl(&gpt->ctrl) | GPTCR_CLKSOURCE_32 | GPTCR_FRR,
			&gpt->ctrl);
	writel(readl(&gpt->ctrl) | GPTCR_TEN, &gpt->ctrl);
	return 0;
}