diff options
Diffstat (limited to 'boot/bootflow_menu.c')
-rw-r--r-- | boot/bootflow_menu.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/boot/bootflow_menu.c b/boot/bootflow_menu.c index ed7c0768c7b..f731d7858b2 100644 --- a/boot/bootflow_menu.c +++ b/boot/bootflow_menu.c @@ -32,14 +32,12 @@ struct menu_priv { int bootflow_menu_new(struct expo **expp) { - struct udevice *last_bootdev; struct scene_obj_menu *menu; struct menu_priv *priv; - struct bootflow *bflow; struct scene *scn; struct expo *exp; void *logo; - int ret, i; + int ret; priv = calloc(1, sizeof(*priv)); if (!priv) @@ -74,6 +72,26 @@ int bootflow_menu_new(struct expo **expp) if (ret < 0) return log_msg_ret("new", -EINVAL); + *expp = exp; + + return 0; +} + +int bootflow_menu_add_all(struct expo *exp) +{ + struct menu_priv *priv = exp->priv; + struct udevice *last_bootdev; + struct bootflow *bflow; + struct scene *scn; + uint scene_id; + int ret, i; + + ret = expo_first_scene_id(exp); + if (ret < 0) + return log_msg_ret("scn", ret); + scene_id = ret; + scn = expo_lookup_scene_id(exp, scene_id); + last_bootdev = NULL; for (ret = bootflow_first_glob(&bflow), i = 0; !ret && i < 36; ret = bootflow_next_glob(&bflow), i++) { @@ -133,8 +151,6 @@ int bootflow_menu_new(struct expo **expp) if (ret) return log_msg_ret("arr", ret); - *expp = exp; - return 0; } @@ -184,7 +200,10 @@ int bootflow_menu_start(struct bootstd_priv *std, bool text_mode, ret = bootflow_menu_new(&exp); if (ret) - return log_msg_ret("exp", ret); + return log_msg_ret("bmn", ret); + ret = bootflow_menu_add_all(exp); + if (ret) + return log_msg_ret("bma", ret); if (ofnode_valid(std->theme)) { ret = bootflow_menu_apply_theme(exp, std->theme); |