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