2 * Copyright (c) 2016, NVIDIA CORPORATION.
4 * SPDX-License-Identifier: GPL-2.0
12 struct sandbox_clk_test {
13 struct clk clks[SANDBOX_CLK_TEST_ID_COUNT];
17 static const char * const sandbox_clk_test_names[] = {
18 [SANDBOX_CLK_TEST_ID_FIXED] = "fixed",
19 [SANDBOX_CLK_TEST_ID_SPI] = "spi",
20 [SANDBOX_CLK_TEST_ID_I2C] = "i2c",
23 int sandbox_clk_test_get(struct udevice *dev)
25 struct sandbox_clk_test *sbct = dev_get_priv(dev);
28 for (i = 0; i < SANDBOX_CLK_TEST_ID_COUNT; i++) {
29 ret = clk_get_by_name(dev, sandbox_clk_test_names[i],
38 int sandbox_clk_test_get_bulk(struct udevice *dev)
40 struct sandbox_clk_test *sbct = dev_get_priv(dev);
42 return clk_get_bulk(dev, &sbct->bulk);
45 ulong sandbox_clk_test_get_rate(struct udevice *dev, int id)
47 struct sandbox_clk_test *sbct = dev_get_priv(dev);
49 if (id < 0 || id >= SANDBOX_CLK_TEST_ID_COUNT)
52 return clk_get_rate(&sbct->clks[id]);
55 ulong sandbox_clk_test_set_rate(struct udevice *dev, int id, ulong rate)
57 struct sandbox_clk_test *sbct = dev_get_priv(dev);
59 if (id < 0 || id >= SANDBOX_CLK_TEST_ID_COUNT)
62 return clk_set_rate(&sbct->clks[id], rate);
65 int sandbox_clk_test_enable(struct udevice *dev, int id)
67 struct sandbox_clk_test *sbct = dev_get_priv(dev);
69 if (id < 0 || id >= SANDBOX_CLK_TEST_ID_COUNT)
72 return clk_enable(&sbct->clks[id]);
75 int sandbox_clk_test_enable_bulk(struct udevice *dev)
77 struct sandbox_clk_test *sbct = dev_get_priv(dev);
79 return clk_enable_bulk(&sbct->bulk);
82 int sandbox_clk_test_disable(struct udevice *dev, int id)
84 struct sandbox_clk_test *sbct = dev_get_priv(dev);
86 if (id < 0 || id >= SANDBOX_CLK_TEST_ID_COUNT)
89 return clk_disable(&sbct->clks[id]);
92 int sandbox_clk_test_disable_bulk(struct udevice *dev)
94 struct sandbox_clk_test *sbct = dev_get_priv(dev);
96 return clk_disable_bulk(&sbct->bulk);
99 int sandbox_clk_test_free(struct udevice *dev)
101 struct sandbox_clk_test *sbct = dev_get_priv(dev);
104 for (i = 0; i < SANDBOX_CLK_TEST_ID_COUNT; i++) {
105 ret = clk_free(&sbct->clks[i]);
113 int sandbox_clk_test_release_bulk(struct udevice *dev)
115 struct sandbox_clk_test *sbct = dev_get_priv(dev);
117 return clk_release_bulk(&sbct->bulk);
120 static const struct udevice_id sandbox_clk_test_ids[] = {
121 { .compatible = "sandbox,clk-test" },
125 U_BOOT_DRIVER(sandbox_clk_test) = {
126 .name = "sandbox_clk_test",
128 .of_match = sandbox_clk_test_ids,
129 .priv_auto_alloc_size = sizeof(struct sandbox_clk_test),