blob: eb204995d079b7b893df1bb21f880426bbb5eb6b [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>
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 *
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010024 * Return: true if enabled, false if not
Simon Glassd8c60172021-07-24 15:14:39 -060025 */
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
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010032 * Return: old value of the flag
Simon Glassd8c60172021-07-24 15:14:39 -060033 */
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
Masahiro Yamada622a01c2016-06-20 17:33:39 +090050#ifdef CONFIG_AUTOBOOT
Simon Glass5b47e302014-04-10 20:01:35 -060051/**
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 *
Heinrich Schuchardt47b4c022022-01-19 18:05:50 +010058 * Return: command to executed
Simon Glass5b47e302014-04-10 20:01:35 -060059 */
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().
Simon Glass9e476d92019-07-20 20:51:21 -060066 * Also do the CONFIG_AUTOBOOT_MENUKEY processing if enabled.
Simon Glass5b47e302014-04-10 20:01:35 -060067 *
68 * @cmd: Command to run
69 */
70void autoboot_command(const char *cmd);
Simon Glass7b6a95a2014-04-10 20:01:28 -060071#else
Simon Glass5b47e302014-04-10 20:01:35 -060072static inline const char *bootdelay_process(void)
73{
74 return NULL;
75}
76
77static inline void autoboot_command(const char *s)
Simon Glass7b6a95a2014-04-10 20:01:28 -060078{
79}
80#endif
81
82#endif