1*72a8ff4bSMasahiro Yamada /* 2*72a8ff4bSMasahiro Yamada * Copyright 2010-2011 Calxeda, Inc. 3*72a8ff4bSMasahiro Yamada * 4*72a8ff4bSMasahiro Yamada * Based on arm926ejs/mx27/timer.c 5*72a8ff4bSMasahiro Yamada * 6*72a8ff4bSMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 7*72a8ff4bSMasahiro Yamada */ 8*72a8ff4bSMasahiro Yamada 9*72a8ff4bSMasahiro Yamada #include <common.h> 10*72a8ff4bSMasahiro Yamada #include <asm/io.h> 11*72a8ff4bSMasahiro Yamada #include <asm/arch-armv7/systimer.h> 12*72a8ff4bSMasahiro Yamada 13*72a8ff4bSMasahiro Yamada #undef SYSTIMER_BASE 14*72a8ff4bSMasahiro Yamada #define SYSTIMER_BASE 0xFFF34000 /* Timer 0 and 1 base */ 15*72a8ff4bSMasahiro Yamada 16*72a8ff4bSMasahiro Yamada static struct systimer *systimer_base = (struct systimer *)SYSTIMER_BASE; 17*72a8ff4bSMasahiro Yamada 18*72a8ff4bSMasahiro Yamada /* 19*72a8ff4bSMasahiro Yamada * Start the timer 20*72a8ff4bSMasahiro Yamada */ timer_init(void)21*72a8ff4bSMasahiro Yamadaint timer_init(void) 22*72a8ff4bSMasahiro Yamada { 23*72a8ff4bSMasahiro Yamada /* 24*72a8ff4bSMasahiro Yamada * Setup timer0 25*72a8ff4bSMasahiro Yamada */ 26*72a8ff4bSMasahiro Yamada writel(0, &systimer_base->timer0control); 27*72a8ff4bSMasahiro Yamada writel(SYSTIMER_RELOAD, &systimer_base->timer0load); 28*72a8ff4bSMasahiro Yamada writel(SYSTIMER_RELOAD, &systimer_base->timer0value); 29*72a8ff4bSMasahiro Yamada writel(SYSTIMER_EN | SYSTIMER_32BIT | SYSTIMER_PRESC_256, 30*72a8ff4bSMasahiro Yamada &systimer_base->timer0control); 31*72a8ff4bSMasahiro Yamada 32*72a8ff4bSMasahiro Yamada return 0; 33*72a8ff4bSMasahiro Yamada 34*72a8ff4bSMasahiro Yamada } 35