diff options
author | Keerthy <j-keerthy@ti.com> | 2021-06-23 20:40:48 +0530 |
---|---|---|
committer | Praneeth Bajjuri <praneeth@ti.com> | 2021-06-23 22:58:16 -0500 |
commit | 9d9fd0a3b18f4a80df3cb5dbad37dcccab97ed31 (patch) | |
tree | 7bc259a6efda90ed7c6d35f05bd556ac485b6196 /drivers | |
parent | 2ae138d289ec765dde3c58fb66a5a8e56b26b6c5 (diff) |
misc: uclass: Introduce misc_init_by_ofnode
Introduce misc_init_by_ofnode to probe a misc device
using its ofnode.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/misc/misc-uclass.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/misc/misc-uclass.c b/drivers/misc/misc-uclass.c index 55381edc980..3740e061997 100644 --- a/drivers/misc/misc-uclass.c +++ b/drivers/misc/misc-uclass.c @@ -5,6 +5,8 @@ #include <common.h> #include <dm.h> +#include <dm/device-internal.h> +#include <dm/uclass-internal.h> #include <errno.h> #include <misc.h> @@ -65,6 +67,29 @@ int misc_set_enabled(struct udevice *dev, bool val) return ops->set_enabled(dev, val); } +int misc_init_by_ofnode(ofnode node) +{ + struct udevice *dev = NULL; + struct uclass *uc; + int ret; + + ret = uclass_get(UCLASS_MISC, &uc); + if (ret) + return ret; + + uclass_foreach_dev(dev, uc) { + if (ofnode_equal(node, dev_ofnode(dev))) { + ret = device_probe(dev); + if (ret) + debug("%s: Failed to initialize - %d\n", + dev->name, ret); + return ret; + } + } + + return -ENODEV; +} + UCLASS_DRIVER(misc) = { .id = UCLASS_MISC, .name = "misc", |