Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147// SPDX-License-Identifier: GPL-2.0/* * Copyright (C) Qualcomm Technologies, Inc. and/or its subsidiaries */
#include <kunit/fwnode.h>#include <kunit/test.h>
#include <linux/fwnode.h>#include <linux/property.h>
KUNIT_DEFINE_ACTION_WRAPPER(fwnode_remove_software_node_wrapper, fwnode_remove_software_node, struct fwnode_handle *);
/** * kunit_fwnode_create_software_node() - Create a kunit-managed software node * @test: Test context * @properties: Properties to use to create the new software node * @parent: Parent of this software node * * Create a test-managed software node and return its firmware node handle. * The software node is removed after the test case completes. * * Returns: * Firmware node handle of the newly created software node or IS_ERR() on * failure. */struct fwnode_handle *kunit_fwnode_create_software_node(struct kunit *test, const struct property_entry *properties, const struct fwnode_handle *parent){ struct fwnode_handle *fwnode; int ret;
fwnode = fwnode_create_software_node(properties, parent); if (IS_ERR(fwnode)) return fwnode;
ret = kunit_add_action_or_reset(test, fwnode_remove_software_node_wrapper, fwnode); if (ret) return ERR_PTR(ret);
return fwnode;}EXPORT_SYMBOL_GPL(kunit_fwnode_create_software_node);
KUNIT_DEFINE_ACTION_WRAPPER(software_node_unregister_wrapper, software_node_unregister, const struct software_node *);
/** * kunit_software_node_register() - Register a kunit-managed software node * @test: Test context * @swnode: Software node to register * * Register a test-managed software node and return its firmware node handle. * The software node is unregistered after the test case completes. * * Returns: * Firmware node handle of the registered software node or IS_ERR() on failure. */struct fwnode_handle *kunit_software_node_register(struct kunit *test, const struct software_node *swnode){ struct fwnode_handle *fwnode; int ret;
ret = software_node_register(swnode); if (ret) return ERR_PTR(ret);
fwnode = software_node_fwnode(swnode); if (WARN_ON(!fwnode)) return ERR_PTR(-ENOENT);
ret = kunit_add_action_or_reset(test, software_node_unregister_wrapper, (void *)swnode); if (ret) return ERR_PTR(ret);
return fwnode;}EXPORT_SYMBOL_GPL(kunit_software_node_register);
KUNIT_DEFINE_ACTION_WRAPPER(software_node_unregister_node_group_wrapper, software_node_unregister_node_group, const struct software_node *const *);
/** * kunit_software_node_register_node_group() - Register a kunit-managed software node group * @test: Test context * @nodes: Software node group to register * * Register a test-managed software node group. The nodes are unregistered * after the test case completes. * * Returns: * 0 on success, negative error number on failure. */int kunit_software_node_register_node_group(struct kunit *test, const struct software_node *const *nodes){ int ret;
ret = software_node_register_node_group(nodes); if (ret) return ret;
return kunit_add_action_or_reset(test, software_node_unregister_node_group_wrapper, (void *)nodes);}EXPORT_SYMBOL_GPL(kunit_software_node_register_node_group);
KUNIT_DEFINE_ACTION_WRAPPER(device_remove_software_node_wrapper, device_remove_software_node, struct device *);
/** * kunit_device_add_software_node() - Assign a kunit-managed software node to a device * @test: Test context * @dev: Device to assign the software node for * @node: The software node to assign * * Make @node the secondary firmware node of @dev. If @dev has no primary * firmware node, @node will become the primary node. The software node will * be automatically removed from @dev when the test case completes. * * Returns: * 0 on success, negative error number on failure. */int kunit_device_add_software_node(struct kunit *test, struct device *dev, const struct software_node *node){ int ret;
ret = device_add_software_node(dev, node); if (ret) return ret;
return kunit_add_action_or_reset(test, device_remove_software_node_wrapper, dev);}EXPORT_SYMBOL_GPL(kunit_device_add_software_node);