1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * This software may be distributed and modified according to the terms of 5 * the GNU General Public License version 2. Note that NO WARRANTY is provided. 6 * See "LICENSE_GPLv2.txt" for details. 7 * 8 * @TAG(GD_GPL) 9 */ 10/* @AUTHOR(akroh@ertos.nicta.com.au) */ 11 12#include <plat/machine/hardware.h> 13#include <plat/machine/timer.h> 14 15#define DGT_TIMER_PPTR (TIMER_PPTR + 0x024) 16 17struct timer { 18 uint32_t mtch; /* +0x024 */ 19 uint32_t cnt; /* +0x028 */ 20 uint32_t en; /* +0x02C */ 21 uint32_t clr; /* +0x030 */ 22 uint32_t clk_ctl; /* +0x034 */ 23}; 24typedef volatile struct timer timer_t; 25timer_t* dgt_tmr = (timer_t*) DGT_TIMER_PPTR; 26 27#define DGTTMR_EN_CLR_ON_MTCH_EN (1U << 1) 28#define DGTTMR_EN_EN (1U << 0) 29#define DGTTMR_CLK_CTRL(x) ((x) << 0) 30#define DGTTMR_CLK_CTRL_DIV1 DGTTMR_CLK_CTRL(0x0) 31#define DGTTMR_CLK_CTRL_DIV2 DGTTMR_CLK_CTRL(0x1) 32#define DGTTMR_CLK_CTRL_DIV3 DGTTMR_CLK_CTRL(0x2) 33#define DGTTMR_CLK_CTRL_DIV4 DGTTMR_CLK_CTRL(0x3) 34#define DGTTMR_CLK_CTRL_MASK DGTTMR_CLK_CTRL(0x3) 35 36#define PRESCALER DGTTMR_CLK_CTRL_DIV1 37#define PRESCALE_VAL 1 38 39BOOT_CODE void 40initTimer(void) 41{ 42 /* Stop the timer */ 43 dgt_tmr->en = 0; 44 dgt_tmr->clr = 0xC0FFEE; 45 46 fail("Not implemented"); 47 /* Start the timer */ 48 dgt_tmr->en = DGTTMR_EN_CLR_ON_MTCH_EN | DGTTMR_EN_EN; 49} 50