From: Heinrich Schuchardt Date: Mon, 11 Jul 2022 06:25:33 +0000 (+0200) Subject: dm: fix logic of lists_bind_fdt() X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=de84a4f0eed297afa752ee46c072a99834dde806;p=u-boot.git dm: fix logic of lists_bind_fdt() If parameter drv of lists_bind_fdt() is specified, we shall bind only to this very driver and to no other. If the driver drv has an of_match property, we shall only bind to the driver if it matches the compatible string of the device. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- diff --git a/drivers/core/lists.c b/drivers/core/lists.c index 93514a744d..c49695b24f 100644 --- a/drivers/core/lists.c +++ b/drivers/core/lists.c @@ -223,10 +223,14 @@ int lists_bind_fdt(struct udevice *parent, ofnode node, struct udevice **devp, compat); for (entry = driver; entry != driver + n_ents; entry++) { + if (drv) { + if (drv != entry) + continue; + if (!entry->of_match) + break; + } ret = driver_check_compatible(entry->of_match, &id, compat); - if ((drv) && (drv == entry)) - break; if (!ret) break; }