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