diff options
3 files changed, 13 insertions, 2 deletions
| diff --git a/target/linux/brcm47xx-2.6/files/arch/mips/bcm947xx/setup.c b/target/linux/brcm47xx-2.6/files/arch/mips/bcm947xx/setup.c index 547c50a73..f7687d4dd 100644 --- a/target/linux/brcm47xx-2.6/files/arch/mips/bcm947xx/setup.c +++ b/target/linux/brcm47xx-2.6/files/arch/mips/bcm947xx/setup.c @@ -54,7 +54,7 @@ static void bcm47xx_machine_restart(char *command)  	 */  	/* Set the watchdog timer to reset immediately */ -//TODO	sb_watchdog(sbh, 1); +	ssb_chipco_watchdog(&ssb.chipco, 1);  	while (1)  		cpu_relax();  } @@ -63,7 +63,7 @@ static void bcm47xx_machine_halt(void)  {  	/* Disable interrupts and watchdog and spin forever */  	local_irq_disable(); -//TODO	sb_watchdog(sbh, 0); +	ssb_chipco_watchdog(&ssb.chipco, 0);  	while (1)  		cpu_relax();  } diff --git a/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_chipcommon/chipcommon.c b/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_chipcommon/chipcommon.c index c3d893d87..6d3412b58 100644 --- a/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_chipcommon/chipcommon.c +++ b/target/linux/brcm47xx-2.6/files/drivers/ssb/driver_chipcommon/chipcommon.c @@ -401,3 +401,13 @@ int ssb_chipco_serial_init(struct ssb_chipcommon *cc,  	return nr_ports;  }  #endif /* CONFIG_SSB_SERIAL */ + +/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ +int +ssb_chipco_watchdog(struct ssb_chipcommon *cc, uint ticks) +{ +	/* instant NMI */ +	chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks); +	return 0; +} +EXPORT_SYMBOL(ssb_chipco_watchdog); diff --git a/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_chipcommon.h b/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_chipcommon.h index 3d4fbdd77..ba0b8702c 100644 --- a/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_chipcommon.h +++ b/target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_chipcommon.h @@ -417,6 +417,7 @@ static inline u32 ssb_chipco_gpio_polarity(struct ssb_chipcommon *cc,  }  /* TODO: GPIO reservation */ +extern int ssb_chipco_watchdog(struct ssb_chipcommon *cc, uint ticks);  #ifdef CONFIG_SSB_SERIAL  extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, | 
