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