1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2000
4 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5 *
6 * Add to readline cmdline-editing by
7 * (C) Copyright 2005
8 * JinHua Luo, GuangDong Linux Center, <luo.jinhua@gd-linux.com>
9 */
10
11#ifndef __AUTOBOOT_H
12#define __AUTOBOOT_H
13
14#include <stdbool.h>
15
16#ifdef CONFIG_SANDBOX
17
18/**
19 * autoboot_keyed() - check whether keyed autoboot should be used
20 *
21 * This is only implemented for sandbox since other platforms don't have a way
22 * of controlling the feature at runtime.
23 *
24 * Return: true if enabled, false if not
25 */
26bool autoboot_keyed(void);
27
28/**
29 * autoboot_set_keyed() - set whether keyed autoboot should be used
30 *
31 * @autoboot_keyed: true to enable the feature, false to disable
32 * Return: old value of the flag
33 */
34bool autoboot_set_keyed(bool autoboot_keyed);
35#else
36static inline bool autoboot_keyed(void)
37{
38	/* There is no runtime flag, so just use the CONFIG */
39	return IS_ENABLED(CONFIG_AUTOBOOT_KEYED);
40}
41
42static inline bool autoboot_set_keyed(bool autoboot_keyed)
43{
44	/* There is no runtime flag to set */
45	return false;
46}
47
48#endif
49
50#ifdef CONFIG_AUTOBOOT
51/**
52 * bootdelay_process() - process the bootd delay
53 *
54 * Process the boot delay, boot limit, then get the value of either
55 * bootcmd, failbootcmd or altbootcmd depending on the current state.
56 * Return this command so it can be executed.
57 *
58 * Return: command to executed
59 */
60const char *bootdelay_process(void);
61
62/**
63 * autoboot_command() - run the autoboot command
64 *
65 * If enabled, run the autoboot command returned from bootdelay_process().
66 * Also do the CONFIG_AUTOBOOT_MENUKEY processing if enabled.
67 *
68 * @cmd: Command to run
69 */
70void autoboot_command(const char *cmd);
71#else
72static inline const char *bootdelay_process(void)
73{
74	return NULL;
75}
76
77static inline void autoboot_command(const char *s)
78{
79}
80#endif
81
82#endif
83