Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
peci.h File Reference

Public Platform Environment Control Interface driver APIs. More...

#include <errno.h>
#include <zephyr/types.h>
#include <stddef.h>
#include <zephyr/device.h>
#include <zephyr/syscalls/peci.h>

Go to the source code of this file.

Data Structures

struct  peci_buf
 PECI buffer structure. More...
 
struct  peci_msg
 PECI transaction packet format. More...
 

Macros

PECI read/write supported responses.
#define PECI_CC_RSP_SUCCESS   (0x40U)
 
#define PECI_CC_RSP_TIMEOUT   (0x80U)
 
#define PECI_CC_OUT_OF_RESOURCES_TIMEOUT   (0x81U)
 
#define PECI_CC_RESOURCES_LOWPWR_TIMEOUT   (0x82U)
 
#define PECI_CC_ILLEGAL_REQUEST   (0x90U)
 
Ping command format.
#define PECI_PING_WR_LEN   (0U)
 
#define PECI_PING_RD_LEN   (0U)
 
#define PECI_PING_LEN   (3U)
 
GetDIB command format.
#define PECI_GET_DIB_WR_LEN   (1U)
 
#define PECI_GET_DIB_RD_LEN   (8U)
 
#define PECI_GET_DIB_CMD_LEN   (4U)
 
#define PECI_GET_DIB_DEVINFO   (0U)
 
#define PECI_GET_DIB_REVNUM   (1U)
 
#define PECI_GET_DIB_DOMAIN_BIT_MASK   (0x4U)
 
#define PECI_GET_DIB_MAJOR_REV_MASK   0xF0
 
#define PECI_GET_DIB_MINOR_REV_MASK   0x0F
 
GetTemp command format.
#define PECI_GET_TEMP_WR_LEN   (1U)
 
#define PECI_GET_TEMP_RD_LEN   (2U)
 
#define PECI_GET_TEMP_CMD_LEN   (4U)
 
#define PECI_GET_TEMP_LSB   (0U)
 
#define PECI_GET_TEMP_MSB   (1U)
 
#define PECI_GET_TEMP_ERR_MSB   (0x80U)
 
#define PECI_GET_TEMP_ERR_LSB_GENERAL   (0x0U)
 
#define PECI_GET_TEMP_ERR_LSB_RES   (0x1U)
 
#define PECI_GET_TEMP_ERR_LSB_TEMP_LO   (0x2U)
 
#define PECI_GET_TEMP_ERR_LSB_TEMP_HI   (0x3U)
 
RdPkgConfig command format.
#define PECI_RD_PKG_WR_LEN   (5U)
 
#define PECI_RD_PKG_LEN_BYTE   (2U)
 
#define PECI_RD_PKG_LEN_WORD   (3U)
 
#define PECI_RD_PKG_LEN_DWORD   (5U)
 
#define PECI_RD_PKG_CMD_LEN   (8U)
 
WrPkgConfig command format.
#define PECI_WR_PKG_RD_LEN   (1U)
 
#define PECI_WR_PKG_LEN_BYTE   (7U)
 
#define PECI_WR_PKG_LEN_WORD   (8U)
 
#define PECI_WR_PKG_LEN_DWORD   (10U)
 
#define PECI_WR_PKG_CMD_LEN   (9U)
 
RdIAMSR command format.
#define PECI_RD_IAMSR_WR_LEN   (5U)
 
#define PECI_RD_IAMSR_LEN_BYTE   (2U)
 
#define PECI_RD_IAMSR_LEN_WORD   (3U)
 
#define PECI_RD_IAMSR_LEN_DWORD   (5U)
 
#define PECI_RD_IAMSR_LEN_QWORD   (9U)
 
#define PECI_RD_IAMSR_CMD_LEN   (8U)
 
WrIAMSR command format.
#define PECI_WR_IAMSR_RD_LEN   (1U)
 
#define PECI_WR_IAMSR_LEN_BYTE   (7U)
 
#define PECI_WR_IAMSR_LEN_WORD   (8U)
 
#define PECI_WR_IAMSR_LEN_DWORD   (10U)
 
