On Mon, Sep 02, 2019 at 03:34:31PM +0300, Sakari Ailus wrote:
Hi Andy,
On Mon, Sep 02, 2019 at 01:14:26PM +0300, Andy Shevchenko wrote:
quoted
On Mon, Sep 02, 2019 at 11:32:33AM +0300, Sakari Ailus wrote:
quoted
Add two convenience functions for accessing node's parents:
fwnode_count_parents() returns the number of parent nodes a given node
has. fwnode_get_nth_parent() returns node's parent at a given distance
from the node itself.
Much better now, thanks!
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
though one question below.
quoted
quoted
+/**
+ * fwnode_get_nth_parent - Return an nth parent of a node
+ * @fwnode: The node the parent of which is requested
+ * @depth: Distance of the parent from the node
+ *
+ * Returns the nth parent of a node. If @depth is 0, the functionality is
+ * equivalent to fwnode_handle_get(). For @depth == 1, it is fwnode_get_parent()
+ * and so on.
+ *
+ * The caller is responsible for calling fwnode_handle_put() for the returned
+ * node.
+ */
+struct fwnode_handle *fwnode_get_nth_parent(struct fwnode_handle *fwnode,
+ unsigned int depth)
+{
+ unsigned int i;
+
+ fwnode_handle_get(fwnode);
+
+ for (i = 0; i < depth && fwnode; i++)
+ fwnode = fwnode_get_next_parent(fwnode);
+
If 'fnode == NULL' and 'i < depth', shan't we return some kind of error?
How about adding to the comment, after the first sentence of the
description:
If there is no parent at the requested depth, NULL is returned.
Works for me!
--
With Best Regards,
Andy Shevchenko