blob: 9273fa1e8090a4ae2262459a9c26b494e528edfc
1 | /* |
2 | * (C) Copyright 2001 |
3 | * Erik Theisen, Wave 7 Optics, etheisen@mindspring.com. |
4 | * |
5 | * SPDX-License-Identifier: GPL-2.0+ |
6 | */ |
7 | |
8 | /* |
9 | * Watchdog functions and macros. |
10 | */ |
11 | #ifndef _WATCHDOG_H_ |
12 | #define _WATCHDOG_H_ |
13 | |
14 | #if !defined(__ASSEMBLY__) |
15 | /* |
16 | * Reset the watchdog timer, always returns 0 |
17 | * |
18 | * This function is here since it is shared between board_f() and board_r(), |
19 | * and the legacy arch/<arch>/board.c code. |
20 | */ |
21 | int init_func_watchdog_reset(void); |
22 | #endif |
23 | |
24 | #if defined(CONFIG_SYS_GENERIC_BOARD) && \ |
25 | (defined(CONFIG_WATCHDOG) || defined(CONFIG_HW_WATCHDOG)) |
26 | #define INIT_FUNC_WATCHDOG_INIT init_func_watchdog_init, |
27 | #define INIT_FUNC_WATCHDOG_RESET init_func_watchdog_reset, |
28 | #else |
29 | #define INIT_FUNC_WATCHDOG_INIT |
30 | #define INIT_FUNC_WATCHDOG_RESET |
31 | #endif |
32 | |
33 | #if defined(CONFIG_HW_WATCHDOG) && defined(CONFIG_WATCHDOG) |
34 | # error "Configuration error: CONFIG_HW_WATCHDOG and CONFIG_WATCHDOG can't be used together." |
35 | #endif |
36 | |
37 | /* |
38 | * Hardware watchdog |
39 | */ |
40 | #ifdef CONFIG_HW_WATCHDOG |
41 | #if defined(__ASSEMBLY__) |
42 | #define WATCHDOG_RESET bl hw_watchdog_reset |
43 | #else |
44 | extern void hw_watchdog_reset(void); |
45 | |
46 | #define WATCHDOG_RESET hw_watchdog_reset |
47 | #endif /* __ASSEMBLY__ */ |
48 | #else |
49 | /* |
50 | * Maybe a software watchdog? |
51 | */ |
52 | #if defined(CONFIG_WATCHDOG) |
53 | #if defined(__ASSEMBLY__) |
54 | #define WATCHDOG_RESET bl watchdog_reset |
55 | #else |
56 | extern void watchdog_reset(void); |
57 | |
58 | #define WATCHDOG_RESET watchdog_reset |
59 | #endif |
60 | #else |
61 | /* |
62 | * No hardware or software watchdog. |
63 | */ |
64 | #if defined(__ASSEMBLY__) |
65 | #define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/ |
66 | #else |
67 | #define WATCHDOG_RESET() {} |
68 | #endif /* __ASSEMBLY__ */ |
69 | #endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */ |
70 | #endif /* CONFIG_HW_WATCHDOG */ |
71 | |
72 | /* |
73 | * Prototypes from $(CPU)/cpu.c. |
74 | */ |
75 | |
76 | /* MPC 8xx */ |
77 | #if (defined(CONFIG_8xx) || defined(CONFIG_MPC860)) && !defined(__ASSEMBLY__) |
78 | void reset_8xx_watchdog(volatile immap_t *immr); |
79 | #endif |
80 | |
81 | /* MPC 5xx */ |
82 | #if defined(CONFIG_5xx) && !defined(__ASSEMBLY__) |
83 | void reset_5xx_watchdog(volatile immap_t *immr); |
84 | #endif |
85 | |
86 | /* MPC 5xxx */ |
87 | #if defined(CONFIG_MPC5xxx) && !defined(__ASSEMBLY__) |
88 | void reset_5xxx_watchdog(void); |
89 | #endif |
90 | |
91 | /* AMCC 4xx */ |
92 | #if defined(CONFIG_4xx) && !defined(__ASSEMBLY__) |
93 | void reset_4xx_watchdog(void); |
94 | #endif |
95 | |
96 | #if defined(CONFIG_HW_WATCHDOG) && !defined(__ASSEMBLY__) |
97 | void hw_watchdog_init(void); |
98 | #endif |
99 | |
100 | #if defined(CONFIG_MPC85xx) && !defined(__ASSEMBLY__) |
101 | void init_85xx_watchdog(void); |
102 | #endif |
103 | #endif /* _WATCHDOG_H_ */ |
104 |