[U-Boot] [PATCH] common/main: support bootdelay=0 for CONFIG_AUTOBOOT_KEYED

Support bootdelay=0 in abortboot for the CONFIG_AUTOBOOT_KEYED case similar to the CONFIG_ZERO_BOOTDELAY_CHECK support for the !CONFIG_AUTOBOOT_KEYED case.
Do this by reversing the loop so we do atleast one iteration before checking for timeout.
Signed-off-by: Peter Korsgaard jacmet@sunsite.dk --- common/main.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/common/main.c b/common/main.c index a999a5d..4c4f780 100644 --- a/common/main.c +++ b/common/main.c @@ -158,7 +158,19 @@ static __inline__ int abortboot(int bootdelay) /* In order to keep up with incoming data, check timeout only * when catch up. */ - while (!abort && get_ticks() <= etime) { + do { + if (tstc()) { + if (presskey_len < presskey_max) { + presskey [presskey_len ++] = getc(); + } + else { + for (i = 0; i < presskey_max - 1; i ++) + presskey [i] = presskey [i + 1]; + + presskey [i] = getc(); + } + } + for (i = 0; i < sizeof(delaykey) / sizeof(delaykey[0]); i ++) { if (delaykey[i].len > 0 && presskey_len >= delaykey[i].len && @@ -178,19 +190,8 @@ static __inline__ int abortboot(int bootdelay) abort = 1; } } + } while (!abort && get_ticks() <= etime);
- if (tstc()) { - if (presskey_len < presskey_max) { - presskey [presskey_len ++] = getc(); - } - else { - for (i = 0; i < presskey_max - 1; i ++) - presskey [i] = presskey [i + 1]; - - presskey [i] = getc(); - } - } - } # if DEBUG_BOOTKEYS if (!abort) puts("key timeout\n");

Dear Peter Korsgaard,
In message 1228922656-27689-1-git-send-email-jacmet@sunsite.dk you wrote:
Support bootdelay=0 in abortboot for the CONFIG_AUTOBOOT_KEYED case similar to the CONFIG_ZERO_BOOTDELAY_CHECK support for the !CONFIG_AUTOBOOT_KEYED case.
Ummm... how do you enter the "password" when you have no time to do this?
Best regards,
Wolfgang Denk

"Wolfgang" == Wolfgang Denk wd@denx.de writes:
Wolfgang> Dear Peter Korsgaard, Wolfgang> In message 1228922656-27689-1-git-send-email-jacmet@sunsite.dk you wrote:
Support bootdelay=0 in abortboot for the CONFIG_AUTOBOOT_KEYED case similar to the CONFIG_ZERO_BOOTDELAY_CHECK support for the !CONFIG_AUTOBOOT_KEYED case.
Wolfgang> Ummm... how do you enter the "password" when you have no time to do Wolfgang> this?
Before the loop starts, just like the CONFIG_ZERO_BOOTDELAY_CHECK stuff.
E.G. I have:
#define CONFIG_BOOTDELAY 0 #define CONFIG_AUTOBOOT_KEYED 1 #define CONFIG_AUTOBOOT_STOP_STR "c"
And I can stop autoboot if I connect a serial cable to the board and hold down the 'c' button while powering up the board.

Dear Peter Korsgaard,
In message 1228922656-27689-1-git-send-email-jacmet@sunsite.dk you wrote:
Support bootdelay=0 in abortboot for the CONFIG_AUTOBOOT_KEYED case similar to the CONFIG_ZERO_BOOTDELAY_CHECK support for the !CONFIG_AUTOBOOT_KEYED case.
Do this by reversing the loop so we do atleast one iteration before checking for timeout.
Signed-off-by: Peter Korsgaard jacmet@sunsite.dk
common/main.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (2)
-
Peter Korsgaard
-
Wolfgang Denk