]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: Enhance comments on bind_drivers_pass()
authorSimon Glass <sjg@chromium.org>
Sun, 23 Jun 2024 20:30:21 +0000 (14:30 -0600)
committerTom Rini <trini@konsulko.com>
Thu, 4 Jul 2024 15:25:20 +0000 (09:25 -0600)
This part of driver model is a little subtle, so add some more comments
to promote better understanding.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/core/lists.c

index bd0ab4f16c92c16fe3fa484e9d4a4919d8929c63..c7be504b6fc69ec2870a6766eed35cb9eba46a97 100644 (file)
@@ -8,6 +8,7 @@
 
 #define LOG_CATEGORY LOGC_DM
 
+#include <debug_uart.h>
 #include <errno.h>
 #include <log.h>
 #include <dm/device.h>
@@ -50,6 +51,21 @@ struct uclass_driver *lists_uclass_lookup(enum uclass_id id)
        return NULL;
 }
 
+/**
+ * bind_drivers_pass() - Perform a pass of driver binding
+ *
+ * Work through the driver_info records binding a driver for each one. If the
+ * binding fails, continue binding others, but return the error.
+ *
+ * For OF_PLATDATA we must bind parent devices before their children. So only
+ * children of bound parents are bound on each call to this function. When a
+ * child is left unbound, -EAGAIN is returned, indicating that this function
+ * should be called again
+ *
+ * @parent: Parent device to use when binding each child device
+ * Return: 0 if OK, -EAGAIN if unbound children exist, -ENOENT if there is no
+ * driver for one of the devices, other -ve on other error
+ */
 static int bind_drivers_pass(struct udevice *parent, bool pre_reloc_only)
 {
        struct driver_info *info =