/** @file IPMI SSIF Definitions Copyright (c) 2023, Ampere Computing LLC. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @par Revision Reference: - IPMI Specification Version 2.0, Rev. 1.1 https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-second-gen-interface-spec-v2-rev1-1.html **/ #ifndef IPMI_SSIF_H_ #define IPMI_SSIF_H_ /// /// Definitions for SMBUS Commands for SSIF /// Table 12 - Summary of SMBUS Commands for SSIF /// /// Write block #define IPMI_SSIF_SMBUS_CMD_SINGLE_PART_WRITE 0x02 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_WRITE_START 0x06 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_WRITE_MIDDLE 0x07 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_WRITE_END 0x08 /// Read block #define IPMI_SSIF_SMBUS_CMD_SINGLE_PART_READ 0x03 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_READ_START 0x03 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_READ_MIDDLE 0x09 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_READ_END 0x09 #define IPMI_SSIF_SMBUS_CMD_MULTI_PART_READ_RETRY 0x0A /// /// Definitions for Multi-Part Read Transactions /// Section 12.5 /// #define IPMI_SSIF_MULTI_PART_READ_START_SIZE 0x1E #define IPMI_SSIF_MULTI_PART_READ_START_PATTERN1 0x00 #define IPMI_SSIF_MULTI_PART_READ_START_PATTERN2 0x01 #define IPMI_SSIF_MULTI_PART_READ_END_PATTERN 0xFF /// /// IPMI SSIF maximum message size /// #define IPMI_SSIF_INPUT_MESSAGE_SIZE_MAX 0xFF #define IPMI_SSIF_OUTPUT_MESSAGE_SIZE_MAX 0xFF /// /// IPMI SMBus system interface maximum packet size in byte /// #define IPMI_SSIF_MAXIMUM_PACKET_SIZE_IN_BYTES 0x20 typedef enum { IpmiSsifPacketStart = 0, IpmiSsifPacketMiddle, IpmiSsifPacketEnd, IpmiSsifPacketSingle, IpmiSsifPacketMax } IPMI_SSIF_PACKET_ATTRIBUTE; #pragma pack (1) /// /// IPMI SSIF Interface Request Format /// Section 12.2 and 12.3 /// typedef struct { UINT8 NetFunc; UINT8 Command; } IPMI_SSIF_REQUEST_HEADER; /// /// IPMI SSIF Interface Response Format /// Section 12.4 and 12.5 /// typedef struct { UINT8 StartPattern[2]; UINT8 NetFunc; UINT8 Command; } IPMI_SSIF_RESPONSE_PACKET_START; typedef struct { UINT8 BlockNumber; } IPMI_SSIF_RESPONSE_PACKET_MIDDLE; typedef struct { UINT8 EndPattern; } IPMI_SSIF_RESPONSE_PACKET_END; typedef struct { UINT8 NetFunc; UINT8 Command; } IPMI_SSIF_RESPONSE_SINGLE_PACKET; #pragma pack () #endif /* IPMI_SSIF_H_ */