xref: /rk3399_rockchip-uboot/arch/arm/include/asm/ti-common/omap_wdt.h (revision d7ebbe9dc4c4df4112f9403b7447438774e6b15c)
1*d7ebbe9dSLukasz Majewski /*
2*d7ebbe9dSLukasz Majewski  * omap_wdt.h
3*d7ebbe9dSLukasz Majewski  *
4*d7ebbe9dSLukasz Majewski  * OMAP Watchdog header file
5*d7ebbe9dSLukasz Majewski  *
6*d7ebbe9dSLukasz Majewski  * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
7*d7ebbe9dSLukasz Majewski  *
8*d7ebbe9dSLukasz Majewski  * SPDX-License-Identifier:	GPL-2.0+
9*d7ebbe9dSLukasz Majewski  */
10*d7ebbe9dSLukasz Majewski 
11*d7ebbe9dSLukasz Majewski #ifndef __OMAP_WDT_H__
12*d7ebbe9dSLukasz Majewski #define __OMAP_WDT_H__
13*d7ebbe9dSLukasz Majewski 
14*d7ebbe9dSLukasz Majewski /*
15*d7ebbe9dSLukasz Majewski  * Watchdog:
16*d7ebbe9dSLukasz Majewski  * Using the prescaler, the OMAP watchdog could go for many
17*d7ebbe9dSLukasz Majewski  * months before firing.  These limits work without scaling,
18*d7ebbe9dSLukasz Majewski  * with the 60 second default assumed by most tools and docs.
19*d7ebbe9dSLukasz Majewski  */
20*d7ebbe9dSLukasz Majewski #define TIMER_MARGIN_MAX	(24 * 60 * 60)	/* 1 day */
21*d7ebbe9dSLukasz Majewski #define TIMER_MARGIN_DEFAULT	60	/* 60 secs */
22*d7ebbe9dSLukasz Majewski #define TIMER_MARGIN_MIN	1
23*d7ebbe9dSLukasz Majewski 
24*d7ebbe9dSLukasz Majewski #define PTV			0	/* prescale */
25*d7ebbe9dSLukasz Majewski #define GET_WLDR_VAL(secs)	(0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
26*d7ebbe9dSLukasz Majewski #define WDT_WWPS_PEND_WCLR	BIT(0)
27*d7ebbe9dSLukasz Majewski #define WDT_WWPS_PEND_WLDR	BIT(2)
28*d7ebbe9dSLukasz Majewski #define WDT_WWPS_PEND_WTGR	BIT(3)
29*d7ebbe9dSLukasz Majewski #define WDT_WWPS_PEND_WSPR	BIT(4)
30*d7ebbe9dSLukasz Majewski 
31*d7ebbe9dSLukasz Majewski #define WDT_WCLR_PRE		BIT(5)
32*d7ebbe9dSLukasz Majewski #define WDT_WCLR_PTV_OFF	2
33*d7ebbe9dSLukasz Majewski 
34*d7ebbe9dSLukasz Majewski /* Watchdog timer registers */
35*d7ebbe9dSLukasz Majewski struct wd_timer {
36*d7ebbe9dSLukasz Majewski 	unsigned int resv1[4];
37*d7ebbe9dSLukasz Majewski 	unsigned int wdtwdsc;	/* offset 0x010 */
38*d7ebbe9dSLukasz Majewski 	unsigned int wdtwdst;	/* offset 0x014 */
39*d7ebbe9dSLukasz Majewski 	unsigned int wdtwisr;	/* offset 0x018 */
40*d7ebbe9dSLukasz Majewski 	unsigned int wdtwier;	/* offset 0x01C */
41*d7ebbe9dSLukasz Majewski 	unsigned int wdtwwer;	/* offset 0x020 */
42*d7ebbe9dSLukasz Majewski 	unsigned int wdtwclr;	/* offset 0x024 */
43*d7ebbe9dSLukasz Majewski 	unsigned int wdtwcrr;	/* offset 0x028 */
44*d7ebbe9dSLukasz Majewski 	unsigned int wdtwldr;	/* offset 0x02C */
45*d7ebbe9dSLukasz Majewski 	unsigned int wdtwtgr;	/* offset 0x030 */
46*d7ebbe9dSLukasz Majewski 	unsigned int wdtwwps;	/* offset 0x034 */
47*d7ebbe9dSLukasz Majewski 	unsigned int resv2[3];
48*d7ebbe9dSLukasz Majewski 	unsigned int wdtwdly;	/* offset 0x044 */
49*d7ebbe9dSLukasz Majewski 	unsigned int wdtwspr;	/* offset 0x048 */
50*d7ebbe9dSLukasz Majewski 	unsigned int resv3[1];
51*d7ebbe9dSLukasz Majewski 	unsigned int wdtwqeoi;	/* offset 0x050 */
52*d7ebbe9dSLukasz Majewski 	unsigned int wdtwqstar;	/* offset 0x054 */
53*d7ebbe9dSLukasz Majewski 	unsigned int wdtwqsta;	/* offset 0x058 */
54*d7ebbe9dSLukasz Majewski 	unsigned int wdtwqens;	/* offset 0x05C */
55*d7ebbe9dSLukasz Majewski 	unsigned int wdtwqenc;	/* offset 0x060 */
56*d7ebbe9dSLukasz Majewski 	unsigned int resv4[39];
57*d7ebbe9dSLukasz Majewski 	unsigned int wdt_unfr;	/* offset 0x100 */
58*d7ebbe9dSLukasz Majewski };
59*d7ebbe9dSLukasz Majewski 
60*d7ebbe9dSLukasz Majewski #endif /* __OMAP_WDT_H__ */
61