aboutsummaryrefslogtreecommitdiff
path: root/include/bootflow.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/bootflow.h')
-rw-r--r--include/bootflow.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/include/bootflow.h b/include/bootflow.h
index 32dbbbbe26..c201246c6d 100644
--- a/include/bootflow.h
+++ b/include/bootflow.h
@@ -7,8 +7,12 @@
#ifndef __bootflow_h
#define __bootflow_h
+#include <dm/ofnode_decl.h>
#include <linux/list.h>
+struct bootstd_priv;
+struct expo;
+
/**
* enum bootflow_state_t - states that a particular bootflow can be in
*
@@ -49,9 +53,13 @@ enum bootflow_state_t {
* @state: Current state (enum bootflow_state_t)
* @subdir: Subdirectory to fetch files from (with trailing /), or NULL if none
* @fname: Filename of bootflow file (allocated)
+ * @logo: Logo to display for this bootflow (BMP format)
+ * @logo_size: Size of the logo in bytes
* @buf: Bootflow file contents (allocated)
* @size: Size of bootflow file in bytes
* @err: Error number received (0 if OK)
+ * @os_name: Name of the OS / distro being booted, or NULL if not known
+ * (allocated)
*/
struct bootflow {
struct list_head bm_node;
@@ -65,9 +73,12 @@ struct bootflow {
enum bootflow_state_t state;
char *subdir;
char *fname;
+ void *logo;
+ uint logo_size;
char *buf;
int size;
int err;
+ char *os_name;
};
/**
@@ -329,4 +340,33 @@ int bootflow_iter_uses_network(const struct bootflow_iter *iter);
*/
int bootflow_iter_uses_system(const struct bootflow_iter *iter);
+/**
+ * bootflow_menu_new() - Create a new bootflow menu
+ *
+ * @expp: Returns the expo created
+ * Returns 0 on success, -ve on error
+ */
+int bootflow_menu_new(struct expo **expp);
+
+/**
+ * bootflow_menu_apply_theme() - Apply a theme to a bootmenu
+ *
+ * @exp: Expo to update
+ * @node: Node containing the theme information
+ * Returns 0 on success, -ve on error
+ */
+int bootflow_menu_apply_theme(struct expo *exp, ofnode node);
+
+/**
+ * bootflow_menu_run() - Create and run a menu of available bootflows
+ *
+ * @std: Bootstd information
+ * @text_mode: Uses a text-based menu suitable for a serial port
+ * @bflowp: Returns chosen bootflow (set to NULL if nothing is chosen)
+ * @return 0 if an option was chosen, -EAGAIN if nothing was chosen, -ve on
+ * error
+ */
+int bootflow_menu_run(struct bootstd_priv *std, bool text_mode,
+ struct bootflow **bflowp);
+
#endif