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