summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch39
-rw-r--r--packages/linux/nslu2-kernel_2.6.14-rc2.bb3
2 files changed, 41 insertions, 1 deletions
diff --git a/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch b/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch
new file mode 100644
index 0000000000..2fa828cf48
--- /dev/null
+++ b/packages/linux/nslu2-kernel/2.6.14/25-nslu2-arch-reset.patch
@@ -0,0 +1,39 @@
+# Work round problems with the flash being unreadable on boot.
+#
+--- linux-2.6.13/.pc/25-nslu2-arch-reset.patch/include/asm-arm/arch-ixp4xx/system.h 2005-08-28 16:41:01.000000000 -0700
++++ linux-2.6.13/include/asm-arm/arch-ixp4xx/system.h 2005-09-25 23:34:14.762872391 -0700
+@@ -10,6 +10,7 @@
+ */
+
+ #include <asm/hardware.h>
++#include <asm/mach-types.h>
+
+ static inline void arch_idle(void)
+ {
+@@ -22,6 +23,21 @@
+
+ static inline void arch_reset(char mode)
+ {
++ /* On NSLU2 machines the flash is sometimes left in a non-read
++ * mode, such that attempting a read will cause problems - such as
++ * a hang. This will prevent both hard and soft reboot since the
++ * first thing done is to read the first instruction from the flash!
++ * Therefore issue a flash reset command here.
++ */
++ if ( machine_is_nslu2()) {
++ /* Use the physical address here and write the reset command
++ * to the command address (not technically necessary). See
++ * <linux/mtd/cfi.h> for how to calculate this for other
++ * systems. The NSLU2 has one bank of 16 bit flash.
++ */
++ *(__u16*)(NSLU2_FLASH_BASE+0xAA/*command*/) = 0x00ff/*reset*/;
++ }
++
+ if ( 1 && mode == 's') {
+ /* Jump into ROM at address 0 */
+ cpu_reset(0);
+@@ -39,4 +55,3 @@
+ *IXP4XX_OSWE = IXP4XX_WDT_RESET_ENABLE | IXP4XX_WDT_COUNT_ENABLE;
+ }
+ }
+-
diff --git a/packages/linux/nslu2-kernel_2.6.14-rc2.bb b/packages/linux/nslu2-kernel_2.6.14-rc2.bb
index 74c57a1830..200d7ef3a5 100644
--- a/packages/linux/nslu2-kernel_2.6.14-rc2.bb
+++ b/packages/linux/nslu2-kernel_2.6.14-rc2.bb
@@ -8,7 +8,7 @@ PR_CONFIG = "0"
# Increment the number below (i.e. the digits after PR) when
# making changes within this file or for changes to the patches
# applied to the kernel.
-PR = "r2.${PR_CONFIG}"
+PR = "r3.${PR_CONFIG}"
include nslu2-kernel.inc
@@ -29,6 +29,7 @@ N2K_PATCHES = "\
file://15-ixp4xx-set-irq-type-return.patch;patch=1 \
file://15-ixp4xx-writesb-l-w.patch;patch=1 \
file://20-timer.patch;patch=1 \
+ file://25-nslu2-arch-reset.patch;patch=1 \
file://30-i2c-x1205.patch;patch=1 \
file://50-nslu2-arch.patch;patch=1 \
file://50-nslu2-general.patch;patch=1 \