blob: c68bd79f8dca9e9b890358e578f5c2131ed324df [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Simon Glass7b6a95a2014-04-10 20:01:28 -06002/*
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>
Simon Glass7b6a95a2014-04-10 20:01:28 -06009 */
10
11#ifndef __AUTOBOOT_H
12#define __AUTOBOOT_H
13
Simon Glassd8c60172021-07-24 15:14:39 -060014#include <stdbool.h>
Tom Rini728cb882024-04-27 08:11:00 -060015#include <stddef.h>
Simon Glassd8c60172021-07-24 15:14:39 -060016
17#ifdef CONFIG_SANDBOX
18
19/**
20 * autoboot_keyed() - check whether keyed autoboot should be used
21 *
22 * This is only implemented for sandbox since other platforms don't have a way
23 * of controlling the feature at runtime.
24 *
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010025 * Return: true if enabled, false if not
Simon Glassd8c60172021-07-24 15:14:39 -060026 */
27bool autoboot_keyed(void);
28
29/**
30 * autoboot_set_keyed() - set whether keyed autoboot should be used
31 *
32 * @autoboot_keyed: true to enable the feature, false to disable
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010033 * Return: old value of the flag
Simon Glassd8c60172021-07-24 15:14:39 -060034 */
35bool autoboot_set_keyed(bool autoboot_keyed);
36#else
37static inline bool autoboot_keyed(void)
38{
39 /* There is no runtime flag, so just use the CONFIG */
40 return IS_ENABLED(CONFIG_AUTOBOOT_KEYED);
41}
42
43static inline bool autoboot_set_keyed(bool autoboot_keyed)
44{
45 /* There is no runtime flag to set */
46 return false;
47}
48
49#endif
50
Masahiro Yamada622a01c2016-06-20 17:33:39 +090051#ifdef CONFIG_AUTOBOOT
Simon Glass5b47e302014-04-10 20:01:35 -060052/**
53 * bootdelay_process() - process the bootd delay
54 *
55 * Process the boot delay, boot limit, then get the value of either
56 * bootcmd, failbootcmd or altbootcmd depending on the current state.
57 * Return this command so it can be executed.
58 *
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010059 * Return: command to executed
Simon Glass5b47e302014-04-10 20:01:35 -060060 */
61const char *bootdelay_process(void);
62
63/**
64 * autoboot_command() - run the autoboot command
65 *
66 * If enabled, run the autoboot command returned from bootdelay_process().
Simon Glass9e476d92019-07-20 20:51:21 -060067 * Also do the CONFIG_AUTOBOOT_MENUKEY processing if enabled.
Simon Glass5b47e302014-04-10 20:01:35 -060068 *
69 * @cmd: Command to run
70 */
71void autoboot_command(const char *cmd);
Simon Glass7b6a95a2014-04-10 20:01:28 -060072#else
Simon Glass5b47e302014-04-10 20:01:35 -060073static inline const char *bootdelay_process(void)
74{
75 return NULL;
76}
77
78static inline void autoboot_command(const char *s)
Simon Glass7b6a95a2014-04-10 20:01:28 -060079{
80}
81#endif
82
83#endif