xref: /optee_os/core/drivers/scmi-msg/base.h (revision 5b25c76ac40f830867e3d60800120ffd7874e8dc)
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3  * Copyright (c) 2015-2019, Arm Limited and Contributors. All rights reserved.
4  * Copyright (c) 2019, Linaro Limited
5  */
6 
7 #ifndef SCMI_MSG_BASE_H
8 #define SCMI_MSG_BASE_H
9 
10 #include <stdint.h>
11 #include <types_ext.h>
12 
13 #define SCMI_PROTOCOL_VERSION_BASE	0x20000
14 
15 #define SCMI_DEFAULT_STRING_LENGTH	16
16 
17 enum scmi_base_message_id {
18 	SCMI_BASE_DISCOVER_VENDOR		= 0x003,
19 	SCMI_BASE_DISCOVER_SUB_VENDOR		= 0x004,
20 	SCMI_BASE_DISCOVER_IMPLEMENTATION_VERSION = 0x005,
21 	SCMI_BASE_DISCOVER_LIST_PROTOCOLS	= 0x006,
22 	SCMI_BASE_DISCOVER_AGENT		= 0x007,
23 	SCMI_BASE_NOTIFY_ERRORS			= 0x008,
24 };
25 
26 /*
27  * PROTOCOL_ATTRIBUTES
28  */
29 
30 #define SCMI_BASE_PROTOCOL_ATTRS_NUM_PROTOCOLS_POS	0
31 #define SCMI_BASE_PROTOCOL_ATTRS_NUM_AGENTS_POS		8
32 
33 #define SCMI_BASE_PROTOCOL_ATTRS_NUM_PROTOCOLS_MASK	0xFF
34 #define SCMI_BASE_PROTOCOL_ATTRS_NUM_AGENTS_MASK	0xFF00
35 
36 #define SCMI_BASE_PROTOCOL_ATTRIBUTES(NUM_PROTOCOLS, NUM_AGENTS) \
37 	((((NUM_PROTOCOLS) << SCMI_BASE_PROTOCOL_ATTRS_NUM_PROTOCOLS_POS) & \
38 	  SCMI_BASE_PROTOCOL_ATTRS_NUM_PROTOCOLS_MASK) | \
39 	(((NUM_AGENTS) << SCMI_BASE_PROTOCOL_ATTRS_NUM_AGENTS_POS) & \
40 	 SCMI_BASE_PROTOCOL_ATTRS_NUM_AGENTS_MASK))
41 
42 /*
43  * BASE_DISCOVER_VENDOR
44  */
45 struct scmi_base_discover_vendor_p2a {
46 	int32_t status;
47 	char vendor_identifier[SCMI_DEFAULT_STRING_LENGTH];
48 };
49 
50 /*
51  * BASE_DISCOVER_SUB_VENDOR
52  */
53 struct scmi_base_discover_sub_vendor_p2a {
54 	int32_t status;
55 	char sub_vendor_identifier[SCMI_DEFAULT_STRING_LENGTH];
56 };
57 
58 /*
59  * BASE_DISCOVER_IMPLEMENTATION_VERSION
60  * No special structure right now, see protocol_version.
61  */
62 
63 /*
64  * BASE_DISCOVER_LIST_PROTOCOLS
65  */
66 struct scmi_base_discover_list_protocols_a2p {
67 	uint32_t skip;
68 };
69 
70 struct scmi_base_discover_list_protocols_p2a {
71 	int32_t status;
72 	uint32_t num_protocols;
73 	uint32_t protocols[];
74 };
75 
76 #endif /* SCMI_MSG_BASE_H */
77