diff options
Diffstat (limited to 'include/bootflow.h')
| -rw-r--r-- | include/bootflow.h | 79 | 
1 files changed, 66 insertions, 13 deletions
| diff --git a/include/bootflow.h b/include/bootflow.h index d408b8c85bd..32422067723 100644 --- a/include/bootflow.h +++ b/include/bootflow.h @@ -11,10 +11,11 @@  #include <bootdev.h>  #include <image.h>  #include <dm/ofnode_decl.h> -#include <linux/list.h> +#include <linux/types.h>  struct bootstd_priv;  struct expo; +struct scene;  enum {  	BOOTFLOW_MAX_USED_DEVS	= 16, @@ -488,12 +489,40 @@ int bootflow_iter_check_system(const struct bootflow_iter *iter);  /**   * bootflow_menu_new() - Create a new bootflow menu   * + * This is initially empty. Call bootflow_menu_add_all() to add all the + * bootflows to it. + *   * @expp: Returns the expo created   * Returns 0 on success, -ve on error   */  int bootflow_menu_new(struct expo **expp);  /** + * bootflow_menu_add_all() - Add all bootflows to a menu + * + * Loops through all bootflows and adds them to the menu + * + * @exp: Menu to update + * Return 0 on success, -ve on error + */ +int bootflow_menu_add_all(struct expo *exp); + +/** + * bootflow_menu_add() - Add a bootflow to a menu + * + * Adds a new bootflow to the end of a menu. The caller must be careful to pass + * seq=0 for the first bootflow added, 1 for the second, etc. + * + * @exp: Menu to update + * @bflow: Bootflow to add + * @seq: Sequence number of this bootflow (0 = first) + * @scnp: Returns a pointer to the scene + * Return 0 on success, -ve on error + */ +int bootflow_menu_add(struct expo *exp, struct bootflow *bflow, int seq, +		      struct scene **scnp); + +/**   * bootflow_menu_apply_theme() - Apply a theme to a bootmenu   *   * @exp: Expo to update @@ -502,18 +531,6 @@ int bootflow_menu_new(struct expo **expp);   */  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); -  #define BOOTFLOWCL_EMPTY	((void *)1)  /** @@ -638,4 +655,40 @@ struct bootflow_img *bootflow_img_add(struct bootflow *bflow, const char *fname,   */  int bootflow_get_seq(const struct bootflow *bflow); +/** + * bootflow_menu_setup() - Set up a menu for bootflows + * + * Set up the expo, initially empty + * + * @std: bootstd information + * @text_mode: true to show the menu in text mode, false to use video display + * @expp: Returns the expo created, on success + * Return: 0 if OK, -ve on error + */ +int bootflow_menu_setup(struct bootstd_priv *std, bool text_mode, +			struct expo **expp); + +/** + * bootflow_menu_start() - Start up a menu for bootflows + * + * Set up the expo and add items + * + * @std: bootstd information + * @text_mode: true to show the menu in text mode, false to use video display + * @expp: Returns the expo created, on success + * Return: 0 if OK, -ve on error + */ +int bootflow_menu_start(struct bootstd_priv *std, bool text_mode, +			struct expo **expp); + +/** + * bootflow_menu_poll() - Poll a menu for user action + * + * @exp: Expo to poll + * @seqp: Returns the bootflow chosen or currently pointed to (numbered from 0) + * Return: 0 if a bootflow was chosen, -EAGAIN if nothing is chosen yet, -EPIPE + *	if the user quit, -ERESTART if the expo needs refreshing + */ +int bootflow_menu_poll(struct expo *exp, int *seqp); +  #endif | 
