This code is only used by one board, so it seems a shame to clutter up the readline code with it. Move it into its own file. Signed-off-by: Simon Glass <sjg@chromium.org>master
parent
30354978ff
commit
0098e179e1
@ -0,0 +1,59 @@ |
||||
/*
|
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <bootretry.h> |
||||
#include <cli.h> |
||||
#include <errno.h> |
||||
#include <watchdog.h> |
||||
|
||||
#ifndef CONFIG_BOOT_RETRY_MIN |
||||
#define CONFIG_BOOT_RETRY_MIN CONFIG_BOOT_RETRY_TIME |
||||
#endif |
||||
|
||||
static uint64_t endtime; /* must be set, default is instant timeout */ |
||||
static int retry_time = -1; /* -1 so can call readline before main_loop */ |
||||
|
||||
/***************************************************************************
|
||||
* initialize command line timeout |
||||
*/ |
||||
void init_cmd_timeout(void) |
||||
{ |
||||
char *s = getenv("bootretry"); |
||||
|
||||
if (s != NULL) |
||||
retry_time = (int)simple_strtol(s, NULL, 10); |
||||
else |
||||
retry_time = CONFIG_BOOT_RETRY_TIME; |
||||
|
||||
if (retry_time >= 0 && retry_time < CONFIG_BOOT_RETRY_MIN) |
||||
retry_time = CONFIG_BOOT_RETRY_MIN; |
||||
} |
||||
|
||||
/***************************************************************************
|
||||
* reset command line timeout to retry_time seconds |
||||
*/ |
||||
void reset_cmd_timeout(void) |
||||
{ |
||||
endtime = endtick(retry_time); |
||||
} |
||||
|
||||
int bootretry_tstc_timeout(void) |
||||
{ |
||||
while (!tstc()) { /* while no incoming data */ |
||||
if (retry_time >= 0 && get_ticks() > endtime) |
||||
return -ETIMEDOUT; |
||||
WATCHDOG_RESET(); |
||||
} |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
void bootretry_dont_retry(void) |
||||
{ |
||||
retry_time = -1; |
||||
} |
@ -0,0 +1,31 @@ |
||||
/*
|
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#ifndef __bootretry_h |
||||
#define __bootretry_h |
||||
|
||||
#ifdef CONFIG_BOOT_RETRY_TIME |
||||
/**
|
||||
* bootretry_tstc_timeout() - ensure we get a keypress before timeout |
||||
* |
||||
* Check for a keypress repeatedly, resetting the watchdog each time. If a |
||||
* keypress is not received within the command timeout, return an error. |
||||
* |
||||
* @return 0 if a key is received in time, -ETIMEDOUT if not |
||||
*/ |
||||
int bootretry_tstc_timeout(void); |
||||
#else |
||||
static inline int bootretry_tstc_timeout(void) |
||||
{ |
||||
return 0; |
||||
} |
||||
#endif |
||||
|
||||
void init_cmd_timeout(void); |
||||
void reset_cmd_timeout(void); |
||||
|
||||
#endif |
Loading…
Reference in new issue