xref: /optee_os/lib/libutee/include/pta_scmi_client.h (revision 16a5030f3181d68e54ca906cb55b6e0fef1ea4b1)
1b0a1c250SEtienne Carriere /* SPDX-License-Identifier: BSD-2-Clause */
2b0a1c250SEtienne Carriere /*
3b0a1c250SEtienne Carriere  * Copyright (c) 2019-2021, Linaro Limited
4b0a1c250SEtienne Carriere  */
5b0a1c250SEtienne Carriere #ifndef PTA_SCMI_CLIENT_H
6b0a1c250SEtienne Carriere #define PTA_SCMI_CLIENT_H
7b0a1c250SEtienne Carriere 
8b0a1c250SEtienne Carriere #define PTA_SCMI_UUID { 0xa8cfe406, 0xd4f5, 0x4a2e, \
9b0a1c250SEtienne Carriere 		{ 0x9f, 0x8d, 0xa2, 0x5d, 0xc7, 0x54, 0xc0, 0x99 } }
10b0a1c250SEtienne Carriere 
11b0a1c250SEtienne Carriere #define PTA_SCMI_NAME "PTA-SCMI"
12b0a1c250SEtienne Carriere 
13b0a1c250SEtienne Carriere /*
14b0a1c250SEtienne Carriere  * PTA_SCMI_CMD_CAPABILITIES - Get channel capabilities
15b0a1c250SEtienne Carriere  *
16b0a1c250SEtienne Carriere  * [out]    value[0].a: Capabilities bit mask (PTA_SCMI_CAPS_*)
17b0a1c250SEtienne Carriere  * [out]    value[0].b: Extended capabilities or 0
18b0a1c250SEtienne Carriere  */
19b0a1c250SEtienne Carriere #define PTA_SCMI_CMD_CAPABILITIES	0
20b0a1c250SEtienne Carriere 
21b0a1c250SEtienne Carriere /*
22b0a1c250SEtienne Carriere  * PTA_SCMI_CMD_PROCESS_SMT_CHANNEL - Process SCMI message in SMT buffer
23b0a1c250SEtienne Carriere  *
24b0a1c250SEtienne Carriere  * [in]     value[0].a: Channel handle
25b0a1c250SEtienne Carriere  *
26b0a1c250SEtienne Carriere  * Shared memory used for SCMI message/response exhange is expected
27b0a1c250SEtienne Carriere  * already identified and bound to channel handle in both SCMI agent
28b0a1c250SEtienne Carriere  * and SCMI server (OP-TEE) parts.
29b0a1c250SEtienne Carriere  * The memory uses SMT header to carry SCMI meta-data (protocol ID and
30b0a1c250SEtienne Carriere  * protocol message ID).
31b0a1c250SEtienne Carriere  */
32b0a1c250SEtienne Carriere #define PTA_SCMI_CMD_PROCESS_SMT_CHANNEL	1
33b0a1c250SEtienne Carriere 
34b0a1c250SEtienne Carriere /*
35b0a1c250SEtienne Carriere  * PTA_SCMI_CMD_PROCESS_SMT_CHANNEL_MESSAGE - Process SCMI message in
36b0a1c250SEtienne Carriere  *				SMT buffer pointed by memref parameters
37b0a1c250SEtienne Carriere  *
38b0a1c250SEtienne Carriere  * [in]     value[0].a: Channel handle
39b0a1c250SEtienne Carriere  * [in/out] memref[1]: Message/response buffer (SMT and SCMI payload)
40b0a1c250SEtienne Carriere  *
41b0a1c250SEtienne Carriere  * Shared memory used for SCMI message/response is a SMT buffer
42b0a1c250SEtienne Carriere  * referenced by param[1]. It shall be 128 bytes large to fit response
43b0a1c250SEtienne Carriere  * payload whatever message playload size.
44b0a1c250SEtienne Carriere  * The memory uses SMT header to carry SCMI meta-data (protocol ID and
45b0a1c250SEtienne Carriere  * protocol message ID).
46b0a1c250SEtienne Carriere  */
47b0a1c250SEtienne Carriere #define PTA_SCMI_CMD_PROCESS_SMT_CHANNEL_MESSAGE	2
48b0a1c250SEtienne Carriere 
49b0a1c250SEtienne Carriere /*
50b0a1c250SEtienne Carriere  * PTA_SCMI_CMD_GET_CHANNEL_HANDLE - Get handle for an SCMI channel
51b0a1c250SEtienne Carriere  *
52b0a1c250SEtienne Carriere  * Get a handle for the SCMI channel. This handle value is to be passed
53b0a1c250SEtienne Carriere  * as argument to some commands as PTA_SCMI_CMD_PROCESS_*.
54b0a1c250SEtienne Carriere  *
55b0a1c250SEtienne Carriere  * [in]     value[0].a: Channel identifier or 0 if no assigned ID
56b0a1c250SEtienne Carriere  * [in]     value[0].b: Requested capabilities mask (PTA_SCMI_CAPS_*)
57b0a1c250SEtienne Carriere  * [out]    value[0].a: Returned channel handle
58b0a1c250SEtienne Carriere  */
59b0a1c250SEtienne Carriere #define PTA_SCMI_CMD_GET_CHANNEL_HANDLE		3
60b0a1c250SEtienne Carriere 
61b0a1c250SEtienne Carriere /*
628ea50d3bSEtienne Carriere  * PTA_SCMI_CMD_PROCESS_MSG_CHANNEL - Process SCMI message in a MSG
638ea50d3bSEtienne Carriere  * buffer pointed by memref parameters
648ea50d3bSEtienne Carriere  *
658ea50d3bSEtienne Carriere  * [in]     value[0].a: Channel handle
668ea50d3bSEtienne Carriere  * [in]     memref[1]: Input message shared buffer
678ea50d3bSEtienne Carriere  * [out]    memref[2]: Output message shared buffer
688ea50d3bSEtienne Carriere  */
698ea50d3bSEtienne Carriere #define PTA_SCMI_CMD_PROCESS_MSG_CHANNEL	4
708ea50d3bSEtienne Carriere 
718ea50d3bSEtienne Carriere /*
72b0a1c250SEtienne Carriere  * Capabilities
73b0a1c250SEtienne Carriere  */
74b0a1c250SEtienne Carriere 
75b0a1c250SEtienne Carriere /* Channel supports shared memory using the SMT header protocol */
76b0a1c250SEtienne Carriere #define PTA_SCMI_CAPS_SMT_HEADER			BIT32(0)
77b0a1c250SEtienne Carriere 
788ea50d3bSEtienne Carriere /* Channel supports shared memory using the MSG header protocol */
798ea50d3bSEtienne Carriere #define PTA_SCMI_CAPS_MSG_HEADER			BIT32(1)
808ea50d3bSEtienne Carriere 
81*16a5030fSEtienne Carriere /* Mask of defined capabilities */
82*16a5030fSEtienne Carriere #define PTA_SCMI_CAPS_MASK				GENMASK_32(1, 0)
83*16a5030fSEtienne Carriere 
84b0a1c250SEtienne Carriere #endif /* SCMI_PTA_SCMI_CLIENT_H */
85