
Signed-off-by: Sergey Lapin slapin@ossfans.org --- cpu/arm926ejs/at91/Makefile | 1 + cpu/arm926ejs/at91/watchdog.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 0 deletions(-) create mode 100644 cpu/arm926ejs/at91/watchdog.c
diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile index 44cde1a..7befcd7 100644 --- a/cpu/arm926ejs/at91/Makefile +++ b/cpu/arm926ejs/at91/Makefile @@ -29,6 +29,7 @@ COBJS-y += ether.o COBJS-y += timer.o COBJS-$(CONFIG_HAS_DATAFLASH) +=spi.o COBJS-y += usb.o +COBJS-$(CONFIG_HW_WATCHDOG) +=watchdog.o SOBJS = lowlevel_init.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) diff --git a/cpu/arm926ejs/at91/watchdog.c b/cpu/arm926ejs/at91/watchdog.c new file mode 100644 index 0000000..502cc8a --- /dev/null +++ b/cpu/arm926ejs/at91/watchdog.c @@ -0,0 +1,38 @@ +/* + * watchdog.c - driver for at91sam9260 watchdog + * + * Copyright (c) 2008 Sergey Lapin + * + * Based on Blackfin watchdog driver + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <watchdog.h> +#include <asm/arch/hardware.h> +#include <asm/arch/io.h> + +#ifdef CONFIG_HW_WATCHDOG +#define AT91_WDT_CR (AT91_WDT+0x00) +#define AT91_WDT_MR (AT91_WDT+0x04) +#define AT91_WDT_SR (AT91_WDT+0x08) + +void hw_watchdog_reset(void) +{ + at91_sys_write(AT91_WDT_CR, 0xa5000001); +} + +void hw_watchdog_init(void) +{ + /* 16 seconds timer, resets enabled */ + at91_sys_write(AT91_WDT_MR, 0x3FFF2FFF); +} + +void hw_watchdog_disable(void) +{ + /* Can't reenable per documentation */ + at91_sys_write(AT91_WDT_MR, 0x8000); +} +#endif +