
Hi Mario,
On 28 March 2018 at 20:37, Mario Six mario.six@gdsys.cc wrote:
It's sometimes useful to get the device associated with a given ofnode. Implement a function to implement this lookup operation.
Where would you use this? Can you not use phandles to find the device? Or uclass_get_device_by_ofnode() ?
Signed-off-by: Mario Six mario.six@gdsys.cc
drivers/core/ofnode.c | 15 +++++++++++++++ include/dm/ofnode.h | 8 ++++++++ 2 files changed, 23 insertions(+)
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 4e4532651f..ca002063b3 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -16,6 +16,21 @@ #include <linux/err.h> #include <linux/ioport.h>
+struct udevice *ofnode_dev(ofnode node)
Can you please add a test for this?
This seems like an internal function since it does not probe the device. So how about putting it in device.h:
device_get_by_ofnode() - does probe the device it returns device_find_by_ofnode() - doesn't probe
+{
struct uclass *uc;
struct udevice *dev;
list_for_each_entry(uc, &gd->uclass_root, sibling_node) {
list_for_each_entry(dev, &uc->dev_head, uclass_node) {
if (ofnode_equal(dev_ofnode(dev), node))
return dev;
}
}
return NULL;
+}
int ofnode_read_u32(ofnode node, const char *propname, u32 *outp) { assert(ofnode_valid(node)); diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index 0d008404f9..aec205eb80 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -193,6 +193,14 @@ static inline ofnode ofnode_null(void) return node; }
+/**
- ofnode_dev() - Get the device associated with a given ofnode
- @node: valid node reference to get the corresponding device for
- @return a pointer to the udevice if OK, NULL on error
- */
+struct udevice *ofnode_dev(ofnode node);
/**
- ofnode_read_u32() - Read a 32-bit integer from a property
-- 2.16.1
Regards, Simon