]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: allow drivers to refuse to bind
authorStephen Warren <swarren@nvidia.com>
Tue, 19 Apr 2016 22:19:29 +0000 (16:19 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 17 May 2016 15:54:43 +0000 (09:54 -0600)
In some cases, drivers may not want to bind to a device. Allow bind() to
return -ENODEV in this case, and don't treat this as an error. This can
be useful in situations where some information source other than the DT
node's main status property indicates whether the device should be
enabled, for example other DT properties might indicate this, or the
driver might query non-DT sources such as system fuses or a version number
register.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/core/lists.c

index c4fc216340d8169dde8c05cdc0f9556e7ed9815b..a72db13a119aa4241c2f5dfa42ffd9551f1e15b2 100644 (file)
@@ -171,6 +171,10 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
 
                dm_dbg("   - found match at '%s'\n", entry->name);
                ret = device_bind(parent, entry, name, NULL, offset, &dev);
+               if (ret == -ENODEV) {
+                       dm_dbg("Driver '%s' refuses to bind\n", entry->name);
+                       continue;
+               }
                if (ret) {
                        dm_warn("Error binding driver '%s': %d\n", entry->name,
                                ret);