aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-03-14 01:26:57 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-03-14 01:26:57 +0000
commit53a5d4131f8971d4f4a32228e78ba1a55a0381c6 (patch)
tree9a65732cf43edf1faebb64ad9a4fd7f632da2282
parentbf622ab0ae504d01ca9f589b8d67d3902c068133 (diff)
downloadupstream-53a5d4131f8971d4f4a32228e78ba1a55a0381c6.tar.gz
upstream-53a5d4131f8971d4f4a32228e78ba1a55a0381c6.tar.bz2
upstream-53a5d4131f8971d4f4a32228e78ba1a55a0381c6.zip
add reboot fix from #1312
SVN-Revision: 6563
-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 547c50a737..f7687d4dd1 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 c3d893d879..6d3412b585 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 3d4fbdd77e..ba0b8702c2 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,