mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
driver core: Move fw_devlink stuff to where it belongs
A few APIs, i.e. fwnode_is_ancestor_of(), fwnode_get_next_parent_dev(), and get_dev_from_fwnode(), that belong specifically to the fw_devlink APIs, may be static, but they are not. Resolve this mess by moving them to the driver/base/core where the all users are being resided and make static. No functional changes intended. Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com> Acked-by: "Rafael J. Wysocki" <rafael@kernel.org> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240301180138.271590-3-andriy.shevchenko@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
bbf6cfba49
commit
1c4002aeab
4 changed files with 58 additions and 59 deletions
|
@ -1871,6 +1871,7 @@ static void fw_devlink_unblock_consumers(struct device *dev)
|
|||
device_links_write_unlock();
|
||||
}
|
||||
|
||||
#define get_dev_from_fwnode(fwnode) get_device((fwnode)->dev)
|
||||
|
||||
static bool fwnode_init_without_drv(struct fwnode_handle *fwnode)
|
||||
{
|
||||
|
@ -1901,6 +1902,63 @@ static bool fwnode_ancestor_init_without_drv(struct fwnode_handle *fwnode)
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwnode_is_ancestor_of - Test if @ancestor is ancestor of @child
|
||||
* @ancestor: Firmware which is tested for being an ancestor
|
||||
* @child: Firmware which is tested for being the child
|
||||
*
|
||||
* A node is considered an ancestor of itself too.
|
||||
*
|
||||
* Return: true if @ancestor is an ancestor of @child. Otherwise, returns false.
|
||||
*/
|
||||
static bool fwnode_is_ancestor_of(const struct fwnode_handle *ancestor,
|
||||
const struct fwnode_handle *child)
|
||||
{
|
||||
struct fwnode_handle *parent;
|
||||
|
||||
if (IS_ERR_OR_NULL(ancestor))
|
||||
return false;
|
||||
|
||||
if (child == ancestor)
|
||||
return true;
|
||||
|
||||
fwnode_for_each_parent_node(child, parent) {
|
||||
if (parent == ancestor) {
|
||||
fwnode_handle_put(parent);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwnode_get_next_parent_dev - Find device of closest ancestor fwnode
|
||||
* @fwnode: firmware node
|
||||
*
|
||||
* Given a firmware node (@fwnode), this function finds its closest ancestor
|
||||
* firmware node that has a corresponding struct device and returns that struct
|
||||
* device.
|
||||
*
|
||||
* The caller is responsible for calling put_device() on the returned device
|
||||
* pointer.
|
||||
*
|
||||
* Return: a pointer to the device of the @fwnode's closest ancestor.
|
||||
*/
|
||||
static struct device *fwnode_get_next_parent_dev(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
struct fwnode_handle *parent;
|
||||
struct device *dev;
|
||||
|
||||
fwnode_for_each_parent_node(fwnode, parent) {
|
||||
dev = get_dev_from_fwnode(parent);
|
||||
if (dev) {
|
||||
fwnode_handle_put(parent);
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* __fw_devlink_relax_cycles - Relax and mark dependency cycles.
|
||||
* @con: Potential consumer device.
|
||||
|
|
|
@ -699,34 +699,6 @@ struct fwnode_handle *fwnode_get_next_parent(struct fwnode_handle *fwnode)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(fwnode_get_next_parent);
|
||||
|
||||
/**
|
||||
* fwnode_get_next_parent_dev - Find device of closest ancestor fwnode
|
||||
* @fwnode: firmware node
|
||||
*
|
||||
* Given a firmware node (@fwnode), this function finds its closest ancestor
|
||||
* firmware node that has a corresponding struct device and returns that struct
|
||||
* device.
|
||||
*
|
||||
* The caller is responsible for calling put_device() on the returned device
|
||||
* pointer.
|
||||
*
|
||||
* Return: a pointer to the device of the @fwnode's closest ancestor.
|
||||
*/
|
||||
struct device *fwnode_get_next_parent_dev(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
struct fwnode_handle *parent;
|
||||
struct device *dev;
|
||||
|
||||
fwnode_for_each_parent_node(fwnode, parent) {
|
||||
dev = get_dev_from_fwnode(parent);
|
||||
if (dev) {
|
||||
fwnode_handle_put(parent);
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwnode_count_parents - Return the number of parents a node has
|
||||
* @fwnode: The node the parents of which are to be counted
|
||||
|
@ -773,34 +745,6 @@ struct fwnode_handle *fwnode_get_nth_parent(struct fwnode_handle *fwnode,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(fwnode_get_nth_parent);
|
||||
|
||||
/**
|
||||
* fwnode_is_ancestor_of - Test if @ancestor is ancestor of @child
|
||||
* @ancestor: Firmware which is tested for being an ancestor
|
||||
* @child: Firmware which is tested for being the child
|
||||
*
|
||||
* A node is considered an ancestor of itself too.
|
||||
*
|
||||
* Return: true if @ancestor is an ancestor of @child. Otherwise, returns false.
|
||||
*/
|
||||
bool fwnode_is_ancestor_of(const struct fwnode_handle *ancestor, const struct fwnode_handle *child)
|
||||
{
|
||||
struct fwnode_handle *parent;
|
||||
|
||||
if (IS_ERR_OR_NULL(ancestor))
|
||||
return false;
|
||||
|
||||
if (child == ancestor)
|
||||
return true;
|
||||
|
||||
fwnode_for_each_parent_node(child, parent) {
|
||||
if (parent == ancestor) {
|
||||
fwnode_handle_put(parent);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwnode_get_next_child_node - Return the next child node handle for a node
|
||||
* @fwnode: Firmware node to find the next child node for.
|
||||
|
|
|
@ -187,7 +187,6 @@ struct fwnode_operations {
|
|||
if (fwnode_has_op(fwnode, op)) \
|
||||
(fwnode)->ops->op(fwnode, ## __VA_ARGS__); \
|
||||
} while (false)
|
||||
#define get_dev_from_fwnode(fwnode) get_device((fwnode)->dev)
|
||||
|
||||
static inline void fwnode_init(struct fwnode_handle *fwnode,
|
||||
const struct fwnode_operations *ops)
|
||||
|
|
|
@ -156,11 +156,9 @@ struct fwnode_handle *fwnode_get_next_parent(struct fwnode_handle *fwnode);
|
|||
for (parent = fwnode_get_parent(fwnode); parent; \
|
||||
parent = fwnode_get_next_parent(parent))
|
||||
|
||||
struct device *fwnode_get_next_parent_dev(const struct fwnode_handle *fwnode);
|
||||
unsigned int fwnode_count_parents(const struct fwnode_handle *fwn);
|
||||
struct fwnode_handle *fwnode_get_nth_parent(struct fwnode_handle *fwn,
|
||||
unsigned int depth);
|
||||
bool fwnode_is_ancestor_of(const struct fwnode_handle *ancestor, const struct fwnode_handle *child);
|
||||
struct fwnode_handle *fwnode_get_next_child_node(
|
||||
const struct fwnode_handle *fwnode, struct fwnode_handle *child);
|
||||
struct fwnode_handle *fwnode_get_next_available_child_node(
|
||||
|
|
Loading…
Reference in a new issue