diff options
Diffstat (limited to 'boot/bootflow.c')
| -rw-r--r-- | boot/bootflow.c | 21 | 
1 files changed, 19 insertions, 2 deletions
| diff --git a/boot/bootflow.c b/boot/bootflow.c index 6ef62e1d189..e03932e65a7 100644 --- a/boot/bootflow.c +++ b/boot/bootflow.c @@ -260,8 +260,25 @@ static int iter_incr(struct bootflow_iter *iter)  		} else {  			log_debug("labels %p\n", iter->labels);  			if (iter->labels) { -				ret = bootdev_next_label(iter, &dev, -							 &method_flags); +				/* +				 * when the label is "mmc" we want to scan all +				 * mmc bootdevs, not just the first. See +				 * bootdev_find_by_label() where this flag is +				 * set up +				 */ +				if (iter->method_flags & BOOTFLOW_METHF_SINGLE_UCLASS) { +					uclass_next_device(&dev); +					log_debug("looking for next device %s: %s\n", +						  iter->dev->name, +						  dev ? dev->name : "<none>"); +				} else { +					dev = NULL; +				} +				if (!dev) { +					log_debug("looking at next label\n"); +					ret = bootdev_next_label(iter, &dev, +								 &method_flags); +				}  			} else {  				ret = bootdev_next_prio(iter, &dev);  				method_flags = 0; | 
