12#ifndef ARM_SCMI_BASE_PROTOCOL_H_
13#define ARM_SCMI_BASE_PROTOCOL_H_
17#define BASE_PROTOCOL_VERSION_V1 0x10000
18#define BASE_PROTOCOL_VERSION_V2 0x20000
20#define NUM_PROTOCOL_MASK 0xFFU
21#define NUM_AGENT_MASK 0xFFU
23#define NUM_AGENT_SHIFT 0x8
28#define SCMI_TOTAL_PROTOCOLS(Attr) (Attr & NUM_PROTOCOL_MASK)
31#define SCMI_TOTAL_AGENTS(Attr) ((Attr >> NUM_AGENT_SHIFT) & NUM_AGENT_MASK)
33#define ARM_SCMI_BASE_PROTOCOL_GUID { \
34 0xd7e5abe9, 0x33ab, 0x418e, {0x9f, 0x91, 0x72, 0xda, 0xe2, 0xba, 0x8e, 0x2f} \
37extern EFI_GUID gArmScmiBaseProtocolGuid;
72 OUT UINT32 *TotalProtocols
90 OUT UINT8 VendorIdentifier[SCMI_MAX_STR_LEN]
108 OUT UINT8 VendorIdentifier[SCMI_MAX_STR_LEN]
125 OUT UINT32 *ImplementationVersion
146 IN OUT UINT32 *ProtocolListSize,
147 OUT UINT8 *ProtocolList
162 ScmiMessageIdBaseDiscoverVendor = 0x3,
163 ScmiMessageIdBaseDiscoverSubVendor = 0x4,
164 ScmiMessageIdBaseDiscoverImplementationVersion = 0x5,
165 ScmiMessageIdBaseDiscoverListProtocols = 0x6
166} SCMI_MESSAGE_ID_BASE;
EFI_STATUS(EFIAPI * SCMI_BASE_GET_VERSION)(IN SCMI_BASE_PROTOCOL *This, OUT UINT32 *Version)
EFI_STATUS(EFIAPI * SCMI_BASE_DISCOVER_VENDOR)(IN SCMI_BASE_PROTOCOL *This, OUT UINT8 VendorIdentifier[SCMI_MAX_STR_LEN])
EFI_STATUS(EFIAPI * SCMI_BASE_GET_TOTAL_PROTOCOLS)(IN SCMI_BASE_PROTOCOL *This, OUT UINT32 *TotalProtocols)
EFI_STATUS(EFIAPI * SCMI_BASE_DISCOVER_IMPLEMENTATION_VERSION)(IN SCMI_BASE_PROTOCOL *This, OUT UINT32 *ImplementationVersion)
EFI_STATUS(EFIAPI * SCMI_BASE_DISCOVER_LIST_PROTOCOLS)(IN SCMI_BASE_PROTOCOL *This, IN OUT UINT32 *ProtocolListSize, OUT UINT8 *ProtocolList)
EFI_STATUS(EFIAPI * SCMI_BASE_DISCOVER_SUB_VENDOR)(IN SCMI_BASE_PROTOCOL *This, OUT UINT8 VendorIdentifier[SCMI_MAX_STR_LEN])