1 /*
2  * Copyright (c) 2025 Texas Instruments Incorporated
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #include <zephyr/ztest.h>
8 #include <zephyr/device.h>
9 #include <zephyr/devicetree.h>
10 #include <zephyr/drivers/firmware/tisci/tisci.h>
11 
ZTEST(tisci,test_tisci_api)12 ZTEST(tisci, test_tisci_api)
13 {
14 	const struct device *dmsc = DEVICE_DT_GET(DT_NODELABEL(dmsc));
15 
16 	zassert_not_null(dmsc, "Unable to get dev");
17 	zassert_true(device_is_ready(dmsc), "DMSC device not ready");
18 
19 	struct tisci_version_info ver;
20 	int ret = tisci_cmd_get_revision(dmsc, &ver);
21 
22 	zassert_ok(ret, "Failed to get TISCI revision");
23 
24 	uint64_t freq = 0;
25 
26 	ret = tisci_cmd_clk_get_freq(dmsc, 152, 0, &freq);
27 
28 	zassert_ok(ret, "Failed to get clock freq");
29 
30 	uint64_t min_freq = 96000000, target_freq = 96000000, max_freq = 96000000;
31 
32 	ret = tisci_cmd_clk_set_freq(dmsc, 152, 0, min_freq, target_freq, max_freq);
33 
34 	zassert_ok(ret, "Failed to set clock freq");
35 
36 	freq = 0;
37 	ret = tisci_cmd_clk_get_freq(dmsc, 152, 0, &freq);
38 
39 	zassert_ok(ret, "Failed to get clock freq after set");
40 	zassert_equal(freq, target_freq, "Clock freq after set does not match target");
41 
42 	ret = tisci_cmd_get_device(dmsc, 0);
43 
44 	zassert_ok(ret, "Failed to turn ON power domain device 0");
45 
46 	uint32_t clcnt = 0, resets = 0;
47 	uint8_t p_state = 0, c_state = 0;
48 	int state_ret = tisci_get_device_state(dmsc, 0, &clcnt, &resets, &p_state, &c_state);
49 
50 	zassert_ok(state_ret, "Failed to get device 0 state after ON");
51 
52 	ret = tisci_cmd_put_device(dmsc, 0);
53 
54 	zassert_ok(ret, "Failed to turn OFF power domain device 0");
55 
56 	clcnt = resets = 0;
57 	p_state = c_state = 0;
58 	state_ret = tisci_get_device_state(dmsc, 0, &clcnt, &resets, &p_state, &c_state);
59 
60 	zassert_ok(state_ret, "Failed to get device 0 state after OFF");
61 }
62 
63 ZTEST_SUITE(tisci, NULL, NULL, NULL, NULL, NULL);
64