summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@datenfreihafen.org>2009-03-23 11:45:40 +0100
committerStefan Schmidt <stefan@datenfreihafen.org>2009-03-23 11:45:40 +0100
commit451b1c687105655a4f2c9c477b05535041e25060 (patch)
tree3db315590172cd6244107a97a6603add934d7e32 /recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch
parent6767ca50430e37cdad0a8992b73c3f82ead134bf (diff)
parente2b99b79f516a7466dc050902cee62f39869bf9d (diff)
Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into org.openembedded.dev
Diffstat (limited to 'recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch')
-rw-r--r--recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch b/recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch
new file mode 100644
index 0000000000..9744a67653
--- /dev/null
+++ b/recipes/linux/linux-2.6.24/ts72xx/ts72xx-use-cpld-reset.patch
@@ -0,0 +1,41 @@
+
+Use CPLD watchdog to reset the machine instead of buggy ep93xx one, which
+sometimes get stuck...
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/system.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/system.h 2007-08-30 00:53:47.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/system.h 2007-08-30 00:54:28.000000000 +0200
+@@ -3,6 +3,7 @@
+ */
+
+ #include <asm/hardware.h>
++#include <asm/mach-types.h>
+
+ static inline void arch_idle(void)
+ {
+@@ -15,11 +16,17 @@
+
+ local_irq_disable();
+
+- devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ if (machine_is_ts72xx()) {
++ __raw_writeb(0x5, TS72XX_WATCHDOG_FEED_PHYS_BASE);
++ __raw_writeb(0x1, TS72XX_WATCHDOG_CONTROL_PHYS_BASE);
++ } else {
++ devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ }
++
+
+ while (1)
+ ;