PECI¶
Overview¶
The Platform Environment Control Interface, abbreviated as PECI, is a thermal management standard introduced in 2006 with the Intel Core 2 Duo Microprocessors. The PECI interface allows external devices to read processor temperature, perform processor manageability functions, and manage processor interface tuning and diagnostics. The PECI bus driver APIs enable the interaction between Embedded Microcontrollers and CPUs.
Configuration Options¶
Related configuration options:
API Reference¶
- group peci_interface
PECI Interface 3.0.
Defines
-
PECI_CC_RSP_SUCCESS¶
PECI read/write supported responses
-
PECI_CC_RSP_TIMEOUT¶
-
PECI_CC_OUT_OF_RESOURCES_TIMEOUT¶
-
PECI_CC_RESOURCES_LOWPWR_TIMEOUT¶
-
PECI_CC_ILLEGAL_REQUEST¶
-
PECI_PING_WR_LEN¶
Ping command format.
-
PECI_PING_RD_LEN¶
-
PECI_PING_LEN¶
-
PECI_GET_DIB_WR_LEN¶
GetDIB command format.
-
PECI_GET_DIB_RD_LEN¶
-
PECI_GET_DIB_CMD_LEN¶
-
PECI_GET_DIB_DEVINFO¶
-
PECI_GET_DIB_REVNUM¶
-
PECI_GET_DIB_DOMAIN_BIT_MASK¶
-
PECI_GET_DIB_MAJOR_REV_MASK¶
-
PECI_GET_DIB_MINOR_REV_MASK¶
-
PECI_GET_TEMP_WR_LEN¶
GetTemp command format.
-
PECI_GET_TEMP_RD_LEN¶
-
PECI_GET_TEMP_CMD_LEN¶
-
PECI_GET_TEMP_LSB¶
-
PECI_GET_TEMP_MSB¶
-
PECI_GET_TEMP_ERR_MSB¶
-
PECI_GET_TEMP_ERR_LSB_GENERAL¶
-
PECI_GET_TEMP_ERR_LSB_RES¶
-
PECI_GET_TEMP_ERR_LSB_TEMP_LO¶
-
PECI_GET_TEMP_ERR_LSB_TEMP_HI¶
-
PECI_RD_PKG_WR_LEN¶
RdPkgConfig command format.
-
PECI_RD_PKG_LEN_BYTE¶
-
PECI_RD_PKG_LEN_WORD¶
-
PECI_RD_PKG_LEN_DWORD¶
-
PECI_RD_PKG_CMD_LEN¶
-
PECI_WR_PKG_RD_LEN¶
WrPkgConfig command format
-
PECI_WR_PKG_LEN_BYTE¶
-
PECI_WR_PKG_LEN_WORD¶
-
PECI_WR_PKG_LEN_DWORD¶
-
PECI_WR_PKG_CMD_LEN¶
-
PECI_RD_IAMSR_WR_LEN¶
RdIAMSR command format
-
PECI_RD_IAMSR_LEN_BYTE¶
-
PECI_RD_IAMSR_LEN_WORD¶
-
PECI_RD_IAMSR_LEN_DWORD¶
-
PECI_RD_IAMSR_LEN_QWORD¶
-
PECI_RD_IAMSR_CMD_LEN¶
-
PECI_WR_IAMSR_RD_LEN¶
WrIAMSR command format
-
PECI_WR_IAMSR_LEN_BYTE¶
-
PECI_WR_IAMSR_LEN_WORD¶
-
PECI_WR_IAMSR_LEN_DWORD¶
-
PECI_WR_IAMSR_LEN_QWORD¶
-
PECI_WR_IAMSR_CMD_LEN¶
-
PECI_RD_PCICFG_WR_LEN¶
RdPCIConfig command format
-
PECI_RD_PCICFG_LEN_BYTE¶
-
PECI_RD_PCICFG_LEN_WORD¶
-
PECI_RD_PCICFG_LEN_DWORD¶
-
PECI_RD_PCICFG_CMD_LEN¶
-
PECI_WR_PCICFG_RD_LEN¶
WrPCIConfig command format
-
PECI_WR_PCICFG_LEN_BYTE¶
-
PECI_WR_PCICFG_LEN_WORD¶
-
PECI_WR_PCICFG_LEN_DWORD¶
-
PECI_WR_PCICFG_CMD_LEN¶
-
PECI_RD_PCICFGL_WR_LEN¶
RdPCIConfigLocal command format
-
PECI_RD_PCICFGL_RD_LEN_BYTE¶
-
PECI_RD_PCICFGL_RD_LEN_WORD¶
-
PECI_RD_PCICFGL_RD_LEN_DWORD¶
-
PECI_RD_PCICFGL_CMD_LEN¶
-
PECI_WR_PCICFGL_RD_LEN¶
WrPCIConfigLocal command format
-
PECI_WR_PCICFGL_WR_LEN_BYTE¶
-
PECI_WR_PCICFGL_WR_LEN_WORD¶
-
PECI_WR_PCICFGL_WR_LEN_DWORD¶
-
PECI_WR_PCICFGL_CMD_LEN¶
Enums
-
enum peci_error_code¶
PECI error codes.
Values:
-
enumerator PECI_GENERAL_SENSOR_ERROR = 0x8000¶
-
enumerator PECI_UNDERFLOW_SENSOR_ERROR = 0x8002¶
-
enumerator PECI_OVERFLOW_SENSOR_ERROR = 0x8003¶
-
enumerator PECI_GENERAL_SENSOR_ERROR = 0x8000¶
-
enum peci_command_code¶
PECI commands.
Values:
-
enumerator PECI_CMD_PING = 0x00¶
-
enumerator PECI_CMD_GET_TEMP0 = 0x01¶
-
enumerator PECI_CMD_GET_TEMP1 = 0x02¶
-
enumerator PECI_CMD_RD_PCI_CFG0 = 0x61¶
-
enumerator PECI_CMD_RD_PCI_CFG1 = 0x62¶
-
enumerator PECI_CMD_WR_PCI_CFG0 = 0x65¶
-
enumerator PECI_CMD_WR_PCI_CFG1 = 0x66¶
-
enumerator PECI_CMD_RD_PKG_CFG0 = 0xA1¶
-
enumerator PECI_CMD_RD_PKG_CFG1 = 0xA¶
-
enumerator PECI_CMD_WR_PKG_CFG0 = 0xA5¶
-
enumerator PECI_CMD_WR_PKG_CFG1 = 0xA6¶
-
enumerator PECI_CMD_RD_IAMSR0 = 0xB1¶
-
enumerator PECI_CMD_RD_IAMSR1 = 0xB2¶
-
enumerator PECI_CMD_WR_IAMSR0 = 0xB5¶
-
enumerator PECI_CMD_WR_IAMSR1 = 0xB6¶
-
enumerator PECI_CMD_RD_PCI_CFG_LOCAL0 = 0xE1¶
-
enumerator PECI_CMD_RD_PCI_CFG_LOCAL1 = 0xE2¶
-
enumerator PECI_CMD_WR_PCI_CFG_LOCAL0 = 0xE5¶
-
enumerator PECI_CMD_WR_PCI_CFG_LOCAL1 = 0xE6¶
-
enumerator PECI_CMD_GET_DIB = 0xF7¶
-
enumerator PECI_CMD_PING = 0x00¶
Functions
-
int peci_config(const struct device *dev, uint32_t bitrate)¶
Configures the PECI interface.
- Parameters:
dev – Pointer to the device structure for the driver instance.
bitrate – the selected expressed in Kbps. command or when an event needs to be sent to the client application.
- Return values:
0 – If successful.
Negative – errno code if failure.
-
int peci_enable(const struct device *dev)¶
Enable PECI interface.
- Parameters:
dev – Pointer to the device structure for the driver instance.
- Return values:
0 – If successful.
Negative – errno code if failure.
-
struct peci_buf¶
- #include <peci.h>
PECI buffer structure.
Note: Frame check sequence byte is added into rx buffer, need to allocate an additional byte for this in rx buffer.
- Param buf:
is a valid pointer on a data buffer, or NULL otherwise.
- Param len:
is the length of the data buffer expected to received without considering the frame check sequence byte.
-
struct peci_msg¶
- #include <peci.h>
PECI transaction packet format.
-
PECI_CC_RSP_SUCCESS¶