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