
On 8 Feb 2018, at 14:13, Kever Yang kever.yang@rock-chips.com wrote:
Add api for who can not get phandle from a device property.
Signed-off-by: Kever Yang kever.yang@rock-chips.com
Reviewed-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
See below for comments.
drivers/core/uclass.c | 28 ++++++++++++++++++++++++++++ include/dm/uclass.h | 16 ++++++++++++++++ 2 files changed, 44 insertions(+)
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index f5e4067..dd7a89c 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -443,6 +443,34 @@ int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, }
#if CONFIG_IS_ENABLED(OF_CONTROL) +int uclass_get_device_by_phandle_id(enum uclass_id id, int phandle_id,
struct udevice **devp)
+{
- struct udevice *dev;
- struct uclass *uc;
- int ret;
- *devp = NULL;
- ret = uclass_get(id, &uc);
- if (ret)
return ret;
- ret = -ENODEV;
- list_for_each_entry(dev, &uc->dev_head, uclass_node) {
uint phandle;
phandle = dev_read_phandle(dev);
if (phandle == phandle_id) {
*devp = dev;
ret = 0;
break;
I would prefer if you directly called into the tail here… …and didn’t set "ret = -ENODEV” above and returned the -ENODEV directly from below.
In other words, you could have return uclass_get_device_tail(dev, 0, devp); here.
}
- }
- return uclass_get_device_tail(dev, ret, devp);
+}
int uclass_get_device_by_phandle(enum uclass_id id, struct udevice *parent, const char *name, struct udevice **devp) { diff --git a/include/dm/uclass.h b/include/dm/uclass.h index 1818849..f6fe785 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -203,6 +203,22 @@ int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, struct udevice **devp);
/**
- uclass_get_device_by_phandle_id() - Get a uclass device by phandle id
- This searches the devices in the uclass for one with the given phandle id.
- The device is probed to activate it ready for use.
- @id: uclass ID to look up
- @phandle_id: the phandle id to look up
- @devp: Returns pointer to device (there is only one for each node)
- @return 0 if OK, -ENODEV if there is no device match the phandle, other
- -ve on error
- */
+int uclass_get_device_by_phandle_id(enum uclass_id id, int phandle_id,
struct udevice **devp);
+/**
- uclass_get_device_by_phandle() - Get a uclass device by phandle
- This searches the devices in the uclass for one with the given phandle.
-- 1.9.1