xref: /rk3399_rockchip-uboot/include/watchdog.h (revision a21fb981d533ac6d323a01c7fa2cda20f2d36de5)
1012771d8Swdenk /*
2012771d8Swdenk  * (C) Copyright 2001
3012771d8Swdenk  * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
4012771d8Swdenk  *
5012771d8Swdenk  * See file CREDITS for list of people who contributed to this
6012771d8Swdenk  * project.
7012771d8Swdenk  *
8012771d8Swdenk  * This program is free software; you can redistribute it and/or
9012771d8Swdenk  * modify it under the terms of the GNU General Public License as
10012771d8Swdenk  * published by the Free Software Foundation; either version 2 of
11012771d8Swdenk  * the License, or (at your option) any later version.
12012771d8Swdenk  *
13012771d8Swdenk  * This program is distributed in the hope that it will be useful,
14012771d8Swdenk  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15012771d8Swdenk  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
16012771d8Swdenk  * GNU General Public License for more details.
17012771d8Swdenk  *
18012771d8Swdenk  * You should have received a copy of the GNU General Public License
19012771d8Swdenk  * along with this program; if not, write to the Free Software
20012771d8Swdenk  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21012771d8Swdenk  * MA 02111-1307 USA
22012771d8Swdenk  */
23012771d8Swdenk 
24012771d8Swdenk /*
25012771d8Swdenk  * Watchdog functions and macros.
26012771d8Swdenk  */
27012771d8Swdenk #ifndef _WATCHDOG_H_
28012771d8Swdenk #define _WATCHDOG_H_
29012771d8Swdenk 
30012771d8Swdenk #if defined(CONFIG_HW_WATCHDOG) && defined(CONFIG_WATCHDOG)
31012771d8Swdenk #  error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together."
32012771d8Swdenk #endif
33012771d8Swdenk 
34028ab6b5Swdenk #if defined(__ASSEMBLY__) && defined(__NIOS__)
35028ab6b5Swdenk #  error "Configuration error: WATCHDOG_RESET inside assembler not supported for Nios platforms."
36028ab6b5Swdenk #endif
37028ab6b5Swdenk 
38012771d8Swdenk /*
39012771d8Swdenk  * Hardware watchdog
40012771d8Swdenk  */
41012771d8Swdenk #ifdef CONFIG_HW_WATCHDOG
42012771d8Swdenk 	#if defined(__ASSEMBLY__)
43012771d8Swdenk 		#define WATCHDOG_RESET bl hw_watchdog_reset
44012771d8Swdenk 	#else
45012771d8Swdenk 		extern void hw_watchdog_reset(void);
46012771d8Swdenk 
47012771d8Swdenk 		#define WATCHDOG_RESET hw_watchdog_reset
48012771d8Swdenk 	#endif /* __ASSEMBLY__ */
49012771d8Swdenk #else
50012771d8Swdenk 	/*
51012771d8Swdenk 	 * Maybe a software watchdog?
52012771d8Swdenk 	 */
53012771d8Swdenk 	#if defined(CONFIG_WATCHDOG)
54012771d8Swdenk 		#if defined(__ASSEMBLY__)
55012771d8Swdenk 			#define WATCHDOG_RESET bl watchdog_reset
56012771d8Swdenk 		#else
57012771d8Swdenk 			extern void watchdog_reset(void);
58012771d8Swdenk 
59012771d8Swdenk 			#define WATCHDOG_RESET watchdog_reset
60012771d8Swdenk 		#endif
61012771d8Swdenk 	#else
62012771d8Swdenk 		/*
63012771d8Swdenk 		 * No hardware or software watchdog.
64012771d8Swdenk 		 */
65012771d8Swdenk 		#if defined(__ASSEMBLY__)
66012771d8Swdenk 			#define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/
67012771d8Swdenk 		#else
68012771d8Swdenk 			#define WATCHDOG_RESET() {}
69012771d8Swdenk 		#endif /* __ASSEMBLY__ */
70012771d8Swdenk 	#endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */
71012771d8Swdenk #endif /* CONFIG_HW_WATCHDOG */
72012771d8Swdenk 
73012771d8Swdenk /*
74012771d8Swdenk  * Prototypes from $(CPU)/cpu.c.
75012771d8Swdenk  */
76012771d8Swdenk 
77012771d8Swdenk /* MPC 8xx */
78012771d8Swdenk #if (defined(CONFIG_8xx) || defined(CONFIG_MPC860)) && !defined(__ASSEMBLY__)
79012771d8Swdenk 	void reset_8xx_watchdog(volatile immap_t *immr);
80012771d8Swdenk #endif
81012771d8Swdenk 
820db5bca8Swdenk /* MPC 5xx */
830db5bca8Swdenk #if defined(CONFIG_5xx) && !defined(__ASSEMBLY__)
840db5bca8Swdenk 	void reset_5xx_watchdog(volatile immap_t *immr);
850db5bca8Swdenk #endif
860db5bca8Swdenk 
87*a21fb981SDetlev Zundel /* MPC 5xxx */
88*a21fb981SDetlev Zundel #if defined(CONFIG_MPC5xxx) && !defined(__ASSEMBLY__)
89*a21fb981SDetlev Zundel 	void reset_5xxx_watchdog(void);
90*a21fb981SDetlev Zundel #endif
91*a21fb981SDetlev Zundel 
920c8721a4SWolfgang Denk /* AMCC 4xx */
93012771d8Swdenk #if defined(CONFIG_4xx) && !defined(__ASSEMBLY__)
94012771d8Swdenk 	void reset_4xx_watchdog(void);
95012771d8Swdenk #endif
96012771d8Swdenk 
97012771d8Swdenk #endif /* _WATCHDOG_H_ */
98