diff options
author | Simon Kagstrom <simon.kagstrom@netinsight.net> | 2014-10-28 12:19:00 +0100 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2014-11-10 09:59:30 +1100 |
commit | 4b4b13d5fec8a82ed2780c487e49cfc4321a8c14 (patch) | |
tree | d021c3f9a715abfbc2b51100c7f32e5e61783d60 /arch/powerpc/boot/serial.c | |
parent | 90029640fd5963343fb862d419db161bc0424120 (diff) | |
download | linux-stable-4b4b13d5fec8a82ed2780c487e49cfc4321a8c14.tar.gz linux-stable-4b4b13d5fec8a82ed2780c487e49cfc4321a8c14.tar.bz2 linux-stable-4b4b13d5fec8a82ed2780c487e49cfc4321a8c14.zip |
powerpc/boot: Parse chosen/cmdline-timeout parameter
On some platforms a 5 second timeout during boot might be quite long, so
make it configurable. Run the loop at least once to let the user stop
the boot by holding a key pressed. If the timeout is set to 0, don't
wait for input, which can be used as a workaround if the boot hangs on
random data coming in on the serial port.
Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
[mpe: Changelog wording & whitespace]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/boot/serial.c')
-rw-r--r-- | arch/powerpc/boot/serial.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/powerpc/boot/serial.c b/arch/powerpc/boot/serial.c index f2156f07571f..167ee9433de6 100644 --- a/arch/powerpc/boot/serial.c +++ b/arch/powerpc/boot/serial.c @@ -33,7 +33,7 @@ static void serial_write(const char *buf, int len) scdp->putc(*buf++); } -static void serial_edit_cmdline(char *buf, int len) +static void serial_edit_cmdline(char *buf, int len, unsigned int timeout) { int timer = 0, count; char ch, *cp; @@ -44,7 +44,7 @@ static void serial_edit_cmdline(char *buf, int len) cp = &buf[count]; count++; - while (timer++ < 5*1000) { + do { if (scdp->tstc()) { while (((ch = scdp->getc()) != '\n') && (ch != '\r')) { /* Test for backspace/delete */ @@ -70,7 +70,7 @@ static void serial_edit_cmdline(char *buf, int len) break; /* Exit 'timer' loop */ } udelay(1000); /* 1 msec */ - } + } while (timer++ < timeout); *cp = 0; } |