1643cf0eaSIan Campbell /* 2643cf0eaSIan Campbell * (C) Copyright 2007-2011 3643cf0eaSIan Campbell * Allwinner Technology Co., Ltd. <www.allwinnertech.com> 4643cf0eaSIan Campbell * Tom Cubie <tangliang@allwinnertech.com> 5643cf0eaSIan Campbell * 6643cf0eaSIan Campbell * Configuration settings for the Allwinner A10-evb board. 7643cf0eaSIan Campbell * 8643cf0eaSIan Campbell * SPDX-License-Identifier: GPL-2.0+ 9643cf0eaSIan Campbell */ 10643cf0eaSIan Campbell 11643cf0eaSIan Campbell #ifndef _SUNXI_TIMER_H_ 12643cf0eaSIan Campbell #define _SUNXI_TIMER_H_ 13643cf0eaSIan Campbell 14643cf0eaSIan Campbell #ifndef __ASSEMBLY__ 15643cf0eaSIan Campbell 16643cf0eaSIan Campbell #include <linux/types.h> 172b679f9fSChen-Yu Tsai #include <asm/arch/watchdog.h> 18643cf0eaSIan Campbell 19643cf0eaSIan Campbell /* General purpose timer */ 20643cf0eaSIan Campbell struct sunxi_timer { 21643cf0eaSIan Campbell u32 ctl; 22643cf0eaSIan Campbell u32 inter; 23643cf0eaSIan Campbell u32 val; 24643cf0eaSIan Campbell u8 res[4]; 25643cf0eaSIan Campbell }; 26643cf0eaSIan Campbell 27643cf0eaSIan Campbell /* Audio video sync*/ 28643cf0eaSIan Campbell struct sunxi_avs { 29643cf0eaSIan Campbell u32 ctl; /* 0x80 */ 30643cf0eaSIan Campbell u32 cnt0; /* 0x84 */ 31643cf0eaSIan Campbell u32 cnt1; /* 0x88 */ 32643cf0eaSIan Campbell u32 div; /* 0x8c */ 33643cf0eaSIan Campbell }; 34643cf0eaSIan Campbell 35643cf0eaSIan Campbell /* 64 bit counter */ 36643cf0eaSIan Campbell struct sunxi_64cnt { 37643cf0eaSIan Campbell u32 ctl; /* 0xa0 */ 38643cf0eaSIan Campbell u32 lo; /* 0xa4 */ 39643cf0eaSIan Campbell u32 hi; /* 0xa8 */ 40643cf0eaSIan Campbell }; 41643cf0eaSIan Campbell 42643cf0eaSIan Campbell /* Rtc */ 43643cf0eaSIan Campbell struct sunxi_rtc { 44643cf0eaSIan Campbell u32 ctl; /* 0x100 */ 45643cf0eaSIan Campbell u32 yymmdd; /* 0x104 */ 46643cf0eaSIan Campbell u32 hhmmss; /* 0x108 */ 47643cf0eaSIan Campbell }; 48643cf0eaSIan Campbell 49643cf0eaSIan Campbell /* Alarm */ 50643cf0eaSIan Campbell struct sunxi_alarm { 51643cf0eaSIan Campbell u32 ddhhmmss; /* 0x10c */ 52643cf0eaSIan Campbell u32 hhmmss; /* 0x110 */ 53643cf0eaSIan Campbell u32 en; /* 0x114 */ 54643cf0eaSIan Campbell u32 irqen; /* 0x118 */ 55643cf0eaSIan Campbell u32 irqsta; /* 0x11c */ 56643cf0eaSIan Campbell }; 57643cf0eaSIan Campbell 58643cf0eaSIan Campbell /* Timer general purpose register */ 59643cf0eaSIan Campbell struct sunxi_tgp { 60643cf0eaSIan Campbell u32 tgpd; 61643cf0eaSIan Campbell }; 62643cf0eaSIan Campbell 63643cf0eaSIan Campbell struct sunxi_timer_reg { 64643cf0eaSIan Campbell u32 tirqen; /* 0x00 */ 65643cf0eaSIan Campbell u32 tirqsta; /* 0x04 */ 66643cf0eaSIan Campbell u8 res1[8]; 67643cf0eaSIan Campbell struct sunxi_timer timer[6]; /* We have 6 timers */ 68643cf0eaSIan Campbell u8 res2[16]; 69643cf0eaSIan Campbell struct sunxi_avs avs; 70*6c7ae2bfSChen-Yu Tsai #if defined(CONFIG_SUNXI_GEN_SUN4I) || defined(CONFIG_MACH_SUN8I_R40) 712b679f9fSChen-Yu Tsai struct sunxi_wdog wdog; /* 0x90 */ 724cdefba8SChen-Yu Tsai /* XXX the following is not accurate for sun5i/sun7i */ 732b679f9fSChen-Yu Tsai struct sunxi_64cnt cnt64; /* 0xa0 */ 74643cf0eaSIan Campbell u8 res4[0x58]; 75643cf0eaSIan Campbell struct sunxi_rtc rtc; 76643cf0eaSIan Campbell struct sunxi_alarm alarm; 77643cf0eaSIan Campbell struct sunxi_tgp tgp[4]; 78643cf0eaSIan Campbell u8 res5[8]; 79643cf0eaSIan Campbell u32 cpu_cfg; 80*6c7ae2bfSChen-Yu Tsai #elif defined(CONFIG_SUNXI_GEN_SUN6I) 814cdefba8SChen-Yu Tsai u8 res3[16]; 824cdefba8SChen-Yu Tsai struct sunxi_wdog wdog[5]; /* We have 5 watchdogs */ 834cdefba8SChen-Yu Tsai #endif 84643cf0eaSIan Campbell }; 85643cf0eaSIan Campbell 86643cf0eaSIan Campbell #endif /* __ASSEMBLY__ */ 87643cf0eaSIan Campbell 88643cf0eaSIan Campbell #endif 89