bootflow: Rename bootflow_flags_t

These flags actually relate to the iterator, not the bootflow struct
itself. Rename them.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2023-02-22 12:17:03 -07:00
parent fe7e9245c5
commit 4f806f31fc
7 changed files with 60 additions and 59 deletions

View file

@ -629,11 +629,11 @@ int bootdev_next_prio(struct bootflow_iter *iter, struct udevice **devp)
if (++iter->cur_prio == BOOTDEVP_COUNT) if (++iter->cur_prio == BOOTDEVP_COUNT)
return log_msg_ret("fin", -ENODEV); return log_msg_ret("fin", -ENODEV);
if (iter->flags & BOOTFLOWF_HUNT) { if (iter->flags & BOOTFLOWIF_HUNT) {
/* hunt to find new bootdevs */ /* hunt to find new bootdevs */
ret = bootdev_hunt_prio(iter->cur_prio, ret = bootdev_hunt_prio(iter->cur_prio,
iter->flags & iter->flags &
BOOTFLOWF_SHOW); BOOTFLOWIF_SHOW);
log_debug("- hunt ret %d\n", ret); log_debug("- hunt ret %d\n", ret);
if (ret) if (ret)
return log_msg_ret("hun", ret); return log_msg_ret("hun", ret);
@ -657,7 +657,7 @@ int bootdev_setup_iter(struct bootflow_iter *iter, const char *label,
struct udevice **devp, int *method_flagsp) struct udevice **devp, int *method_flagsp)
{ {
struct udevice *bootstd, *dev = NULL; struct udevice *bootstd, *dev = NULL;
bool show = iter->flags & BOOTFLOWF_SHOW; bool show = iter->flags & BOOTFLOWIF_SHOW;
int method_flags; int method_flags;
int ret; int ret;
@ -668,7 +668,7 @@ int bootdev_setup_iter(struct bootflow_iter *iter, const char *label,
} }
/* hunt for any pre-scan devices */ /* hunt for any pre-scan devices */
if (iter->flags & BOOTFLOWF_HUNT) { if (iter->flags & BOOTFLOWIF_HUNT) {
ret = bootdev_hunt_prio(BOOTDEVP_1_PRE_SCAN, show); ret = bootdev_hunt_prio(BOOTDEVP_1_PRE_SCAN, show);
if (ret) if (ret)
return log_msg_ret("pre", ret); return log_msg_ret("pre", ret);
@ -676,7 +676,7 @@ int bootdev_setup_iter(struct bootflow_iter *iter, const char *label,
/* Handle scanning a single device */ /* Handle scanning a single device */
if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && label) { if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && label) {
if (iter->flags & BOOTFLOWF_HUNT) { if (iter->flags & BOOTFLOWIF_HUNT) {
ret = bootdev_hunt(label, show); ret = bootdev_hunt(label, show);
if (ret) if (ret)
return log_msg_ret("hun", ret); return log_msg_ret("hun", ret);
@ -687,11 +687,11 @@ int bootdev_setup_iter(struct bootflow_iter *iter, const char *label,
log_debug("method_flags: %x\n", method_flags); log_debug("method_flags: %x\n", method_flags);
if (method_flags & BOOTFLOW_METHF_SINGLE_UCLASS) if (method_flags & BOOTFLOW_METHF_SINGLE_UCLASS)
iter->flags |= BOOTFLOWF_SINGLE_UCLASS; iter->flags |= BOOTFLOWIF_SINGLE_UCLASS;
else if (method_flags & BOOTFLOW_METHF_SINGLE_DEV) else if (method_flags & BOOTFLOW_METHF_SINGLE_DEV)
iter->flags |= BOOTFLOWF_SINGLE_DEV; iter->flags |= BOOTFLOWIF_SINGLE_DEV;
else else
iter->flags |= BOOTFLOWF_SINGLE_MEDIA; iter->flags |= BOOTFLOWIF_SINGLE_MEDIA;
log_debug("Selected label: %s, flags %x\n", label, iter->flags); log_debug("Selected label: %s, flags %x\n", label, iter->flags);
} else { } else {
bool ok; bool ok;

View file

@ -139,8 +139,8 @@ static void bootflow_iter_set_dev(struct bootflow_iter *iter,
if (dev && iter->num_devs < iter->max_devs) if (dev && iter->num_devs < iter->max_devs)
iter->dev_used[iter->num_devs++] = dev; iter->dev_used[iter->num_devs++] = dev;
if ((iter->flags & (BOOTFLOWF_SHOW | BOOTFLOWF_SINGLE_DEV)) == if ((iter->flags & (BOOTFLOWIF_SHOW | BOOTFLOWIF_SINGLE_DEV)) ==
BOOTFLOWF_SHOW) { BOOTFLOWIF_SHOW) {
if (dev) if (dev)
printf("Scanning bootdev '%s':\n", dev->name); printf("Scanning bootdev '%s':\n", dev->name);
else if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL) && else if (IS_ENABLED(CONFIG_BOOTMETH_GLOBAL) &&
@ -215,7 +215,7 @@ static int iter_incr(struct bootflow_iter *iter)
iter->max_part = 0; iter->max_part = 0;
/* ...select next bootdev */ /* ...select next bootdev */
if (iter->flags & BOOTFLOWF_SINGLE_DEV) { if (iter->flags & BOOTFLOWIF_SINGLE_DEV) {
ret = -ENOENT; ret = -ENOENT;
} else { } else {
int method_flags; int method_flags;
@ -227,7 +227,7 @@ static int iter_incr(struct bootflow_iter *iter)
ret = bootdev_setup_iter(iter, NULL, &dev, ret = bootdev_setup_iter(iter, NULL, &dev,
&method_flags); &method_flags);
} else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && } else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) &&
(iter->flags & BOOTFLOWF_SINGLE_UCLASS)) { (iter->flags & BOOTFLOWIF_SINGLE_UCLASS)) {
/* Move to the next bootdev in this uclass */ /* Move to the next bootdev in this uclass */
uclass_find_next_device(&dev); uclass_find_next_device(&dev);
if (!dev) { if (!dev) {
@ -236,7 +236,7 @@ static int iter_incr(struct bootflow_iter *iter)
ret = -ENODEV; ret = -ENODEV;
} }
} else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) && } else if (IS_ENABLED(CONFIG_BOOTSTD_FULL) &&
iter->flags & BOOTFLOWF_SINGLE_MEDIA) { iter->flags & BOOTFLOWIF_SINGLE_MEDIA) {
log_debug("next in single\n"); log_debug("next in single\n");
method_flags = 0; method_flags = 0;
do { do {
@ -328,7 +328,7 @@ static int bootflow_check(struct bootflow_iter *iter, struct bootflow *bflow)
* For 'all' we return all bootflows, even * For 'all' we return all bootflows, even
* those with errors * those with errors
*/ */
if (iter->flags & BOOTFLOWF_ALL) if (iter->flags & BOOTFLOWIF_ALL)
return log_msg_ret("all", ret); return log_msg_ret("all", ret);
} }
if (ret) if (ret)
@ -344,14 +344,14 @@ int bootflow_scan_first(struct udevice *dev, const char *label,
int ret; int ret;
if (dev || label) if (dev || label)
flags |= BOOTFLOWF_SKIP_GLOBAL; flags |= BOOTFLOWIF_SKIP_GLOBAL;
bootflow_iter_init(iter, flags); bootflow_iter_init(iter, flags);
/* /*
* Set up the ordering of bootmeths. This sets iter->doing_global and * Set up the ordering of bootmeths. This sets iter->doing_global and
* iter->first_glob_method if we are starting with the global bootmeths * iter->first_glob_method if we are starting with the global bootmeths
*/ */
ret = bootmeth_setup_iter_order(iter, !(flags & BOOTFLOWF_SKIP_GLOBAL)); ret = bootmeth_setup_iter_order(iter, !(flags & BOOTFLOWIF_SKIP_GLOBAL));
if (ret) if (ret)
return log_msg_ret("obmeth", -ENODEV); return log_msg_ret("obmeth", -ENODEV);
@ -373,7 +373,7 @@ int bootflow_scan_first(struct udevice *dev, const char *label,
if (ret) { if (ret) {
log_debug("check - ret=%d\n", ret); log_debug("check - ret=%d\n", ret);
if (ret != BF_NO_MORE_PARTS && ret != -ENOSYS) { if (ret != BF_NO_MORE_PARTS && ret != -ENOSYS) {
if (iter->flags & BOOTFLOWF_ALL) if (iter->flags & BOOTFLOWIF_ALL)
return log_msg_ret("all", ret); return log_msg_ret("all", ret);
} }
iter->err = ret; iter->err = ret;
@ -402,7 +402,7 @@ int bootflow_scan_next(struct bootflow_iter *iter, struct bootflow *bflow)
return 0; return 0;
iter->err = ret; iter->err = ret;
if (ret != BF_NO_MORE_PARTS && ret != -ENOSYS) { if (ret != BF_NO_MORE_PARTS && ret != -ENOSYS) {
if (iter->flags & BOOTFLOWF_ALL) if (iter->flags & BOOTFLOWIF_ALL)
return log_msg_ret("all", ret); return log_msg_ret("all", ret);
} }
} else { } else {

View file

@ -135,13 +135,13 @@ static int do_bootflow_scan(struct cmd_tbl *cmdtp, int flag, int argc,
flags = 0; flags = 0;
if (list) if (list)
flags |= BOOTFLOWF_SHOW; flags |= BOOTFLOWIF_SHOW;
if (all) if (all)
flags |= BOOTFLOWF_ALL; flags |= BOOTFLOWIF_ALL;
if (no_global) if (no_global)
flags |= BOOTFLOWF_SKIP_GLOBAL; flags |= BOOTFLOWIF_SKIP_GLOBAL;
if (!no_hunter) if (!no_hunter)
flags |= BOOTFLOWF_HUNT; flags |= BOOTFLOWIF_HUNT;
/* /*
* If we have a device, just scan for bootflows attached to that device * If we have a device, just scan for bootflows attached to that device

View file

@ -489,22 +489,22 @@ in a valid bootflow, whether to iterate through just a single bootdev, etc.
Then the iterator is set up to according to the parameters given: Then the iterator is set up to according to the parameters given:
- When `dev` is provided, then a single bootdev is scanned. In this case, - When `dev` is provided, then a single bootdev is scanned. In this case,
`BOOTFLOWF_SKIP_GLOBAL` and `BOOTFLOWF_SINGLE_DEV` are set. No hunters are `BOOTFLOWIF_SKIP_GLOBAL` and `BOOTFLOWIF_SINGLE_DEV` are set. No hunters are
used in this case used in this case
- Otherwise, when `label` is provided, then a single label or named bootdev is - Otherwise, when `label` is provided, then a single label or named bootdev is
scanned. In this case `BOOTFLOWF_SKIP_GLOBAL` is set and there are three scanned. In this case `BOOTFLOWIF_SKIP_GLOBAL` is set and there are three
options (with an effect on the `iter_incr()` function described later): options (with an effect on the `iter_incr()` function described later):
- If `label` indicates a numeric bootdev number (e.g. "2") then - If `label` indicates a numeric bootdev number (e.g. "2") then
`BOOTFLOW_METHF_SINGLE_DEV` is set. In this case, moving to the next bootdev `BOOTFLOW_METHF_SINGLE_DEV` is set. In this case, moving to the next bootdev
simple stops, since there is only one. No hunters are used. simple stops, since there is only one. No hunters are used.
- If `label` indicates a particular media device (e.g. "mmc1") then - If `label` indicates a particular media device (e.g. "mmc1") then
`BOOTFLOWF_SINGLE_MEDIA` is set. In this case, moving to the next bootdev `BOOTFLOWIF_SINGLE_MEDIA` is set. In this case, moving to the next bootdev
processes just the children of the media device. Hunters are used, in this processes just the children of the media device. Hunters are used, in this
example just the "mmc" hunter. example just the "mmc" hunter.
- If `label` indicates a media uclass (e.g. "mmc") then - If `label` indicates a media uclass (e.g. "mmc") then
`BOOTFLOWF_SINGLE_UCLASS` is set. In this case, all bootdevs in that uclass `BOOTFLOWIF_SINGLE_UCLASS` is set. In this case, all bootdevs in that uclass
are used. Hunters are used, in this example just the "mmc" hunter are used. Hunters are used, in this example just the "mmc" hunter
- Otherwise, none of the above flags is set and iteration is set up to work - Otherwise, none of the above flags is set and iteration is set up to work
@ -543,7 +543,7 @@ bootdev.
With the iterator ready, `bootflow_scan_first()` checks whether the current With the iterator ready, `bootflow_scan_first()` checks whether the current
settings produce a valid bootflow. This is handled by `bootflow_check()`, which settings produce a valid bootflow. This is handled by `bootflow_check()`, which
either returns 0 (if it got something) or an error if not (more on that later). either returns 0 (if it got something) or an error if not (more on that later).
If the `BOOTFLOWF_ALL` iterator flag is set, even errors are returned as If the `BOOTFLOWIF_ALL` iterator flag is set, even errors are returned as
incomplete bootflows, but normally an error results in moving onto the next incomplete bootflows, but normally an error results in moving onto the next
iteration. iteration.
@ -651,7 +651,7 @@ e.g. updating the state, depending on what it finds. For global bootmeths the
Based on what the bootdev or bootmeth responds with, `bootflow_check()` either Based on what the bootdev or bootmeth responds with, `bootflow_check()` either
returns a valid bootflow, or a partial one with an error. A partial bootflow returns a valid bootflow, or a partial one with an error. A partial bootflow
is one that has some fields set up, but did not reach the `BOOTFLOWST_READY` is one that has some fields set up, but did not reach the `BOOTFLOWST_READY`
state. As noted before, if the `BOOTFLOWF_ALL` iterator flag is set, then all state. As noted before, if the `BOOTFLOWIF_ALL` iterator flag is set, then all
bootflows are returned, even partial ones. This can help with debugging. bootflows are returned, even partial ones. This can help with debugging.
So at this point you can see that total control over whether a bootflow can So at this point you can see that total control over whether a bootflow can

View file

@ -93,36 +93,36 @@ struct bootflow {
}; };
/** /**
* enum bootflow_flags_t - flags for the bootflow iterator * enum bootflow_iter_flags_t - flags for the bootflow iterator
* *
* @BOOTFLOWF_FIXED: Only used fixed/internal media * @BOOTFLOWIF_FIXED: Only used fixed/internal media
* @BOOTFLOWF_SHOW: Show each bootdev before scanning it; show each hunter * @BOOTFLOWIF_SHOW: Show each bootdev before scanning it; show each hunter
* before using it * before using it
* @BOOTFLOWF_ALL: Return bootflows with errors as well * @BOOTFLOWIF_ALL: Return bootflows with errors as well
* @BOOTFLOWF_HUNT: Hunt for new bootdevs using the bootdrv hunters * @BOOTFLOWIF_HUNT: Hunt for new bootdevs using the bootdrv hunters
* *
* Internal flags: * Internal flags:
* @BOOTFLOWF_SINGLE_DEV: (internal) Just scan one bootdev * @BOOTFLOWIF_SINGLE_DEV: (internal) Just scan one bootdev
* @BOOTFLOWF_SKIP_GLOBAL: (internal) Don't scan global bootmeths * @BOOTFLOWIF_SKIP_GLOBAL: (internal) Don't scan global bootmeths
* @BOOTFLOWF_SINGLE_UCLASS: (internal) Keep scanning through all devices in * @BOOTFLOWIF_SINGLE_UCLASS: (internal) Keep scanning through all devices in
* this uclass (used with things like "mmc") * this uclass (used with things like "mmc")
* @BOOTFLOWF_SINGLE_MEDIA: (internal) Scan one media device in the uclass (used * @BOOTFLOWIF_SINGLE_MEDIA: (internal) Scan one media device in the uclass (used
* with things like "mmc1") * with things like "mmc1")
*/ */
enum bootflow_flags_t { enum bootflow_iter_flags_t {
BOOTFLOWF_FIXED = 1 << 0, BOOTFLOWIF_FIXED = 1 << 0,
BOOTFLOWF_SHOW = 1 << 1, BOOTFLOWIF_SHOW = 1 << 1,
BOOTFLOWF_ALL = 1 << 2, BOOTFLOWIF_ALL = 1 << 2,
BOOTFLOWF_HUNT = 1 << 3, BOOTFLOWIF_HUNT = 1 << 3,
/* /*
* flags used internally by standard boot - do not set these when * flags used internally by standard boot - do not set these when
* calling bootflow_scan_bootdev() etc. * calling bootflow_scan_bootdev() etc.
*/ */
BOOTFLOWF_SINGLE_DEV = 1 << 16, BOOTFLOWIF_SINGLE_DEV = 1 << 16,
BOOTFLOWF_SKIP_GLOBAL = 1 << 17, BOOTFLOWIF_SKIP_GLOBAL = 1 << 17,
BOOTFLOWF_SINGLE_UCLASS = 1 << 18, BOOTFLOWIF_SINGLE_UCLASS = 1 << 18,
BOOTFLOWF_SINGLE_MEDIA = 1 << 19, BOOTFLOWIF_SINGLE_MEDIA = 1 << 19,
}; };
/** /**
@ -164,9 +164,9 @@ enum bootflow_meth_flags_t {
* updated to a larger value, no less than the number of available partitions. * updated to a larger value, no less than the number of available partitions.
* This ensures that iteration works through all partitions on the bootdev. * This ensures that iteration works through all partitions on the bootdev.
* *
* @flags: Flags to use (see enum bootflow_flags_t). If BOOTFLOWF_GLOBAL_FIRST is * @flags: Flags to use (see enum bootflow_iter_flags_t). If
* enabled then the global bootmeths are being scanned, otherwise we have * BOOTFLOWIF_GLOBAL_FIRST is enabled then the global bootmeths are being
* moved onto the bootdevs * scanned, otherwise we have moved onto the bootdevs
* @dev: Current bootdev, NULL if none. This is only ever updated in * @dev: Current bootdev, NULL if none. This is only ever updated in
* bootflow_iter_set_dev() * bootflow_iter_set_dev()
* @part: Current partition number (0 for whole device) * @part: Current partition number (0 for whole device)
@ -233,7 +233,7 @@ void bootflow_init(struct bootflow *bflow, struct udevice *bootdev,
* This sets everything to the starting point, ready for use. * This sets everything to the starting point, ready for use.
* *
* @iter: Place to store private info (inited by this call) * @iter: Place to store private info (inited by this call)
* @flags: Flags to use (see enum bootflow_flags_t) * @flags: Flags to use (see enum bootflow_iter_flags_t)
*/ */
void bootflow_iter_init(struct bootflow_iter *iter, int flags); void bootflow_iter_init(struct bootflow_iter *iter, int flags);
@ -259,15 +259,16 @@ int bootflow_iter_drop_bootmeth(struct bootflow_iter *iter,
/** /**
* bootflow_scan_first() - find the first bootflow for a device or label * bootflow_scan_first() - find the first bootflow for a device or label
* *
* If @flags includes BOOTFLOWF_ALL then bootflows with errors are returned too * If @flags includes BOOTFLOWIF_ALL then bootflows with errors are returned too
* *
* @dev: Boot device to scan, NULL to work through all of them until it * @dev: Boot device to scan, NULL to work through all of them until it
* finds one that can supply a bootflow * finds one that can supply a bootflow
* @label: Label to control the scan, NULL to work through all devices * @label: Label to control the scan, NULL to work through all devices
* until it finds one that can supply a bootflow * until it finds one that can supply a bootflow
* @iter: Place to store private info (inited by this call) * @iter: Place to store private info (inited by this call)
* @flags: Flags for iterator (enum bootflow_flags_t). Note that if @dev * @flags: Flags for iterator (enum bootflow_iter_flags_t). Note that if
* is NULL, then BOOTFLOWF_SKIP_GLOBAL is set automatically by this function * @dev is NULL, then BOOTFLOWIF_SKIP_GLOBAL is set automatically by this
* function
* @bflow: Place to put the bootflow if found * @bflow: Place to put the bootflow if found
* Return: 0 if found, -ENODEV if no device, other -ve on other error * Return: 0 if found, -ENODEV if no device, other -ve on other error
* (iteration can continue) * (iteration can continue)

View file

@ -289,7 +289,7 @@ static int bootdev_test_prio(struct unit_test_state *uts)
/* try again but enable hunting, which brings in SCSI */ /* try again but enable hunting, which brings in SCSI */
bootflow_iter_uninit(&iter); bootflow_iter_uninit(&iter);
ut_assertok(bootflow_scan_first(NULL, NULL, &iter, BOOTFLOWF_HUNT, ut_assertok(bootflow_scan_first(NULL, NULL, &iter, BOOTFLOWIF_HUNT,
&bflow)); &bflow));
ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow)); ut_asserteq(-ENODEV, bootflow_scan_next(&iter, &bflow));
ut_asserteq(7, iter.num_devs); ut_asserteq(7, iter.num_devs);
@ -427,8 +427,8 @@ static int bootdev_test_hunt_scan(struct unit_test_state *uts)
ut_assertok(bootstd_test_drop_bootdev_order(uts)); ut_assertok(bootstd_test_drop_bootdev_order(uts));
ut_assertok(bootflow_scan_first(NULL, NULL, &iter, ut_assertok(bootflow_scan_first(NULL, NULL, &iter,
BOOTFLOWF_SHOW | BOOTFLOWF_HUNT | BOOTFLOWIF_SHOW | BOOTFLOWIF_HUNT |
BOOTFLOWF_SKIP_GLOBAL, &bflow)); BOOTFLOWIF_SKIP_GLOBAL, &bflow));
ut_asserteq(BIT(MMC_HUNTER) | BIT(1), std->hunters_used); ut_asserteq(BIT(MMC_HUNTER) | BIT(1), std->hunters_used);
return 0; return 0;
@ -649,7 +649,7 @@ static int bootdev_test_next_prio(struct unit_test_state *uts)
iter.part = 0; iter.part = 0;
uclass_first_device(UCLASS_BOOTMETH, &bflow.method); uclass_first_device(UCLASS_BOOTMETH, &bflow.method);
iter.cur_prio = 0; iter.cur_prio = 0;
iter.flags = BOOTFLOWF_SHOW; iter.flags = BOOTFLOWIF_SHOW;
dev = NULL; dev = NULL;
console_record_reset_enable(); console_record_reset_enable();
@ -662,7 +662,7 @@ static int bootdev_test_next_prio(struct unit_test_state *uts)
ut_assert_console_end(); ut_assert_console_end();
/* now try again with hunting enabled */ /* now try again with hunting enabled */
iter.flags = BOOTFLOWF_SHOW | BOOTFLOWF_HUNT; iter.flags = BOOTFLOWIF_SHOW | BOOTFLOWIF_HUNT;
iter.cur_prio = 0; iter.cur_prio = 0;
iter.part = 0; iter.part = 0;

View file

@ -277,7 +277,7 @@ static int bootflow_iter(struct unit_test_state *uts)
/* The first device is mmc2.bootdev which has no media */ /* The first device is mmc2.bootdev which has no media */
ut_asserteq(-EPROTONOSUPPORT, ut_asserteq(-EPROTONOSUPPORT,
bootflow_scan_first(NULL, NULL, &iter, bootflow_scan_first(NULL, NULL, &iter,
BOOTFLOWF_ALL | BOOTFLOWF_SKIP_GLOBAL, &bflow)); BOOTFLOWIF_ALL | BOOTFLOWIF_SKIP_GLOBAL, &bflow));
ut_asserteq(2, iter.num_methods); ut_asserteq(2, iter.num_methods);
ut_asserteq(0, iter.cur_method); ut_asserteq(0, iter.cur_method);
ut_asserteq(0, iter.part); ut_asserteq(0, iter.part);