1 /*
2 * Copyright (c) 2022 Google, LLC
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6 #include <zephyr/ztest.h>
7 #include <zephyr/drivers/clock_control.h>
8
9 #define TEST_FIXED_RATE_CLK0 DT_NODELABEL(test_fixed_rate_clk0)
10 #define TEST_FIXED_RATE_CLK0_RATE DT_PROP(TEST_FIXED_RATE_CLK0, clock_frequency)
11
12 /*
13 * Basic test for checking correctness of clock_api implementation
14 */
ZTEST(fixed_clk,test_fixed_rate_clk_on_off_status_rate)15 ZTEST(fixed_clk, test_fixed_rate_clk_on_off_status_rate)
16 {
17 const struct device *dev = DEVICE_DT_GET(TEST_FIXED_RATE_CLK0);
18 enum clock_control_status status;
19 uint32_t rate;
20 int err;
21
22 zassert_equal(device_is_ready(dev), true, "%s: Device wasn't ready",
23 dev->name);
24
25 status = clock_control_get_status(dev, 0);
26 zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
27 "%s: Unexpected status (%d)", dev->name, status);
28
29 err = clock_control_on(dev, 0);
30 zassert_equal(0, err, "%s: Unexpected err (%d)", dev->name, err);
31
32 status = clock_control_get_status(dev, 0);
33 zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
34 "%s: Unexpected status (%d)", dev->name, status);
35
36 err = clock_control_off(dev, 0);
37 zassert_equal(0, err, "%s: Expected 0, got (%d)",
38 dev->name, err);
39
40 status = clock_control_get_status(dev, 0);
41 zassert_equal(status, CLOCK_CONTROL_STATUS_ON,
42 "%s: Unexpected status (%d)", dev->name, status);
43
44 err = clock_control_get_rate(dev, 0, &rate);
45 zassert_equal(0, err, "%s: Unexpected err (%d)", dev->name, err);
46 zassert_equal(TEST_FIXED_RATE_CLK0_RATE, rate,
47 "%s: Got wrong rate, expected %u, got %u\n",
48 dev->name, TEST_FIXED_RATE_CLK0_RATE, rate);
49 }
50
51 ZTEST_SUITE(fixed_clk, NULL, NULL, NULL, NULL, NULL);
52