bootstd: Allow iterating to the next label in a list

Add a function which moves to the next label in a list of labels. This
allows processing the boot_targets environment variable.

This works using a new label list in the bootflow iterator. The logic to
set this up is included in a subsequent commit.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-01-17 10:48:10 -07:00 committed by Tom Rini
parent 66e3dce787
commit e4b694893f
4 changed files with 123 additions and 3 deletions

View file

@ -333,6 +333,22 @@ int bootdev_hunt_prio(enum bootdev_prio_t prio, bool show);
int bootdev_hunt_and_find_by_label(const char *label, struct udevice **devp,
int *method_flagsp);
/**
* bootdev_next_label() - Move to the next bootdev in the label sequence
*
* Looks through the remaining labels until it finds one that matches a bootdev.
* Bootdev scanners are used as needed. For example a label "mmc1" results in
* running the "mmc" bootdrv.
*
* @iter: Interation info, containing iter->cur_label
* @devp: New bootdev found, if any was found
* @method_flagsp: If non-NULL, returns any flags implied by the label
* (enum bootflow_meth_flags_t), 0 if none
* Returns 0 if OK, -ENODEV if no bootdev was found
*/
int bootdev_next_label(struct bootflow_iter *iter, struct udevice **devp,
int *method_flagsp);
#if CONFIG_IS_ENABLED(BOOTSTD)
/**
* bootdev_setup_for_dev() - Bind a new bootdev device (deprecated)