1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2019-2024, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * Description:
8  *     Definitions for SCMI and TRANSPORT module configurations.
9  */
10 
11 #ifndef JUNO_SCMI_H
12 #define JUNO_SCMI_H
13 
14 enum juno_scmi_agent_idx {
15     /* 0 is reserved for the platform */
16     JUNO_SCMI_AGENT_IDX_OSPM = 1,
17     JUNO_SCMI_AGENT_IDX_PSCI,
18     JUNO_SCMI_AGENT_IDX_COUNT,
19 };
20 
21 enum juno_scmi_service_idx {
22     JUNO_SCMI_SERVICE_IDX_PSCI_A2P,
23     JUNO_SCMI_SERVICE_IDX_OSPM_A2P_0,
24     JUNO_SCMI_SERVICE_IDX_OSPM_A2P_1,
25 #ifdef BUILD_HAS_SCMI_NOTIFICATIONS
26     JUNO_SCMI_SERVICE_IDX_OSPM_P2A,
27 #endif
28     JUNO_SCMI_SERVICE_IDX_COUNT,
29 };
30 
31 /* SCP<->AP Fast channels indexes */
32 #ifdef BUILD_HAS_SCMI_PERF_FAST_CHANNELS
33 enum juno_plat_fch_idx {
34     /* Fast channels from 0 - 3 */
35     JUNO_PLAT_FCH_BIG_LEVEL_SET,
36     JUNO_PLAT_FCH_BIG_LIMIT_SET,
37     JUNO_PLAT_FCH_BIG_LEVEL_GET,
38     JUNO_PLAT_FCH_BIG_LIMIT_GET,
39 
40     /* Fast channels from 4 - 7 */
41     JUNO_PLAT_FCH_LITTLE_LEVEL_SET,
42     JUNO_PLAT_FCH_LITTLE_LIMIT_SET,
43     JUNO_PLAT_FCH_LITTLE_LEVEL_GET,
44     JUNO_PLAT_FCH_LITTLE_LIMIT_GET,
45 
46     /* Fast channels from 8 - 11 */
47     JUNO_PLAT_FCH_GPU_LEVEL_SET,
48     JUNO_PLAT_FCH_GPU_LIMIT_SET,
49     JUNO_PLAT_FCH_GPU_LEVEL_GET,
50     JUNO_PLAT_FCH_GPU_LIMIT_GET,
51 
52     JUNO_PLAT_FCH_COUNT,
53 };
54 #endif
55 
56 /* SCP <-> AP Transport channels */
57 enum juno_transport_channel_idx {
58     JUNO_TRANSPORT_SCMI_SERVICE_PSCI,
59     JUNO_TRANSPORT_SCMI_SERVICE_OSPM_0,
60     JUNO_TRANSPORT_SCMI_SERVICE_OSPM_1,
61 
62 #if defined(BUILD_HAS_SCMI_NOTIFICATIONS)
63     JUNO_TRANSPORT_SCMI_SERVICE_OSPM_P2A,
64 #endif
65 
66 #if defined(BUILD_HAS_SCMI_PERF_FAST_CHANNELS)
67     JUNO_TRANSPORT_SCMI_PERF_FCH_BIG_LEVEL_SET,
68     JUNO_TRANSPORT_SCMI_PERF_FCH_BIG_LIMIT_SET,
69     JUNO_TRANSPORT_SCMI_PERF_FCH_BIG_LEVEL_GET,
70     JUNO_TRANSPORT_SCMI_PERF_FCH_BIG_LIMIT_GET,
71 
72     JUNO_TRANSPORT_SCMI_PERF_FCH_LITTLE_LEVEL_SET,
73     JUNO_TRANSPORT_SCMI_PERF_FCH_LITTLE_LIMIT_SET,
74     JUNO_TRANSPORT_SCMI_PERF_FCH_LITTLE_LEVEL_GET,
75     JUNO_TRANSPORT_SCMI_PERF_FCH_LITTLE_LIMIT_GET,
76 
77     JUNO_TRANSPORT_SCMI_PERF_FCH_GPU_LEVEL_SET,
78     JUNO_TRANSPORT_SCMI_PERF_FCH_GPU_LIMIT_SET,
79     JUNO_TRANSPORT_SCMI_PERF_FCH_GPU_LEVEL_GET,
80     JUNO_TRANSPORT_SCMI_PERF_FCH_GPU_LIMIT_GET,
81 #endif
82     JUNO_TRANSPORT_CHANNELS_COUNT,
83 };
84 
85 #endif /* JUNO_SCMI_H */
86