uboot/arch/arm/include/asm/arch-sunxi/timer.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2007-2011
   3 * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
   4 * Tom Cubie <tangliang@allwinnertech.com>
   5 *
   6 * Configuration settings for the Allwinner A10-evb board.
   7 *
   8 * SPDX-License-Identifier:     GPL-2.0+
   9 */
  10
  11#ifndef _SUNXI_TIMER_H_
  12#define _SUNXI_TIMER_H_
  13
  14#ifndef __ASSEMBLY__
  15
  16#include <linux/types.h>
  17#include <asm/arch/watchdog.h>
  18
  19/* General purpose timer */
  20struct sunxi_timer {
  21        u32 ctl;
  22        u32 inter;
  23        u32 val;
  24        u8 res[4];
  25};
  26
  27/* Audio video sync*/
  28struct sunxi_avs {
  29        u32 ctl;                /* 0x80 */
  30        u32 cnt0;               /* 0x84 */
  31        u32 cnt1;               /* 0x88 */
  32        u32 div;                /* 0x8c */
  33};
  34
  35/* 64 bit counter */
  36struct sunxi_64cnt {
  37        u32 ctl;                /* 0xa0 */
  38        u32 lo;                 /* 0xa4 */
  39        u32 hi;                 /* 0xa8 */
  40};
  41
  42/* Rtc */
  43struct sunxi_rtc {
  44        u32 ctl;                /* 0x100 */
  45        u32 yymmdd;             /* 0x104 */
  46        u32 hhmmss;             /* 0x108 */
  47};
  48
  49/* Alarm */
  50struct sunxi_alarm {
  51        u32 ddhhmmss;           /* 0x10c */
  52        u32 hhmmss;             /* 0x110 */
  53        u32 en;                 /* 0x114 */
  54        u32 irqen;              /* 0x118 */
  55        u32 irqsta;             /* 0x11c */
  56};
  57
  58/* Timer general purpose register */
  59struct sunxi_tgp {
  60        u32 tgpd;
  61};
  62
  63struct sunxi_timer_reg {
  64        u32 tirqen;             /* 0x00 */
  65        u32 tirqsta;            /* 0x04 */
  66        u8 res1[8];
  67        struct sunxi_timer timer[6];    /* We have 6 timers */
  68        u8 res2[16];
  69        struct sunxi_avs avs;
  70#if defined(CONFIG_SUNXI_GEN_SUN4I) || defined(CONFIG_MACH_SUN8I_R40)
  71        struct sunxi_wdog wdog; /* 0x90 */
  72        /* XXX the following is not accurate for sun5i/sun7i */
  73        struct sunxi_64cnt cnt64;       /* 0xa0 */
  74        u8 res4[0x58];
  75        struct sunxi_rtc rtc;
  76        struct sunxi_alarm alarm;
  77        struct sunxi_tgp tgp[4];
  78        u8 res5[8];
  79        u32 cpu_cfg;
  80#elif defined(CONFIG_SUNXI_GEN_SUN6I)
  81        u8 res3[16];
  82        struct sunxi_wdog wdog[5];      /* We have 5 watchdogs */
  83#endif
  84};
  85
  86#endif /* __ASSEMBLY__ */
  87
  88#endif
  89