mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 22:26:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* MN10300 Reset controller and watchdog timer definitions
 | |
|  *
 | |
|  * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
 | |
|  * Written by David Howells (dhowells@redhat.com)
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public Licence
 | |
|  * as published by the Free Software Foundation; either version
 | |
|  * 2 of the Licence, or (at your option) any later version.
 | |
|  */
 | |
| 
 | |
| #ifndef _ASM_RESET_REGS_H
 | |
| #define _ASM_RESET_REGS_H
 | |
| 
 | |
| #include <asm/cpu-regs.h>
 | |
| #include <asm/exceptions.h>
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| #ifdef CONFIG_MN10300_WD_TIMER
 | |
| #define ARCH_HAS_NMI_WATCHDOG		/* See include/linux/nmi.h */
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * watchdog timer registers
 | |
|  */
 | |
| #define WDBC			__SYSREGC(0xc0001000, u8) /* watchdog binary counter reg */
 | |
| 
 | |
| #define WDCTR			__SYSREG(0xc0001002, u8)  /* watchdog timer control reg */
 | |
| #define WDCTR_WDCK		0x07	/* clock source selection */
 | |
| #define WDCTR_WDCK_256th	0x00	/* - OSCI/256 */
 | |
| #define WDCTR_WDCK_1024th	0x01	/* - OSCI/1024 */
 | |
| #define WDCTR_WDCK_2048th	0x02	/* - OSCI/2048 */
 | |
| #define WDCTR_WDCK_16384th	0x03	/* - OSCI/16384 */
 | |
| #define WDCTR_WDCK_65536th	0x04	/* - OSCI/65536 */
 | |
| #define WDCTR_WDRST		0x40	/* binary counter reset */
 | |
| #define WDCTR_WDCNE		0x80	/* watchdog timer enable */
 | |
| 
 | |
| #define RSTCTR			__SYSREG(0xc0001004, u8) /* reset control reg */
 | |
| #define RSTCTR_CHIPRST		0x01	/* chip reset */
 | |
| #define RSTCTR_DBFRST		0x02	/* double fault reset flag */
 | |
| #define RSTCTR_WDTRST		0x04	/* watchdog timer reset flag */
 | |
| #define RSTCTR_WDREN		0x08	/* watchdog timer reset enable */
 | |
| 
 | |
| #ifndef __ASSEMBLY__
 | |
| 
 | |
| static inline void mn10300_proc_hard_reset(void)
 | |
| {
 | |
| 	RSTCTR &= ~RSTCTR_CHIPRST;
 | |
| 	RSTCTR |= RSTCTR_CHIPRST;
 | |
| }
 | |
| 
 | |
| extern unsigned int watchdog_alert_counter;
 | |
| 
 | |
| extern void watchdog_go(void);
 | |
| extern asmlinkage void watchdog_handler(void);
 | |
| extern asmlinkage
 | |
| void watchdog_interrupt(struct pt_regs *, enum exception_code);
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif /* __KERNEL__ */
 | |
| 
 | |
| #endif /* _ASM_RESET_REGS_H */
 | 
