From de84a4f0eed297afa752ee46c072a99834dde806 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Mon, 11 Jul 2022 08:25:33 +0200 Subject: 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 --- drivers/core/lists.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'drivers/core') 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; } -- cgit v1.2.3