{
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, ctx->rate);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_1);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rounded_rate, set_rate;
 
        rounded_rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1);
        set_rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, set_rate, 0);
        KUNIT_EXPECT_EQ(test, rounded_rate, set_rate);
+
+       clk_put(clk);
 }
 
 static struct kunit_case clk_test_cases[] = {
 {
        struct clk_single_parent_ctx *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate, new_rate;
 
        rate = clk_get_rate(clk);
        new_rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, new_rate, 0);
        KUNIT_EXPECT_EQ(test, rate, new_rate);
+
+       clk_put(clk);
 }
 
 static struct kunit_case clk_orphan_transparent_single_parent_mux_test_cases[] = {
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_GE(test, rate, DUMMY_CLOCK_RATE_1);
        KUNIT_EXPECT_LE(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
 
        KUNIT_EXPECT_LT(test,
                        clk_set_rate_range(clk,
                                           DUMMY_CLOCK_RATE_1 + 1000,
                                           DUMMY_CLOCK_RATE_1),
                        0);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        long rate;
 
        KUNIT_ASSERT_EQ(test,
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_GE(test, rate, DUMMY_CLOCK_RATE_1);
        KUNIT_EXPECT_LE(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_GE(test, rate, DUMMY_CLOCK_RATE_1);
        KUNIT_EXPECT_LE(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        long rounded;
 
        KUNIT_ASSERT_EQ(test,
                        0);
 
        KUNIT_EXPECT_EQ(test, rounded, clk_get_rate(clk));
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        long rate;
 
        KUNIT_ASSERT_EQ(test,
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_GE(test, rate, DUMMY_CLOCK_RATE_1);
        KUNIT_EXPECT_LE(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_GE(test, rate, DUMMY_CLOCK_RATE_1);
        KUNIT_EXPECT_LE(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        long rounded;
 
        KUNIT_ASSERT_EQ(test,
                        0);
 
        KUNIT_EXPECT_EQ(test, rounded, clk_get_rate(clk));
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_1);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 static struct kunit_case clk_range_test_cases[] = {
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_2);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        struct clk *user1, *user2;
        unsigned long rate;
 
 
        clk_put(user2);
        clk_put(user1);
+       clk_put(clk);
 }
 
 static struct kunit_case clk_range_maximize_test_cases[] = {
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        unsigned long rate;
 
        KUNIT_ASSERT_EQ(test,
        rate = clk_get_rate(clk);
        KUNIT_ASSERT_GT(test, rate, 0);
        KUNIT_EXPECT_EQ(test, rate, DUMMY_CLOCK_RATE_1);
+
+       clk_put(clk);
 }
 
 /*
 {
        struct clk_dummy_context *ctx = test->priv;
        struct clk_hw *hw = &ctx->hw;
-       struct clk *clk = hw->clk;
+       struct clk *clk = clk_hw_get_clk(hw, NULL);
        struct clk *user1, *user2;
        unsigned long rate;
 
 
        clk_put(user2);
        clk_put(user1);
+       clk_put(clk);
 }
 
 static struct kunit_case clk_range_minimize_test_cases[] = {