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)
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++) {
if (ret)
return log_msg_ret("arr", ret);
- *expp = exp;
-
return 0;
}
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);
/**
* 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_apply_theme() - Apply a theme to a bootmenu
*
ut_assertok(scan_mmc4_bootdev(uts));
ut_assertok(bootflow_menu_new(&exp));
+ ut_assertok(bootflow_menu_add_all(exp));
node = ofnode_path("/bootstd/theme");
ut_assert(ofnode_valid(node));
ut_assertok(bootflow_menu_apply_theme(exp, node));