xref: /rk3399_rockchip-uboot/include/watchdog.h (revision 012771d88adfb5e0886591880041f05fc8b15bdd)
1*012771d8Swdenk /*
2*012771d8Swdenk  * (C) Copyright 2001
3*012771d8Swdenk  * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
4*012771d8Swdenk  *
5*012771d8Swdenk  * See file CREDITS for list of people who contributed to this
6*012771d8Swdenk  * project.
7*012771d8Swdenk  *
8*012771d8Swdenk  * This program is free software; you can redistribute it and/or
9*012771d8Swdenk  * modify it under the terms of the GNU General Public License as
10*012771d8Swdenk  * published by the Free Software Foundation; either version 2 of
11*012771d8Swdenk  * the License, or (at your option) any later version.
12*012771d8Swdenk  *
13*012771d8Swdenk  * This program is distributed in the hope that it will be useful,
14*012771d8Swdenk  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15*012771d8Swdenk  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
16*012771d8Swdenk  * GNU General Public License for more details.
17*012771d8Swdenk  *
18*012771d8Swdenk  * You should have received a copy of the GNU General Public License
19*012771d8Swdenk  * along with this program; if not, write to the Free Software
20*012771d8Swdenk  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21*012771d8Swdenk  * MA 02111-1307 USA
22*012771d8Swdenk  */
23*012771d8Swdenk 
24*012771d8Swdenk /*
25*012771d8Swdenk  * Watchdog functions and macros.
26*012771d8Swdenk  */
27*012771d8Swdenk #ifndef _WATCHDOG_H_
28*012771d8Swdenk #define _WATCHDOG_H_
29*012771d8Swdenk 
30*012771d8Swdenk #if defined(CONFIG_HW_WATCHDOG) && defined(CONFIG_WATCHDOG)
31*012771d8Swdenk #  error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together."
32*012771d8Swdenk #endif
33*012771d8Swdenk 
34*012771d8Swdenk /*
35*012771d8Swdenk  * Hardware watchdog
36*012771d8Swdenk  */
37*012771d8Swdenk #ifdef CONFIG_HW_WATCHDOG
38*012771d8Swdenk 	#if defined(__ASSEMBLY__)
39*012771d8Swdenk 		#define WATCHDOG_RESET bl hw_watchdog_reset
40*012771d8Swdenk 	#else
41*012771d8Swdenk 		extern void hw_watchdog_reset(void);
42*012771d8Swdenk 
43*012771d8Swdenk 		#define WATCHDOG_RESET hw_watchdog_reset
44*012771d8Swdenk 	#endif /* __ASSEMBLY__ */
45*012771d8Swdenk #else
46*012771d8Swdenk 	/*
47*012771d8Swdenk 	 * Maybe a software watchdog?
48*012771d8Swdenk 	 */
49*012771d8Swdenk 	#if defined(CONFIG_WATCHDOG)
50*012771d8Swdenk 		#if defined(__ASSEMBLY__)
51*012771d8Swdenk 			#define WATCHDOG_RESET bl watchdog_reset
52*012771d8Swdenk 		#else
53*012771d8Swdenk 			extern void watchdog_reset(void);
54*012771d8Swdenk 
55*012771d8Swdenk 			#define WATCHDOG_RESET watchdog_reset
56*012771d8Swdenk 		#endif
57*012771d8Swdenk 	#else
58*012771d8Swdenk 		/*
59*012771d8Swdenk 		 * No hardware or software watchdog.
60*012771d8Swdenk 		 */
61*012771d8Swdenk 		#if defined(__ASSEMBLY__)
62*012771d8Swdenk 			#define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/
63*012771d8Swdenk 		#else
64*012771d8Swdenk 			#define WATCHDOG_RESET() {}
65*012771d8Swdenk 		#endif /* __ASSEMBLY__ */
66*012771d8Swdenk 	#endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */
67*012771d8Swdenk #endif /* CONFIG_HW_WATCHDOG */
68*012771d8Swdenk 
69*012771d8Swdenk /*
70*012771d8Swdenk  * Prototypes from $(CPU)/cpu.c.
71*012771d8Swdenk  */
72*012771d8Swdenk 
73*012771d8Swdenk /* MPC 8xx */
74*012771d8Swdenk #if (defined(CONFIG_8xx) || defined(CONFIG_MPC860)) && !defined(__ASSEMBLY__)
75*012771d8Swdenk 	void reset_8xx_watchdog(volatile immap_t *immr);
76*012771d8Swdenk #endif
77*012771d8Swdenk 
78*012771d8Swdenk /* IBM 4xx */
79*012771d8Swdenk #if defined(CONFIG_4xx) && !defined(__ASSEMBLY__)
80*012771d8Swdenk 	void reset_4xx_watchdog(void);
81*012771d8Swdenk #endif
82*012771d8Swdenk 
83*012771d8Swdenk /* MPC 8260 */
84*012771d8Swdenk #if defined(CONFIG_MPC8260) && !defined(__ASSEMBLY__)
85*012771d8Swdenk #if defined(CONFIG_WATCHDOG)
86*012771d8Swdenk extern __inline__ void
87*012771d8Swdenk reset_8260_watchdog(volatile immap_t *immr)
88*012771d8Swdenk {
89*012771d8Swdenk 	immr->im_siu_conf.sc_swsr = 0x556c;
90*012771d8Swdenk 	immr->im_siu_conf.sc_swsr = 0xaa39;
91*012771d8Swdenk }
92*012771d8Swdenk #endif /* !__ASSEMBLY__ && CONFIG_WATCHDOG */
93*012771d8Swdenk #endif /* CONFIG_MPC8260 && !__ASSEMBLY__ */
94*012771d8Swdenk 
95*012771d8Swdenk #endif /* _WATCHDOG_H_ */
96*012771d8Swdenk 
97