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@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 */
19struct sunxi_timer {
20	u32 ctl;
21	u32 inter;
22	u32 val;
23	u8 res[4];
24};
25
26/* Audio video sync*/
27struct sunxi_avs {
28	u32 ctl;		/* 0x80 */
29	u32 cnt0;		/* 0x84 */
30	u32 cnt1;		/* 0x88 */
31	u32 div;		/* 0x8c */
32};
33
34/* 64 bit counter */
35struct sunxi_64cnt {
36	u32 ctl;		/* 0xa0 */
37	u32 lo;			/* 0xa4 */
38	u32 hi;			/* 0xa8 */
39};
40
41/* Rtc */
42struct sunxi_rtc {
43	u32 ctl;		/* 0x100 */
44	u32 yymmdd;		/* 0x104 */
45	u32 hhmmss;		/* 0x108 */
46};
47
48/* Alarm */
49struct 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 */
58struct sunxi_tgp {
59	u32 tgpd;
60};
61
62struct 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) || defined(CONFIG_SUN50I_GEN_H6) || defined(CONFIG_SUNXI_GEN_NCAT2)
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