TT-System-Firmware APIs 19.13.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
smbus_target.c File Reference
#include "reg.h"
#include "status_reg.h"
#include "dw_apb_i2c.h"
#include "cm2dm_msg.h"
#include "throttler.h"
#include "asic_state.h"
#include "smbus_target.h"
#include "fan_ctrl.h"
#include <stdint.h>
#include <tenstorrent/post_code.h>
#include <tenstorrent/sys_init_defines.h>
#include <tenstorrent/tt_smbus_regs.h>
#include <tenstorrent/smbus_target.h>
#include <zephyr/kernel.h>
#include <zephyr/init.h>
#include <zephyr/drivers/i2c.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/sys/crc.h>
#include <zephyr/sys/util.h>
Include dependency graph for smbus_target.c:

Macros

#define CM_I2C_DM_TARGET_INST   0

Functions

static int32_t Dm2CmSendFanSpeedHandler (const uint8_t *data, uint8_t size)
static int32_t ReadByteTest (uint8_t *data, uint8_t *size)
static int32_t WriteByteTest (const uint8_t *data, uint8_t size)
static int32_t ReadWordTest (uint8_t *data, uint8_t *size)
static int32_t WriteWordTest (const uint8_t *data, uint8_t size)
static int32_t BlockReadTest (uint8_t *data, uint8_t *size)
int32_t BlockWriteTest (const uint8_t *data, uint8_t size)
int32_t UpdateArcStateHandler (const uint8_t *data, uint8_t size)
static int InitSmbusTarget (void)
 SYS_INIT_APP (InitSmbusTarget)

Variables

static const struct devicesmbus_target = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(smbus_target0))
static const struct smbus_cmd_registration smbus_cmds []

Macro Definition Documentation

◆ CM_I2C_DM_TARGET_INST

#define CM_I2C_DM_TARGET_INST   0

Function Documentation

◆ BlockReadTest()

int32_t BlockReadTest ( uint8_t * data,
uint8_t * size )
static

◆ BlockWriteTest()

int32_t BlockWriteTest ( const uint8_t * data,
uint8_t size )

◆ Dm2CmSendFanSpeedHandler()

int32_t Dm2CmSendFanSpeedHandler ( const uint8_t * data,
uint8_t size )
static

◆ InitSmbusTarget()

int InitSmbusTarget ( void )
static

◆ ReadByteTest()

int32_t ReadByteTest ( uint8_t * data,
uint8_t * size )
static

◆ ReadWordTest()

int32_t ReadWordTest ( uint8_t * data,
uint8_t * size )
static

◆ SYS_INIT_APP()

SYS_INIT_APP ( InitSmbusTarget )

◆ UpdateArcStateHandler()

int32_t UpdateArcStateHandler ( const uint8_t * data,
uint8_t size )

◆ WriteByteTest()

int32_t WriteByteTest ( const uint8_t * data,
uint8_t size )
static

◆ WriteWordTest()

int32_t WriteWordTest ( const uint8_t * data,
uint8_t size )
static

Variable Documentation

◆ smbus_cmds

