1aa4f886fSSudeep Holla // SPDX-License-Identifier: GPL-2.0 2aa4f886fSSudeep Holla /* 3aa4f886fSSudeep Holla * SCMI Message Protocol driver header 4aa4f886fSSudeep Holla * 5aa4f886fSSudeep Holla * Copyright (C) 2018 ARM Ltd. 6aa4f886fSSudeep Holla */ 7aa4f886fSSudeep Holla #include <linux/types.h> 8aa4f886fSSudeep Holla 9*b6f20ff8SSudeep Holla #define SCMI_MAX_STR_SIZE 16 10*b6f20ff8SSudeep Holla 11*b6f20ff8SSudeep Holla /** 12*b6f20ff8SSudeep Holla * struct scmi_revision_info - version information structure 13*b6f20ff8SSudeep Holla * 14*b6f20ff8SSudeep Holla * @major_ver: Major ABI version. Change here implies risk of backward 15*b6f20ff8SSudeep Holla * compatibility break. 16*b6f20ff8SSudeep Holla * @minor_ver: Minor ABI version. Change here implies new feature addition, 17*b6f20ff8SSudeep Holla * or compatible change in ABI. 18*b6f20ff8SSudeep Holla * @num_protocols: Number of protocols that are implemented, excluding the 19*b6f20ff8SSudeep Holla * base protocol. 20*b6f20ff8SSudeep Holla * @num_agents: Number of agents in the system. 21*b6f20ff8SSudeep Holla * @impl_ver: A vendor-specific implementation version. 22*b6f20ff8SSudeep Holla * @vendor_id: A vendor identifier(Null terminated ASCII string) 23*b6f20ff8SSudeep Holla * @sub_vendor_id: A sub-vendor identifier(Null terminated ASCII string) 24*b6f20ff8SSudeep Holla */ 25*b6f20ff8SSudeep Holla struct scmi_revision_info { 26*b6f20ff8SSudeep Holla u16 major_ver; 27*b6f20ff8SSudeep Holla u16 minor_ver; 28*b6f20ff8SSudeep Holla u8 num_protocols; 29*b6f20ff8SSudeep Holla u8 num_agents; 30*b6f20ff8SSudeep Holla u32 impl_ver; 31*b6f20ff8SSudeep Holla char vendor_id[SCMI_MAX_STR_SIZE]; 32*b6f20ff8SSudeep Holla char sub_vendor_id[SCMI_MAX_STR_SIZE]; 33*b6f20ff8SSudeep Holla }; 34*b6f20ff8SSudeep Holla 35aa4f886fSSudeep Holla /** 36aa4f886fSSudeep Holla * struct scmi_handle - Handle returned to ARM SCMI clients for usage. 37aa4f886fSSudeep Holla * 38aa4f886fSSudeep Holla * @dev: pointer to the SCMI device 39*b6f20ff8SSudeep Holla * @version: pointer to the structure containing SCMI version information 40aa4f886fSSudeep Holla */ 41aa4f886fSSudeep Holla struct scmi_handle { 42aa4f886fSSudeep Holla struct device *dev; 43*b6f20ff8SSudeep Holla struct scmi_revision_info *version; 44*b6f20ff8SSudeep Holla }; 45*b6f20ff8SSudeep Holla 46*b6f20ff8SSudeep Holla enum scmi_std_protocol { 47*b6f20ff8SSudeep Holla SCMI_PROTOCOL_BASE = 0x10, 48*b6f20ff8SSudeep Holla SCMI_PROTOCOL_POWER = 0x11, 49*b6f20ff8SSudeep Holla SCMI_PROTOCOL_SYSTEM = 0x12, 50*b6f20ff8SSudeep Holla SCMI_PROTOCOL_PERF = 0x13, 51*b6f20ff8SSudeep Holla SCMI_PROTOCOL_CLOCK = 0x14, 52*b6f20ff8SSudeep Holla SCMI_PROTOCOL_SENSOR = 0x15, 53aa4f886fSSudeep Holla }; 54