diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-26 20:48:46 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-26 20:48:46 +0000 | 
| commit | a86c456862efe72f3724a53fbfde572ca6310562 (patch) | |
| tree | 25b62a4ae9dbf95a55d2b7249cbf7bba19dcdcca | |
| parent | 8e047f5e1ff109c8d9f77a2e67d4a788a40f3157 (diff) | |
ramips: add watchdog device for RT305x
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25127 3c298f89-4303-0410-b956-a3cf2f4a3e73
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 6e7b9e8e6..c4964b0b4 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 3936ee7a4..7d41b079a 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 31ef4033f..352243c14 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 */ | 
