aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteffen Sledz <sledz@dresearch.de>2010-05-21 08:45:29 +0200
committerSteffen Sledz <sledz@dresearch.de>2010-05-25 09:47:11 +0200
commitde05c6b5748b787d3d945b9df0a6135d9ec658f7 (patch)
tree9b9070eebee7d2828f997aee98a02462a5050f43
parent4efe6de5a7358487f4efe6aa8d16fecc190debc4 (diff)
downloadopenembedded-de05c6b5748b787d3d945b9df0a6135d9ec658f7.tar.gz
u-boot-2009.03: abortboot behaviour changed for hipox machine
* ignore all chars sent before boot prompt * accept only '.' to abort boot Signed-off-by: Mario Schuknecht <m.schuknecht@dresearch.de> Acked-by: Steffen Sledz <sledz@dresearch.de>
-rw-r--r--recipes/u-boot/u-boot-2009.03/hipox/10-hipox-boot-abort-key.patch73
-rw-r--r--recipes/u-boot/u-boot_2009.03.bb3
2 files changed, 75 insertions, 1 deletions
diff --git a/recipes/u-boot/u-boot-2009.03/hipox/10-hipox-boot-abort-key.patch b/recipes/u-boot/u-boot-2009.03/hipox/10-hipox-boot-abort-key.patch
new file mode 100644
index 0000000000..86838d676d
--- /dev/null
+++ b/recipes/u-boot/u-boot-2009.03/hipox/10-hipox-boot-abort-key.patch
@@ -0,0 +1,73 @@
+diff -Nurd u-boot-2009.03.orig//common/main.c u-boot-2009.03/common/main.c
+--- u-boot-2009.03.orig//common/main.c 2010-05-25 08:10:52.000000000 +0200
++++ u-boot-2009.03/common/main.c 2010-05-25 08:16:03.000000000 +0200
+@@ -62,6 +62,9 @@
+
+ #define MAX_DELAY_STOP_STR 32
+
++/* The boot abort character '.' */
++#define BOOT_ABORT_CHAR 0x2E
++
+ #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
+ static int abortboot(int);
+ #endif
+@@ -214,11 +217,18 @@
+ static __inline__ int abortboot(int bootdelay)
+ {
+ int abort = 0;
++ // flush 16 byte UART read fifo
++ int i;
++ for(i=0; (i<16) && tstc(); ++i)
++ {
++ int dropbyte = getc(); /* consume input */
++ printf("drop UART byte: 0x%02X\n", dropbyte);
++ }
+
+ #ifdef CONFIG_MENUPROMPT
+ printf(CONFIG_MENUPROMPT);
+ #else
+- printf("Hit any key to stop autoboot: %2d ", bootdelay);
++ printf("Hit '%c' to stop autoboot: %2d ", BOOT_ABORT_CHAR, bootdelay);
+ #endif
+
+ #if defined CONFIG_ZERO_BOOTDELAY_CHECK
+@@ -228,9 +238,12 @@
+ */
+ if (bootdelay >= 0) {
+ if (tstc()) { /* we got a key press */
+- (void) getc(); /* consume input */
+- puts ("\b\b\b 0");
+- abort = 1; /* don't auto boot */
++ int currkey = getc(); /* consume input */
++ if(BOOT_ABORT_CHAR == currkey)
++ {
++ puts ("\b\b\b 0");
++ abort = 1; /* don't auto boot */
++ }
+ }
+ }
+ #endif
+@@ -242,14 +255,20 @@
+ /* delay 100 * 10ms */
+ for (i=0; !abort && i<100; ++i) {
+ if (tstc()) { /* we got a key press */
++# ifdef CONFIG_MENUKEY
+ abort = 1; /* don't auto boot */
+ bootdelay = 0; /* no more delay */
+-# ifdef CONFIG_MENUKEY
+ menukey = getc();
++ break;
+ # else
+- (void) getc(); /* consume input */
++ int currkey = getc(); /* consume input */
++ if(BOOT_ABORT_CHAR == currkey)
++ {
++ abort = 1; /* don't auto boot */
++ bootdelay = 0; /* no more delay */
++ break;
++ }
+ # endif
+- break;
+ }
+ udelay(10000);
+ }
diff --git a/recipes/u-boot/u-boot_2009.03.bb b/recipes/u-boot/u-boot_2009.03.bb
index 7749aea61e..7f22087382 100644
--- a/recipes/u-boot/u-boot_2009.03.bb
+++ b/recipes/u-boot/u-boot_2009.03.bb
@@ -1,4 +1,4 @@
-PR = "r2"
+PR = "r3"
require u-boot.inc
DEFAULT_PREFERENCE = "-1"
@@ -13,6 +13,7 @@ SRC_URI_append_hipox = "file://00-hipox.patch;patch=1 \
file://02-hipox-enable-mmu.patch;patch=1 \
file://03-hipox-direct-switch.patch;patch=1 \
file://04-hipox-env.patch;patch=1 \
+ file://10-hipox-boot-abort-key.patch;patch=1 \
"
TARGET_LDFLAGS = ""