diff options
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 */ | 
