xref: /rk3399_rockchip-uboot/include/watchdog.h (revision 0db5bca8076998a7516102988ac976a2da28d531)
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 
34012771d8Swdenk /*
35012771d8Swdenk  * Hardware watchdog
36012771d8Swdenk  */
37012771d8Swdenk #ifdef CONFIG_HW_WATCHDOG
38012771d8Swdenk 	#if defined(__ASSEMBLY__)
39012771d8Swdenk 		#define WATCHDOG_RESET bl hw_watchdog_reset
40012771d8Swdenk 	#else
41012771d8Swdenk 		extern void hw_watchdog_reset(void);
42012771d8Swdenk 
43012771d8Swdenk 		#define WATCHDOG_RESET hw_watchdog_reset
44012771d8Swdenk 	#endif /* __ASSEMBLY__ */
45012771d8Swdenk #else
46012771d8Swdenk 	/*
47012771d8Swdenk 	 * Maybe a software watchdog?
48012771d8Swdenk 	 */
49012771d8Swdenk 	#if defined(CONFIG_WATCHDOG)
50012771d8Swdenk 		#if defined(__ASSEMBLY__)
51012771d8Swdenk 			#define WATCHDOG_RESET bl watchdog_reset
52012771d8Swdenk 		#else
53012771d8Swdenk 			extern void watchdog_reset(void);
54012771d8Swdenk 
55012771d8Swdenk 			#define WATCHDOG_RESET watchdog_reset
56012771d8Swdenk 		#endif
57012771d8Swdenk 	#else
58012771d8Swdenk 		/*
59012771d8Swdenk 		 * No hardware or software watchdog.
60012771d8Swdenk 		 */
61012771d8Swdenk 		#if defined(__ASSEMBLY__)
62012771d8Swdenk 			#define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/
63012771d8Swdenk 		#else
64012771d8Swdenk 			#define WATCHDOG_RESET() {}
65012771d8Swdenk 		#endif /* __ASSEMBLY__ */
66012771d8Swdenk 	#endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */
67012771d8Swdenk #endif /* CONFIG_HW_WATCHDOG */
68012771d8Swdenk 
69012771d8Swdenk /*
70012771d8Swdenk  * Prototypes from $(CPU)/cpu.c.
71012771d8Swdenk  */
72012771d8Swdenk 
73012771d8Swdenk /* MPC 8xx */
74012771d8Swdenk #if (defined(CONFIG_8xx) || defined(CONFIG_MPC860)) && !defined(__ASSEMBLY__)
75012771d8Swdenk 	void reset_8xx_watchdog(volatile immap_t *immr);
76012771d8Swdenk #endif
77012771d8Swdenk 
78*0db5bca8Swdenk /* MPC 5xx */
79*0db5bca8Swdenk #if defined(CONFIG_5xx) && !defined(__ASSEMBLY__)
80*0db5bca8Swdenk 	void reset_5xx_watchdog(volatile immap_t *immr);
81*0db5bca8Swdenk #endif
82*0db5bca8Swdenk 
83012771d8Swdenk /* IBM 4xx */
84012771d8Swdenk #if defined(CONFIG_4xx) && !defined(__ASSEMBLY__)
85012771d8Swdenk 	void reset_4xx_watchdog(void);
86012771d8Swdenk #endif
87012771d8Swdenk 
88012771d8Swdenk /* MPC 8260 */
89012771d8Swdenk #if defined(CONFIG_MPC8260) && !defined(__ASSEMBLY__)
90012771d8Swdenk #if defined(CONFIG_WATCHDOG)
91012771d8Swdenk extern __inline__ void
92012771d8Swdenk reset_8260_watchdog(volatile immap_t *immr)
93012771d8Swdenk {
94012771d8Swdenk 	immr->im_siu_conf.sc_swsr = 0x556c;
95012771d8Swdenk 	immr->im_siu_conf.sc_swsr = 0xaa39;
96012771d8Swdenk }
97012771d8Swdenk #endif /* !__ASSEMBLY__ && CONFIG_WATCHDOG */
98012771d8Swdenk #endif /* CONFIG_MPC8260 && !__ASSEMBLY__ */
99012771d8Swdenk 
100012771d8Swdenk #endif /* _WATCHDOG_H_ */
101012771d8Swdenk 
102