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