#define PECI_WR_IAMSR_LEN_QWORD   (14U)
 
#define PECI_WR_IAMSR_CMD_LEN   (9U)
 
RdPCIConfig command format.
#define PECI_RD_PCICFG_WR_LEN   (6U)
 
#define PECI_RD_PCICFG_LEN_BYTE   (2U)
 
#define PECI_RD_PCICFG_LEN_WORD   (3U)
 
#define PECI_RD_PCICFG_LEN_DWORD   (5U)
 
#define PECI_RD_PCICFG_CMD_LEN   (9U)
 
WrPCIConfig command format.
#define PECI_WR_PCICFG_RD_LEN   (1U)
 
#define PECI_WR_PCICFG_LEN_BYTE   (8U)
 
#define PECI_WR_PCICFG_LEN_WORD   (9U)
 
#define PECI_WR_PCICFG_LEN_DWORD   (11U)
 
#define PECI_WR_PCICFG_CMD_LEN   (10U)
 
RdPCIConfigLocal command format.
#define PECI_RD_PCICFGL_WR_LEN   (5U)
 
#define PECI_RD_PCICFGL_RD_LEN_BYTE   (2U)
 
#define PECI_RD_PCICFGL_RD_LEN_WORD   (3U)
 
#define PECI_RD_PCICFGL_RD_LEN_DWORD   (5U)
 
#define PECI_RD_PCICFGL_CMD_LEN   (8U)
 
WrPCIConfigLocal command format.
#define PECI_WR_PCICFGL_RD_LEN   (1U)
 
#define PECI_WR_PCICFGL_WR_LEN_BYTE   (7U)
 
#define PECI_WR_PCICFGL_WR_LEN_WORD   (8U)
 
#define PECI_WR_PCICFGL_WR_LEN_DWORD   (10U)
 
#define PECI_WR_PCICFGL_CMD_LEN   (9U)
 

Enumerations

enum  peci_error_code { PECI_GENERAL_SENSOR_ERROR = 0x8000 , PECI_UNDERFLOW_SENSOR_ERROR = 0x8002 , PECI_OVERFLOW_SENSOR_ERROR = 0x8003 }
 PECI error codes. More...
 
enum  peci_command_code {
  PECI_CMD_PING = 0x00 , PECI_CMD_GET_TEMP0 = 0x01 , PECI_CMD_GET_TEMP1 = 0x02 , PECI_CMD_RD_PCI_CFG0 = 0x61 ,
  PECI_CMD_RD_PCI_CFG1 = 0x62 , PECI_CMD_WR_PCI_CFG0 = 0x65 , PECI_CMD_WR_PCI_CFG1 = 0x66 , PECI_CMD_RD_PKG_CFG0 = 0xA1 ,
  PECI_CMD_RD_PKG_CFG1 = 0xA , PECI_CMD_WR_PKG_CFG0 = 0xA5 , PECI_CMD_WR_PKG_CFG1 = 0xA6 , PECI_CMD_RD_IAMSR0 = 0xB1 ,
  PECI_CMD_RD_IAMSR1 = 0xB2 , PECI_CMD_WR_IAMSR0 = 0xB5 , PECI_CMD_WR_IAMSR1 = 0xB6 , PECI_CMD_RD_PCI_CFG_LOCAL0 = 0xE1 ,
  PECI_CMD_RD_PCI_CFG_LOCAL1 = 0xE2 , PECI_CMD_WR_PCI_CFG_LOCAL0 = 0xE5 , PECI_CMD_WR_PCI_CFG_LOCAL1 = 0xE6 , PECI_CMD_GET_DIB = 0xF7
}
 PECI commands. More...
 

Functions

int peci_config (const struct device *dev, uint32_t bitrate)
 Configures the PECI interface.
 
int peci_enable (const struct device *dev)
 Enable PECI interface.
 
int peci_disable (const struct device *dev)
 Disable PECI interface.
 
int peci_transfer (const struct device *dev, struct peci_msg *msg)
 Performs a PECI transaction.
 

Detailed Description

Public Platform Environment Control Interface driver APIs.