aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/brcm47xx-2.6/files/arch/mips/bcm947xx/setup.c4
-rw-r--r--target/linux/brcm47xx-2.6/files/drivers/ssb/driver_chipcommon/chipcommon.c10
-rw-r--r--target/linux/brcm47xx-2.6/files/include/linux/ssb/ssb_driver_chipcommon.h1
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 547c50a7371..f7687d4dd12 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 c3d893d8790..6d3412b5854 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 3d4fbdd77e2..ba0b8702c2a 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,
ef='#n156'>156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190