mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 19:11:53 +00:00
bootstd: Switch bootdev scanning to use labels
At present we set up the bootdev order at the start, then scan the bootdevs one by one. However this approach cannot be used with hunters, since the bootdevs may not exist until the hunter is used. Nor can we just run all the hunters at the start, since that violate's U-Boot's 'lazy init' requirement. It also increases boot time. So we need to adjust the algorithm to scan by labels instead. As a first step, drop the dev_order[] array in favour of a list of labels. Update the name of bootdev_setup_iter_order() to better reflect what it does. Update some related comments and log messages. Also disable a few tests until a later commit where we can use them. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
18552d2a72
commit
47aedc29dc
6 changed files with 147 additions and 152 deletions
|
@ -265,21 +265,22 @@ int bootdev_find_by_any(const char *name, struct udevice **devp,
|
|||
int *method_flagsp);
|
||||
|
||||
/**
|
||||
* bootdev_setup_iter_order() - Set up the ordering of bootdevs to scan
|
||||
* bootdev_setup_iter() - Set up iteration through bootdevs
|
||||
*
|
||||
* This sets up the ordering information in @iter, based on the priority of each
|
||||
* bootdev and the bootdev-order property in the bootstd node
|
||||
*
|
||||
* If a single device is requested, no ordering is needed
|
||||
* This sets up the an interation, based on the priority of each bootdev, the
|
||||
* bootdev-order property in the bootstd node (or the boot_targets env var).
|
||||
*
|
||||
* @iter: Iterator to update with the order
|
||||
* @devp: On entry, *devp is NULL to scan all, otherwise this is the (single)
|
||||
* device to scan. Returns the first device to use, which is the passed-in
|
||||
* @devp if it was non-NULL
|
||||
* @method_flagsp: If non-NULL, returns any flags implied by the label
|
||||
* (enum bootflow_meth_flags_t), 0 if none
|
||||
* Return: 0 if OK, -ENOENT if no bootdevs, -ENOMEM if out of memory, other -ve
|
||||
* on other error
|
||||
*/
|
||||
int bootdev_setup_iter_order(struct bootflow_iter *iter, struct udevice **devp);
|
||||
int bootdev_setup_iter(struct bootflow_iter *iter, struct udevice **devp,
|
||||
int *method_flagsp);
|
||||
|
||||
/**
|
||||
* bootdev_list_hunters() - List the available bootdev hunters
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue