]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
clk: tests: Make clk_register_clk_parent_data_device_driver() common
authorJerome Brunet <jbrunet@baylibre.com>
Fri, 20 Jun 2025 06:46:03 +0000 (23:46 -0700)
committerStephen Boyd <sboyd@kernel.org>
Fri, 20 Jun 2025 07:15:06 +0000 (00:15 -0700)
Rename clk_register_clk_parent_data_device_driver() to
kunit_of_platform_driver_dev() and have it return a struct device
pointer while accepting a match table. This will be useful to
find the device associated with an OF node for more tests than
only the clk_parent_data tests.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
[sboyd@kernel.org: Split out from next patch, carry SoB and
authorship, rename API, return device pointer]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk_test.c

index f08feeaa3750bc86859294650de298762dea690a..ac28c05d9c66dc57a628b9e49312513566a1cacf 100644 (file)
@@ -2794,49 +2794,49 @@ static struct kunit_suite clk_register_clk_parent_data_of_suite = {
 };
 
 /**
- * struct clk_register_clk_parent_data_device_ctx - Context for clk_parent_data device tests
- * @dev: device of clk under test
- * @hw: clk_hw for clk under test
+ * struct platform_driver_dev_ctx - Context to stash platform device
+ * @dev: device under test
  * @pdrv: driver to attach to find @dev
  */
-struct clk_register_clk_parent_data_device_ctx {
+struct platform_driver_dev_ctx {
        struct device *dev;
-       struct clk_hw hw;
        struct platform_driver pdrv;
 };
 
-static inline struct clk_register_clk_parent_data_device_ctx *
-clk_register_clk_parent_data_driver_to_test_context(struct platform_device *pdev)
+static inline struct platform_driver_dev_ctx *
+pdev_to_platform_driver_dev_ctx(struct platform_device *pdev)
 {
        return container_of(to_platform_driver(pdev->dev.driver),
-                           struct clk_register_clk_parent_data_device_ctx, pdrv);
+                           struct platform_driver_dev_ctx, pdrv);
 }
 
-static int clk_register_clk_parent_data_device_probe(struct platform_device *pdev)
+static int kunit_platform_driver_dev_probe(struct platform_device *pdev)
 {
-       struct clk_register_clk_parent_data_device_ctx *ctx;
+       struct platform_driver_dev_ctx *ctx;
 
-       ctx = clk_register_clk_parent_data_driver_to_test_context(pdev);
+       ctx = pdev_to_platform_driver_dev_ctx(pdev);
        ctx->dev = &pdev->dev;
 
        return 0;
 }
 
-static void clk_register_clk_parent_data_device_driver(struct kunit *test)
+static struct device *
+kunit_of_platform_driver_dev(struct kunit *test, const struct of_device_id *match_table)
 {
-       struct clk_register_clk_parent_data_device_ctx *ctx = test->priv;
-       static const struct of_device_id match_table[] = {
-               { .compatible = "test,clk-parent-data" },
-               { }
-       };
+       struct platform_driver_dev_ctx *ctx;
+
+       ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
 
-       ctx->pdrv.probe = clk_register_clk_parent_data_device_probe;
+       ctx->pdrv.probe = kunit_platform_driver_dev_probe;
        ctx->pdrv.driver.of_match_table = match_table;
        ctx->pdrv.driver.name = __func__;
        ctx->pdrv.driver.owner = THIS_MODULE;
 
        KUNIT_ASSERT_EQ(test, 0, kunit_platform_driver_register(test, &ctx->pdrv));
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx->dev);
+
+       return ctx->dev;
 }
 
 static const struct clk_register_clk_parent_data_test_case
@@ -2909,30 +2909,34 @@ KUNIT_ARRAY_PARAM(clk_register_clk_parent_data_device_test,
  */
 static void clk_register_clk_parent_data_device_test(struct kunit *test)
 {
-       struct clk_register_clk_parent_data_device_ctx *ctx;
+       struct device *dev;
+       struct clk_hw *hw;
        const struct clk_register_clk_parent_data_test_case *test_param;
        struct clk_hw *parent_hw;
        struct clk_init_data init = { };
        struct clk *expected_parent, *actual_parent;
+       static const struct of_device_id match_table[] = {
+               { .compatible = "test,clk-parent-data" },
+               { }
+       };
 
-       ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
-       test->priv = ctx;
-
-       clk_register_clk_parent_data_device_driver(test);
+       dev = kunit_of_platform_driver_dev(test, match_table);
 
-       expected_parent = clk_get_kunit(test, ctx->dev, "50");
+       expected_parent = clk_get_kunit(test, dev, "50");
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, expected_parent);
 
+       hw = kunit_kzalloc(test, sizeof(*hw), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, hw);
+
        test_param = test->param_value;
        init.parent_data = &test_param->pdata;
        init.num_parents = 1;
        init.name = "parent_data_device_test_clk";
        init.ops = &clk_dummy_single_parent_ops;
-       ctx->hw.init = &init;
-       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, ctx->dev, &ctx->hw));
+       hw->init = &init;
+       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, dev, hw));
 
-       parent_hw = clk_hw_get_parent(&ctx->hw);
+       parent_hw = clk_hw_get_parent(hw);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, parent_hw);
 
        actual_parent = clk_hw_get_clk_kunit(test, parent_hw, __func__);
@@ -3016,18 +3020,19 @@ KUNIT_ARRAY_PARAM(clk_register_clk_parent_data_device_hw_test,
  */
 static void clk_register_clk_parent_data_device_hw_test(struct kunit *test)
 {
-       struct clk_register_clk_parent_data_device_ctx *ctx;
+       struct device *dev;
+       struct clk_hw *hw;
        const struct clk_register_clk_parent_data_test_case *test_param;
        struct clk_dummy_context *parent;
        struct clk_hw *parent_hw;
        struct clk_parent_data pdata = { };
        struct clk_init_data init = { };
+       static const struct of_device_id match_table[] = {
+               { .compatible = "test,clk-parent-data" },
+               { }
+       };
 
-       ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
-       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
-       test->priv = ctx;
-
-       clk_register_clk_parent_data_device_driver(test);
+       dev = kunit_of_platform_driver_dev(test, match_table);
 
        parent = kunit_kzalloc(test, sizeof(*parent), GFP_KERNEL);
        KUNIT_ASSERT_NOT_ERR_OR_NULL(test, parent);
@@ -3036,7 +3041,10 @@ static void clk_register_clk_parent_data_device_hw_test(struct kunit *test)
        parent_hw->init = CLK_HW_INIT_NO_PARENT("parent-clk",
                                                &clk_dummy_rate_ops, 0);
 
-       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, ctx->dev, parent_hw));
+       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, dev, parent_hw));
+
+       hw = kunit_kzalloc(test, sizeof(*hw), GFP_KERNEL);
+       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, hw);
 
        test_param = test->param_value;
        memcpy(&pdata, &test_param->pdata, sizeof(pdata));
@@ -3045,10 +3053,10 @@ static void clk_register_clk_parent_data_device_hw_test(struct kunit *test)
        init.num_parents = 1;
        init.ops = &clk_dummy_single_parent_ops;
        init.name = "parent_data_device_hw_test_clk";
-       ctx->hw.init = &init;
-       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, ctx->dev, &ctx->hw));
+       hw->init = &init;
+       KUNIT_ASSERT_EQ(test, 0, clk_hw_register_kunit(test, dev, hw));
 
-       KUNIT_EXPECT_PTR_EQ(test, parent_hw, clk_hw_get_parent(&ctx->hw));
+       KUNIT_EXPECT_PTR_EQ(test, parent_hw, clk_hw_get_parent(hw));
 }
 
 static struct kunit_case clk_register_clk_parent_data_device_test_cases[] = {