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