From: Aurelien Jarno Add a new function to control the watchdog. It originally comes from the OpenWrt patches. Cc: Felix Fietkau Signed-off-by: Aurelien Jarno Signed-off-by: Michael Buesch Signed-off-by: Andrew Morton --- drivers/ssb/driver_chipcommon.c | 7 +++++++ include/linux/ssb/ssb_driver_chipcommon.h | 3 +++ 2 files changed, 10 insertions(+) diff -puN drivers/ssb/driver_chipcommon.c~watchdog-support-3 drivers/ssb/driver_chipcommon.c --- a/drivers/ssb/driver_chipcommon.c~watchdog-support-3 +++ a/drivers/ssb/driver_chipcommon.c @@ -312,6 +312,13 @@ void ssb_chipco_timing_init(struct ssb_c } } +/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ +void +ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, u32 ticks) +{ + /* instant NMI */ + chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks); +} #ifdef CONFIG_SSB_SERIAL int ssb_chipco_serial_init(struct ssb_chipcommon *cc, diff -puN include/linux/ssb/ssb_driver_chipcommon.h~watchdog-support-3 include/linux/ssb/ssb_driver_chipcommon.h --- a/include/linux/ssb/ssb_driver_chipcommon.h~watchdog-support-3 +++ a/include/linux/ssb/ssb_driver_chipcommon.h @@ -377,6 +377,9 @@ enum ssb_clkmode { extern void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc, enum ssb_clkmode mode); +extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, + u32 ticks); + #ifdef CONFIG_SSB_SERIAL extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, struct ssb_serial_port *ports); _