Lines Matching defs:clk

3  * Kunit test for clk rate management
5 #include <linux/clk.h>
6 #include <linux/clk-provider.h>
9 #include "clk.h"
219 struct clk *clk = clk_hw_get_clk(hw, NULL);
222 rate = clk_get_rate(clk);
226 clk_put(clk);
240 struct clk *clk = clk_hw_get_clk(hw, NULL);
244 clk_set_rate(clk, DUMMY_CLOCK_RATE_1),
247 rate = clk_get_rate(clk);
251 clk_put(clk);
265 struct clk *clk = clk_hw_get_clk(hw, NULL);
269 clk_set_rate(clk, DUMMY_CLOCK_RATE_1),
273 clk_set_rate(clk, DUMMY_CLOCK_RATE_2),
276 rate = clk_get_rate(clk);
280 clk_put(clk);
291 struct clk *clk = clk_hw_get_clk(hw, NULL);
295 rounded_rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1);
300 clk_set_rate(clk, DUMMY_CLOCK_RATE_1),
303 set_rate = clk_get_rate(clk);
307 clk_put(clk);
324 .name = "clk-test",
341 ctx->hw.init = CLK_HW_INIT_NO_PARENT("test-clk",
361 struct clk *clk = clk_hw_get_clk(hw, NULL);
364 rate = clk_get_rate(clk);
370 rate = clk_get_rate(clk);
374 clk_put(clk);
385 struct clk *clk = clk_hw_get_clk(hw, NULL);
389 clk_set_rate_range(clk,
394 rate = clk_get_rate(clk);
399 clk_put(clk);
414 struct clk *clk = clk_hw_get_clk(hw, NULL);
420 clk_set_rate_range(clk,
425 rate = clk_get_rate(clk);
429 clk_put(clk);
445 .name = "clk-uncached-test",
509 struct clk *clk = clk_hw_get_clk(hw, NULL);
510 struct clk *parent = clk_hw_get_clk(&ctx->parents_ctx[0].hw, NULL);
512 KUNIT_EXPECT_TRUE(test, clk_is_match(clk_get_parent(clk), parent));
515 clk_put(clk);
527 struct clk *clk = clk_hw_get_clk(hw, NULL);
528 struct clk *parent;
531 KUNIT_EXPECT_TRUE(test, clk_has_parent(clk, parent));
535 KUNIT_EXPECT_TRUE(test, clk_has_parent(clk, parent));
538 clk_put(clk);
555 struct clk *clk = clk_hw_get_clk(hw, NULL);
556 struct clk *parent1, *parent2;
564 KUNIT_ASSERT_TRUE(test, clk_is_match(clk_get_parent(clk), parent1));
575 ret = clk_set_rate_range(clk,
580 ret = clk_set_parent(clk, parent2);
583 rate = clk_get_rate(clk);
590 clk_put(clk);
609 .name = "clk-multiple-parents-mux-test",
663 struct clk *clk = clk_hw_get_clk(hw, NULL);
665 KUNIT_EXPECT_PTR_EQ(test, clk_get_parent(clk), NULL);
667 clk_put(clk);
680 struct clk *clk = clk_hw_get_clk(hw, NULL);
681 struct clk *parent, *new_parent;
687 ret = clk_set_parent(clk, parent);
690 new_parent = clk_get_parent(clk);
695 clk_put(clk);
708 struct clk *clk = clk_hw_get_clk(hw, NULL);
709 struct clk *parent;
719 ret = clk_set_parent(clk, parent);
722 ret = clk_drop_range(clk);
725 new_parent_rate = clk_get_rate(clk);
730 clk_put(clk);
742 struct clk *clk = clk_hw_get_clk(hw, NULL);
743 struct clk *parent;
753 ret = clk_set_parent(clk, parent);
756 rate = clk_get_rate(clk);
761 clk_put(clk);
772 struct clk *clk, *parent;
779 clk = clk_hw_get_clk(&ctx->hw, NULL);
780 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, clk);
785 ret = clk_set_parent(clk, parent);
788 clk_put(clk);
807 struct clk *clk = clk_hw_get_clk(hw, NULL);
808 struct clk *parent;
815 ret = clk_set_parent(clk, parent);
818 ret = clk_set_rate_range(clk, DUMMY_CLOCK_RATE_1, DUMMY_CLOCK_RATE_2);
821 rate = clk_get_rate(clk);
827 clk_put(clk);
840 struct clk *clk = clk_hw_get_clk(hw, NULL);
841 struct clk *parent;
851 ret = clk_set_parent(clk, parent);
854 ret = clk_set_rate_range(clk,
864 clk_put(clk);
877 struct clk *clk = clk_hw_get_clk(hw, NULL);
881 ret = clk_set_rate_range(clk, DUMMY_CLOCK_RATE_1, DUMMY_CLOCK_RATE_2);
884 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
889 clk_put(clk);
906 struct clk *clk = clk_hw_get_clk(hw, NULL);
907 struct clk *parent;
918 ret = clk_set_parent(clk, parent);
921 rate = clk_get_rate(clk);
927 clk_put(clk);
953 .name = "clk-orphan-transparent-multiple-parent-mux-test",
976 CLK_HW_INIT_NO_PARENT("parent-clk",
984 ctx->hw.init = CLK_HW_INIT("test-clk", "parent-clk",
1013 struct clk *clk = clk_hw_get_clk(hw, NULL);
1014 struct clk *parent = clk_hw_get_clk(&ctx->parent_ctx.hw, NULL);
1016 KUNIT_EXPECT_TRUE(test, clk_is_match(clk_get_parent(clk), parent));
1019 clk_put(clk);
1031 struct clk *clk = clk_hw_get_clk(hw, NULL);
1032 struct clk *parent = clk_hw_get_clk(&ctx->parent_ctx.hw, NULL);
1034 KUNIT_EXPECT_TRUE(test, clk_has_parent(clk, parent));
1037 clk_put(clk);
1054 struct clk *clk = clk_hw_get_clk(hw, NULL);
1055 struct clk *parent;
1060 parent = clk_get_parent(clk);
1066 ret = clk_set_rate_range(clk, 3000, 4000);
1069 clk_put(clk);
1086 struct clk *clk = clk_hw_get_clk(hw, NULL);
1087 struct clk *parent;
1092 parent = clk_get_parent(clk);
1095 ret = clk_set_rate_range(clk, 1000, 2000);
1101 clk_put(clk);
1115 struct clk *clk = clk_hw_get_clk(hw, NULL);
1116 struct clk *parent;
1120 parent = clk_get_parent(clk);
1126 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
1131 clk_put(clk);
1145 struct clk *clk = clk_hw_get_clk(hw, NULL);
1146 struct clk *parent;
1150 parent = clk_get_parent(clk);
1156 ret = clk_set_rate_range(clk, DUMMY_CLOCK_RATE_1 + 1000, DUMMY_CLOCK_RATE_2 - 1000);
1159 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
1164 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_2 + 1000);
1169 clk_put(clk);
1183 struct clk *clk = clk_hw_get_clk(hw, NULL);
1184 struct clk *parent;
1188 parent = clk_get_parent(clk);
1194 ret = clk_set_rate_range(clk, DUMMY_CLOCK_RATE_1, DUMMY_CLOCK_RATE_2);
1197 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
1202 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_2 + 1000);
1207 clk_put(clk);
1230 .name = "clk-single-parent-mux-test",
1277 * https://lore.kernel.org/linux-clk/7720158d-10a7-a17b-73a4-a8615c9c6d5c@collabora.com/
1283 struct clk *clk = clk_hw_get_clk(hw, NULL);
1286 rate = clk_get_rate(clk);
1290 clk_set_rate_range(clk,
1295 new_rate = clk_get_rate(clk);
1299 clk_put(clk);
1316 .name = "clk-orphan-transparent-single-parent-test",
1349 CLK_HW_INIT("test-clk", "intermediate-parent",
1387 struct clk *clk = clk_hw_get_clk(hw, NULL);
1390 rate = clk_get_rate(clk);
1393 clk_put(clk);
1402 * https://lore.kernel.org/linux-clk/366a0232-bb4a-c357-6aa8-636e398e05eb@samsung.com/
1409 struct clk *clk = clk_hw_get_clk(hw, NULL);
1413 ret = clk_set_rate_range(clk,
1418 rate = clk_get_rate(clk);
1422 clk_put(clk);
1446 .name = "clk-orphan-two-level-root-last-test",
1461 struct clk *clk = clk_hw_get_clk(hw, NULL);
1465 clk_set_rate_range(clk,
1470 rate = clk_get_rate(clk);
1475 clk_put(clk);
1486 struct clk *clk = clk_hw_get_clk(hw, NULL);
1489 clk_set_rate_range(clk,
1494 clk_put(clk);
1505 struct clk *user1, *user2;
1533 struct clk *clk = clk_hw_get_clk(hw, NULL);
1537 clk_set_rate_range(clk,
1542 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
1547 clk_put(clk);
1558 struct clk *clk = clk_hw_get_clk(hw, NULL);
1562 clk_set_rate_range(clk,
1568 clk_set_rate(clk, DUMMY_CLOCK_RATE_1 - 1000),
1571 rate = clk_get_rate(clk);
1576 clk_put(clk);
1589 struct clk *clk = clk_hw_get_clk(hw, NULL);
1593 clk_set_rate_range(clk,
1598 rounded = clk_round_rate(clk, DUMMY_CLOCK_RATE_1 - 1000);
1602 clk_set_rate(clk, DUMMY_CLOCK_RATE_1 - 1000),
1605 KUNIT_EXPECT_EQ(test, rounded, clk_get_rate(clk));
1607 clk_put(clk);
1618 struct clk *clk = clk_hw_get_clk(hw, NULL);
1622 clk_set_rate_range(clk,
1627 rate = clk_round_rate(clk, DUMMY_CLOCK_RATE_2 + 1000);
1632 clk_put(clk);
1643 struct clk *clk = clk_hw_get_clk(hw, NULL);
1647 clk_set_rate_range(clk,
1653 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1656 rate = clk_get_rate(clk);
1661 clk_put(clk);
1674 struct clk *clk = clk_hw_get_clk(hw, NULL);
1678 clk_set_rate_range(clk,
1683 rounded = clk_round_rate(clk, DUMMY_CLOCK_RATE_2 + 1000);
1687 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1690 KUNIT_EXPECT_EQ(test, rounded, clk_get_rate(clk));
1692 clk_put(clk);
1707 struct clk *clk = clk_hw_get_clk(hw, NULL);
1711 clk_set_rate(clk, DUMMY_CLOCK_RATE_1 - 1000),
1715 clk_set_rate_range(clk,
1720 rate = clk_get_rate(clk);
1724 clk_put(clk);
1739 struct clk *clk = clk_hw_get_clk(hw, NULL);
1743 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1747 clk_set_rate_range(clk,
1752 rate = clk_get_rate(clk);
1756 clk_put(clk);
1781 .name = "clk-range-test",
1799 struct clk *clk = clk_hw_get_clk(hw, NULL);
1803 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1807 clk_set_rate_range(clk,
1812 rate = clk_get_rate(clk);
1817 clk_set_rate_range(clk,
1822 rate = clk_get_rate(clk);
1827 clk_set_rate_range(clk,
1832 rate = clk_get_rate(clk);
1836 clk_put(clk);
1851 struct clk *clk = clk_hw_get_clk(hw, NULL);
1852 struct clk *user1, *user2;
1862 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1871 rate = clk_get_rate(clk);
1881 rate = clk_get_rate(clk);
1889 rate = clk_get_rate(clk);
1895 clk_put(clk);
1910 struct clk *clk = clk_hw_get_clk(hw, NULL);
1911 struct clk *user1, *user2;
1921 clk_set_rate(clk, DUMMY_CLOCK_RATE_2 + 1000),
1930 rate = clk_get_rate(clk);
1940 rate = clk_get_rate(clk);
1946 rate = clk_get_rate(clk);
1951 clk_put(clk);
1969 .name = "clk-range-maximize-test",
1987 struct clk *clk = clk_hw_get_clk(hw, NULL);
1991 clk_set_rate(clk, DUMMY_CLOCK_RATE_1 - 1000),
1995 clk_set_rate_range(clk,
2000 rate = clk_get_rate(clk);
2005 clk_set_rate_range(clk,
2010 rate = clk_get_rate(clk);
2015 clk_set_rate_range(clk,
2020 rate = clk_get_rate(clk);
2024 clk_put(clk);
2039 struct clk *clk = clk_hw_get_clk(hw, NULL);
2040 struct clk *user1, *user2;
2055 rate = clk_get_rate(clk);
2065 rate = clk_get_rate(clk);
2073 rate = clk_get_rate(clk);
2079 clk_put(clk);
2094 struct clk *clk = clk_hw_get_clk(hw, NULL);
2095 struct clk *user1, *user2;
2110 rate = clk_get_rate(clk);
2120 rate = clk_get_rate(clk);
2126 rate = clk_get_rate(clk);
2131 clk_put(clk);
2149 .name = "clk-range-minimize-test",
2225 struct clk *clk = clk_hw_get_clk(hw, NULL);
2230 rate = clk_get_rate(clk);
2242 clk_put(clk);
2260 .name = "clk-leaf-mux-set-rate-parent",
2275 struct clk *clk;
2346 ctx->clk = clk_hw_get_clk(&ctx->mux_ctx.hw, NULL);
2347 ret = clk_notifier_register(ctx->clk, &ctx->clk_nb);
2357 struct clk *clk = ctx->clk;
2359 clk_notifier_unregister(clk, &ctx->clk_nb);
2360 clk_put(clk);
2376 struct clk *clk = clk_hw_get_clk(hw, NULL);
2377 struct clk *new_parent = clk_hw_get_clk(&ctx->mux_ctx.parents_ctx[1].hw, NULL);
2380 ret = clk_set_parent(clk, new_parent);
2400 clk_put(clk);
2415 .name = "clk-mux-notifier",
2479 struct clk *clk = clk_hw_get_clk(hw, NULL);
2480 struct clk *other_parent, *parent;
2485 parent = clk_get_parent(clk);
2499 rounded_rate = clk_round_rate(clk, other_parent_rate);
2503 clk_put(clk);
2515 struct clk *clk = clk_hw_get_clk(hw, NULL);
2516 struct clk *other_parent, *parent;
2522 parent = clk_get_parent(clk);
2536 ret = clk_set_rate(clk, other_parent_rate);
2539 rate = clk_get_rate(clk);
2543 clk_put(clk);
2560 .name = "clk-mux-no-reparent",