Hi Simon, On Fri, Mar 30, 2018 at 12:43 AM, Simon Glass <s...@chromium.org> wrote: > Hi Mario, > > On 28 March 2018 at 20:37, Mario Six <mario....@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() ? >
The function is used with the dev_{enable,disable}_by_path in the next patch: If I used any of the uclass_* functions or similar, the device would be probed, which is not what I want, since the device may not actually be physically present. >> >> Signed-off-by: Mario Six <mario....@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 > Everything else will be addressed in v2. Thanks for reviewing! Best regards, Mario _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot