/*
 * (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);

/**
 * bootretry_init_cmd_timeout() - set up command timeout
 *
 * Get the required command timeout from the environment.
 */
void bootretry_init_cmd_timeout(void);

/**
 * bootretry_reset_cmd_timeout() - reset command timeout
 *
 * Reset the command timeout so that the user has a fresh start. This is
 * typically used when input is received from the user.
 */
void bootretry_reset_cmd_timeout(void);

/** bootretry_dont_retry() - Indicate that we should not retry the boot */
void bootretry_dont_retry(void);
#else
static inline int bootretry_tstc_timeout(void)
{
	return 0;
}

static inline void bootretry_init_cmd_timeout(void)
{
}

static inline void bootretry_reset_cmd_timeout(void)
{
}

static inline void bootretry_dont_retry(void)
{
}

#endif

#endif