const struct smbus_cmd_registration smbus_cmds[]
static
Initial value:
= {
{ .cmd = (CMFW_SMBUS_REQ), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_BLOCK, .rcv_handler = NULL, .send_handler = (Cm2DmMsgReqSmbusHandler) }, },
{ .cmd = (CMFW_SMBUS_ACK), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Cm2DmMsgAckSmbusHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_UPDATE_ARC_STATE), .def = {.pec = (0U), .trans_type = SMBUS_TRANS_WRITE_BLOCK, .rcv_handler = (UpdateArcStateHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_DM_STATIC_INFO), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_BLOCK, .rcv_handler = (Dm2CmSendDataHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_PING), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmPingHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_FAN_SPEED), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmSendFanSpeedHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_FAN_RPM), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmSendFanRPMHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TELEMETRY_READ), .def = {.pec = (0U), .trans_type = (SMBUS_TRANS_READ_WRITE_BLOCK), .rcv_handler = (SMBusTelemRegHandler), .send_handler = (SMBusTelemDataHandler)}, } ,
{ .cmd = (CMFW_SMBUS_TELEMETRY_WRITE), .def = {.pec = (0U), .trans_type = (SMBUS_TRANS_READ_WRITE_BLOCK), .rcv_handler = (Dm2CmWriteTelemetry), .send_handler = (Dm2CmReadControlData)}, } ,
{ .cmd = (CMFW_SMBUS_POWER_LIMIT), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmSetBoardPowerLimit), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_POWER_INSTANT), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmSendPowerHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TELEMETRY_READ_CRC), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_BYTE, .rcv_handler = (SMBusTelemRegHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TELEMETRY_READ_CRC_DATA), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_BLOCK, .rcv_handler = NULL, .send_handler = (SMBusTelemDataHandler) }, },
{ .cmd = (CMFW_SMBUS_THERM_TRIP_COUNT), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (Dm2CmSendThermTripCountHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_DMC_LOG), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_BLOCK, .rcv_handler = (Dm2CmDMCLogHandler), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TEST_READ), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_BYTE, .rcv_handler = NULL, .send_handler = (ReadByteTest) }, },
{ .cmd = (CMFW_SMBUS_TEST_WRITE), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_BYTE, .rcv_handler = (WriteByteTest), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TEST_READ_WORD), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_WORD, .rcv_handler = NULL, .send_handler = (ReadWordTest) }, },
{ .cmd = (CMFW_SMBUS_TEST_WRITE_WORD), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_WORD, .rcv_handler = (WriteWordTest), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TEST_READ_BLOCK), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_BLOCK, .rcv_handler = NULL, .send_handler = (BlockReadTest) }, },
{ .cmd = (CMFW_SMBUS_TEST_WRITE_BLOCK), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_WRITE_BLOCK, .rcv_handler = (BlockWriteTest), .send_handler = NULL }, },
{ .cmd = (CMFW_SMBUS_TEST_WRITE_BLOCK_READ_BLOCK), .def = {.pec = (1U), .trans_type = (SMBUS_TRANS_READ_WRITE_BLOCK), .rcv_handler = (BlockWriteTest), .send_handler = (BlockReadTest)}, } ,
{ .cmd = (CMFW_SMBUS_PING_V2), .def = {.pec = (1U), .trans_type = SMBUS_TRANS_READ_WORD, .rcv_handler = NULL, .send_handler = (Dm2CmPingV2) }, },
}
#define NULL
Definition avs.c:45
int32_t SMBusTelemDataHandler(uint8_t *data, uint8_t *size)
Definition cm2dm_msg.c:387
int32_t Dm2CmSendThermTripCountHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:400
int32_t Dm2CmPingHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:316
int32_t Cm2DmMsgReqSmbusHandler(uint8_t *data, uint8_t *size)
Definition cm2dm_msg.c:73
int32_t SMBusTelemRegHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:376
int32_t Dm2CmReadControlData(uint8_t *data, uint8_t *size)
Definition cm2dm_msg.c:421
int32_t Dm2CmWriteTelemetry(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:412
int32_t Dm2CmSendDataHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:292
int32_t Dm2CmDMCLogHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:456
int32_t Dm2CmSendPowerHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:341
int32_t Cm2DmMsgAckSmbusHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:103
int32_t Dm2CmPingV2(uint8_t *data, uint8_t *size)
Definition cm2dm_msg.c:331
int32_t Dm2CmSendFanRPMHandler(const uint8_t *data, uint8_t size)
Definition cm2dm_msg.c:361
@ SMBUS_TRANS_READ_BYTE
Definition smbus_target.h:18
@ SMBUS_TRANS_READ_WRITE_BLOCK
Definition smbus_target.h:23
@ SMBUS_TRANS_WRITE_BYTE
Definition smbus_target.h:17
@ SMBUS_TRANS_WRITE_BLOCK
Definition smbus_target.h:21
@ SMBUS_TRANS_WRITE_WORD
Definition smbus_target.h:19
@ SMBUS_TRANS_READ_BLOCK
Definition smbus_target.h:22
@ SMBUS_TRANS_READ_WORD
Definition smbus_target.h:20
static int32_t ReadByteTest(uint8_t *data, uint8_t *size)
Definition smbus_target.c:52
static int32_t Dm2CmSendFanSpeedHandler(const uint8_t *data, uint8_t size)
Definition smbus_target.c:35
static int32_t ReadWordTest(uint8_t *data, uint8_t *size)
Definition smbus_target.c:69
static int32_t WriteByteTest(const uint8_t *data, uint8_t size)
Definition smbus_target.c:60
static int32_t BlockReadTest(uint8_t *data, uint8_t *size)
Definition smbus_target.c:90
static int32_t WriteWordTest(const uint8_t *data, uint8_t size)
Definition smbus_target.c:81
int32_t UpdateArcStateHandler(const uint8_t *data, uint8_t size)
Definition smbus_target.c:111
int32_t BlockWriteTest(const uint8_t *data, uint8_t size)
Definition smbus_target.c:99
int32_t Dm2CmSetBoardPowerLimit(const uint8_t *data, uint8_t size)
Definition throttler.c:506
@ CMFW_SMBUS_FAN_SPEED
Definition tt_smbus_regs.h:35
@ CMFW_SMBUS_TEST_READ_WORD
Definition tt_smbus_regs.h:62
@ CMFW_SMBUS_ACK
Definition tt_smbus_regs.h:26
@ CMFW_SMBUS_FAN_RPM
Definition tt_smbus_regs.h:39
@ CMFW_SMBUS_DM_STATIC_INFO
Definition tt_smbus_regs.h:28
@ CMFW_SMBUS_TELEMETRY_READ_CRC
Definition tt_smbus_regs.h:46
@ CMFW_SMBUS_TEST_WRITE_WORD
Definition tt_smbus_regs.h:64
@ CMFW_SMBUS_TELEMETRY_READ
Definition tt_smbus_regs.h:18
@ CMFW_SMBUS_THERM_TRIP_COUNT
Definition tt_smbus_regs.h:51
@ CMFW_SMBUS_PING_V2
Definition tt_smbus_regs.h:56
@ CMFW_SMBUS_REQ
Definition tt_smbus_regs.h:24
@ CMFW_SMBUS_UPDATE_ARC_STATE
Definition tt_smbus_regs.h:22
@ CMFW_SMBUS_POWER_INSTANT
Definition tt_smbus_regs.h:43
@ CMFW_SMBUS_TEST_WRITE_BLOCK_READ_BLOCK
Definition tt_smbus_regs.h:70
@ CMFW_SMBUS_TELEMETRY_WRITE
Definition tt_smbus_regs.h:20
@ CMFW_SMBUS_TEST_WRITE
Definition tt_smbus_regs.h:60
@ CMFW_SMBUS_DMC_LOG
Definition tt_smbus_regs.h:53
@ CMFW_SMBUS_TEST_READ
Definition tt_smbus_regs.h:58
@ CMFW_SMBUS_POWER_LIMIT
Definition tt_smbus_regs.h:41
@ CMFW_SMBUS_PING
Definition tt_smbus_regs.h:30
@ CMFW_SMBUS_TELEMETRY_READ_CRC_DATA
Definition tt_smbus_regs.h:49
@ CMFW_SMBUS_TEST_WRITE_BLOCK
Definition tt_smbus_regs.h:68
@ CMFW_SMBUS_TEST_READ_BLOCK
Definition tt_smbus_regs.h:66

◆ smbus_target

const struct device* smbus_target = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(smbus_target0))
static