mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
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:
@@ -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)
|
||||
|
||||
@@ -175,6 +175,8 @@ enum bootflow_meth_flags_t {
|
||||
* @cur_dev: Current bootdev number, an index into @dev_order[]
|
||||
* @dev_order: List of bootdevs to scan, in order of priority. The scan starts
|
||||
* with the first one on the list
|
||||
* @labels: List of labels to scan for bootdevs
|
||||
* @cur_label: Current label being processed
|
||||
* @num_methods: Number of bootmeth devices in @method_order
|
||||
* @cur_method: Current method number, an index into @method_order
|
||||
* @first_glob_method: First global method, if any, else -1
|
||||
@@ -196,6 +198,8 @@ struct bootflow_iter {
|
||||
int num_devs;
|
||||
int cur_dev;
|
||||
struct udevice **dev_order;
|
||||
const char *const *labels;
|
||||
int cur_label;
|
||||
int num_methods;
|
||||
int cur_method;
|
||||
int first_glob_method;
|
||||
|
||||
Reference in New Issue
Block a user