diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2011-01-26 20:48:46 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2011-01-26 20:48:46 +0000 |
commit | 42e36cf732dae513ad211775947d9c8616735e81 (patch) | |
tree | 54c2df2424c8faa01fac34ea7b2e9e24e90b264f /target | |
parent | 16366feafb3e5df1878d2651ab8bffbec2cca7bc (diff) | |
download | upstream-42e36cf732dae513ad211775947d9c8616735e81.tar.gz upstream-42e36cf732dae513ad211775947d9c8616735e81.tar.bz2 upstream-42e36cf732dae513ad211775947d9c8616735e81.zip |
ramips: add watchdog device for RT305x
SVN-Revision: 25127
Diffstat (limited to 'target')
3 files changed, 34 insertions, 0 deletions
diff --git a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x_regs.h b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x_regs.h index 6e7b9e8e6d..c4964b0b45 100644 --- a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x_regs.h +++ b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x_regs.h @@ -62,6 +62,11 @@ #define SYSTEM_CONFIG_CPUCLK_MASK 0x1 #define SYSTEM_CONFIG_CPUCLK_320 0x0 #define SYSTEM_CONFIG_CPUCLK_384 0x1 +#define SYSTEM_CONFIG_SRAM_CS0_MODE_SHIFT 2 +#define SYSTEM_CONFIG_SRAM_CS0_MODE_MASK 0x3 +#define SYSTEM_CONFIG_SRAM_CS0_MODE_NORMAL 0 +#define SYSTEM_CONFIG_SRAM_CS0_MODE_WDT 1 +#define SYSTEM_CONFIG_SRAM_CS0_MODE_BTCOEX 2 #define RT305X_GPIO_MODE_I2C BIT(0) #define RT305X_GPIO_MODE_SPI BIT(1) diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c index 3936ee7a45..7d41b079ac 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c @@ -189,3 +189,31 @@ void __init rt305x_register_wifi(void) { platform_device_register(&rt305x_wifi_device); } + +static struct resource rt305x_wdt_resources[] = { + { + .start = RT305X_TIMER_BASE, + .end = RT305X_TIMER_BASE + RT305X_TIMER_SIZE - 1, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device rt305x_wdt_device = { + .name = "ramips-wdt", + .id = -1, + .resource = rt305x_wdt_resources, + .num_resources = ARRAY_SIZE(rt305x_wdt_resources), +}; + +void __init rt305x_register_wdt(void) +{ + u32 t; + + /* enable WDT reset output on pin SRAM_CS_N */ + t = rt305x_sysc_rr(SYSC_REG_SYSTEM_CONFIG); + t |= SYSTEM_CONFIG_SRAM_CS0_MODE_WDT << + SYSTEM_CONFIG_SRAM_CS0_MODE_SHIFT; + rt305x_sysc_wr(t, SYSC_REG_SYSTEM_CONFIG); + + platform_device_register(&rt305x_wdt_device); +} diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h index 31ef4033f6..352243c147 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h @@ -20,6 +20,7 @@ extern struct rt305x_esw_platform_data rt305x_esw_data; void rt305x_register_flash(unsigned int id, struct physmap_flash_data *pdata); void rt305x_register_ethernet(void); void rt305x_register_wifi(void); +void rt305x_register_wdt(void); #endif /* __RT305X_DEVICES_H */ |