Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: test: Add test managed of_clk_add_hw_provider()

Add a test managed version of of_clk_add_hw_provider() that
automatically unregisters the clk_hw provider upon test conclusion.

Cc: Brendan Higgins <brendan.higgins@linux.dev>
Cc: David Gow <davidgow@google.com>
Cc: Rae Moar <rmoar@google.com>
Cc: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20240822002433.1163814-2-sboyd@kernel.org

+34
+30
drivers/clk/clk_kunit_helpers.c
··· 203 203 } 204 204 EXPORT_SYMBOL_GPL(of_clk_hw_register_kunit); 205 205 206 + KUNIT_DEFINE_ACTION_WRAPPER(of_clk_del_provider_wrapper, 207 + of_clk_del_provider, struct device_node *); 208 + 209 + /** 210 + * of_clk_add_hw_provider_kunit() - Test managed of_clk_add_hw_provider() 211 + * @test: The test context 212 + * @np: Device node pointer associated with clock provider 213 + * @get: Callback for decoding clk_hw 214 + * @data: Context pointer for @get callback. 215 + * 216 + * Just like of_clk_add_hw_provider(), except the clk_hw provider is managed by 217 + * the test case and is automatically unregistered after the test case 218 + * concludes. 219 + * 220 + * Return: 0 on success or a negative errno value on failure. 221 + */ 222 + int of_clk_add_hw_provider_kunit(struct kunit *test, struct device_node *np, 223 + struct clk_hw *(*get)(struct of_phandle_args *clkspec, void *data), 224 + void *data) 225 + { 226 + int ret; 227 + 228 + ret = of_clk_add_hw_provider(np, get, data); 229 + if (ret) 230 + return ret; 231 + 232 + return kunit_add_action_or_reset(test, of_clk_del_provider_wrapper, np); 233 + } 234 + EXPORT_SYMBOL_GPL(of_clk_add_hw_provider_kunit); 235 + 206 236 MODULE_LICENSE("GPL"); 207 237 MODULE_DESCRIPTION("KUnit helpers for clk providers and consumers");
+4
include/kunit/clk.h
··· 25 25 int of_clk_hw_register_kunit(struct kunit *test, struct device_node *node, 26 26 struct clk_hw *hw); 27 27 28 + int of_clk_add_hw_provider_kunit(struct kunit *test, struct device_node *np, 29 + struct clk_hw *(*get)(struct of_phandle_args *clkspec, void *data), 30 + void *data); 31 + 28 32 #endif