Both the 'host' and the 'efiloader' block devices use the same parent uclass root. Thus the parent uclass is not an indicator the interface type.
Currently the following fails: setenv efi_selftest block device bootefi selftest part list efiloader 0 Struct blk_desc contains the interface type. So we can check it directly without caring about the parent uclass. Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com> --- drivers/block/blk-uclass.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index 21c5209bb6..779cda7834 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -122,15 +122,11 @@ struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum) debug("%s: if_type=%d, devnum=%d: %s, %d, %d\n", __func__, if_type, devnum, dev->name, desc->if_type, desc->devnum); - if (desc->devnum != devnum) - continue; - /* Find out the parent device uclass */ - if (device_get_uclass_id(dev->parent) != uclass_id) { - debug("%s: parent uclass %d, this dev %d\n", __func__, - device_get_uclass_id(dev->parent), uclass_id); + if (desc->if_type != if_type) + continue; + if (desc->devnum != devnum) continue; - } if (device_probe(dev)) return NULL; -- 2.36.1