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 <[email protected]>
---
 drivers/core/lists.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

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;
                }
-- 
2.36.1

Reply via email to