TT-System-Firmware APIs 19.15.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
tt_pldm_oem.c File Reference
#include <zephyr/device.h>
#include <zephyr/kernel.h>
#include <zephyr/shell/shell.h>
#include <zephyr/shell/shell_dummy.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/sys/util.h>
#include <zephyr/drivers/pmci/pldm/pldm_oem_handler.h>
#include <errno.h>
#include <libpldm/base.h>
#include <string.h>
#include "pldm_base.h"
Include dependency graph for tt_pldm_oem.c:

Data Structures

struct  tt_pldm_shell_context

Macros

#define DT_DRV_COMPAT   tenstorrent_pldm_oem_handler
#define TT_PLDM_OEM_CMD_SHELL_EXEC   0x01U
#define TT_PLDM_OEM_CMD_SHELL_GET_RESULT   0x02U
#define TT_PLDM_OEM_CMD_SHELL_CANCEL   0x03U
#define TT_PLDM_SHELL_WORKQ_STACK_SIZE   1024U
#define TT_PLDM_SHELL_MAX_CMD_LEN   96U
#define TT_PLDM_SHELL_MAX_OUTPUT_LEN   256U
#define TT_PLDM_SHELL_MAX_CHUNK_LEN   40U
#define TT_PLDM_SHELL_DEFINE(inst)

Enumerations

enum  tt_pldm_shell_state {
  TT_PLDM_SHELL_STATE_IDLE = 0 ,
  TT_PLDM_SHELL_STATE_QUEUED = 1 ,
  TT_PLDM_SHELL_STATE_RUNNING = 2 ,
  TT_PLDM_SHELL_STATE_DONE = 3 ,
  TT_PLDM_SHELL_STATE_FAILED = 4 ,
  TT_PLDM_SHELL_STATE_CANCELED = 5
}

Functions

static int tt_pldm_shell_encode_resp_header (const struct pldm_header_info *req_hdr, struct pldm_msg *resp_msg)
static void tt_pldm_shell_store_result (struct tt_pldm_shell_context *ctx, enum tt_pldm_shell_state state, int shell_rc, const char *output, size_t output_len)
static void tt_pldm_shell_execute_work (struct k_work *work)
static const ver32_t * tt_pldm_shell_get_versions (const struct device *dev, size_t *versions_size)
static const bitfield8_t * tt_pldm_shell_get_commands (const struct device *dev)
static int tt_pldm_shell_handle_exec (struct tt_pldm_shell_context *ctx, const struct pldm_header_info *req_hdr, const struct pldm_msg *req_msg, size_t req_payload_len, struct pldm_msg *resp_msg, size_t *resp_pldm_len)
static int tt_pldm_shell_handle_get_result (struct tt_pldm_shell_context *ctx, const struct pldm_header_info *req_hdr, const struct pldm_msg *req_msg, size_t req_payload_len, struct pldm_msg *resp_msg, size_t *resp_pldm_len)
static int tt_pldm_shell_handle_cancel (struct tt_pldm_shell_context *ctx, const struct pldm_header_info *req_hdr, const struct pldm_msg *req_msg, size_t req_payload_len, struct pldm_msg *resp_msg, size_t *resp_pldm_len)
static int tt_pldm_shell_build_response (const struct device *dev, const struct pldm_header_info *req_hdr, const struct pldm_msg *req_msg, size_t req_payload_len, struct pldm_msg *resp_msg, size_t *resp_pldm_len)
static DEVICE_API (pldm_oem_handler, tt_pldm_shell_oem_api)
static int tt_pldm_shell_driver_init (const struct device *dev)

Variables

static const ver32_t tt_pldm_oem_versions []
static const bitfield8_t tt_pldm_oem_commands [32]

Macro Definition Documentation

◆ DT_DRV_COMPAT

#define DT_DRV_COMPAT   tenstorrent_pldm_oem_handler

◆ TT_PLDM_OEM_CMD_SHELL_CANCEL

#define TT_PLDM_OEM_CMD_SHELL_CANCEL   0x03U

◆ TT_PLDM_OEM_CMD_SHELL_EXEC

#define TT_PLDM_OEM_CMD_SHELL_EXEC   0x01U

◆ TT_PLDM_OEM_CMD_SHELL_GET_RESULT

#define TT_PLDM_OEM_CMD_SHELL_GET_RESULT   0x02U

◆ TT_PLDM_SHELL_DEFINE

#define TT_PLDM_SHELL_DEFINE ( inst)
Value:
static struct tt_pldm_shell_context tt_pldm_shell_ctx_##inst; \
DEVICE_DT_INST_DEFINE(inst, tt_pldm_shell_driver_init, NULL, &tt_pldm_shell_ctx_##inst, \
NULL, POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY, \
&tt_pldm_shell_oem_api)
#define NULL
Definition avs.c:45
Definition tt_pldm_oem.c:41
static int tt_pldm_shell_driver_init(const struct device *dev)
Definition tt_pldm_oem.c:378

◆ TT_PLDM_SHELL_MAX_CHUNK_LEN

#define TT_PLDM_SHELL_MAX_CHUNK_LEN   40U

◆ TT_PLDM_SHELL_MAX_CMD_LEN

#define TT_PLDM_SHELL_MAX_CMD_LEN   96U

◆ TT_PLDM_SHELL_MAX_OUTPUT_LEN

#define TT_PLDM_SHELL_MAX_OUTPUT_LEN   256U

◆ TT_PLDM_SHELL_WORKQ_STACK_SIZE

#define TT_PLDM_SHELL_WORKQ_STACK_SIZE   1024U

Enumeration Type Documentation

◆ tt_pldm_shell_state

Enumerator
TT_PLDM_SHELL_STATE_IDLE 
TT_PLDM_SHELL_STATE_QUEUED 
TT_PLDM_SHELL_STATE_RUNNING 
TT_PLDM_SHELL_STATE_DONE 
TT_PLDM_SHELL_STATE_FAILED 
TT_PLDM_SHELL_STATE_CANCELED 

Function Documentation

◆ DEVICE_API()

DEVICE_API ( pldm_oem_handler ,
tt_pldm_shell_oem_api  )
static

◆ tt_pldm_shell_build_response()

int tt_pldm_shell_build_response ( const struct device * dev,
const struct pldm_header_info * req_hdr,
const struct pldm_msg * req_msg,
size_t req_payload_len,
struct pldm_msg * resp_msg,
size_t * resp_pldm_len )
static

◆ tt_pldm_shell_driver_init()

int tt_pldm_shell_driver_init ( const struct device * dev)
static

◆ tt_pldm_shell_encode_resp_header()

int tt_pldm_shell_encode_resp_header ( const struct pldm_header_info * req_hdr,
struct pldm_msg * resp_msg )
static

◆ tt_pldm_shell_execute_work()

void tt_pldm_shell_execute_work ( struct k_work * work)
static

◆ tt_pldm_shell_get_commands()

const bitfield8_t * tt_pldm_shell_get_commands ( const struct device * dev)
static

◆ tt_pldm_shell_get_versions()

const ver32_t * tt_pldm_shell_get_versions ( const struct device * dev,
size_t * versions_size )
static

◆ tt_pldm_shell_handle_cancel()

int tt_pldm_shell_handle_cancel ( struct tt_pldm_shell_context * ctx,
const struct pldm_header_info * req_hdr,
const struct pldm_msg * req_msg,
size_t req_payload_len,
struct pldm_msg * resp_msg,
size_t * resp_pldm_len )
static

◆ tt_pldm_shell_handle_exec()

int tt_pldm_shell_handle_exec ( struct tt_pldm_shell_context * ctx,
const struct pldm_header_info * req_hdr,
const struct pldm_msg * req_msg,
size_t req_payload_len,
struct pldm_msg * resp_msg,
size_t * resp_pldm_len )
static

◆ tt_pldm_shell_handle_get_result()

int tt_pldm_shell_handle_get_result ( struct tt_pldm_shell_context * ctx,
const struct pldm_header_info * req_hdr,
const struct pldm_msg * req_msg,
size_t req_payload_len,
struct pldm_msg * resp_msg,
size_t * resp_pldm_len )
static

◆ tt_pldm_shell_store_result()

void tt_pldm_shell_store_result ( struct tt_pldm_shell_context * ctx,
enum tt_pldm_shell_state state,
int shell_rc,
const char * output,
size_t output_len )
static

Variable Documentation

◆ tt_pldm_oem_commands

const bitfield8_t tt_pldm_oem_commands[32]
static
Initial value:
= {
[ 0x01U / 8] = {.byte = BIT( 0x01U % 8) |
BIT( 0x02U % 8) |
BIT( 0x03U % 8)},
}
#define BIT(n)

◆ tt_pldm_oem_versions

const ver32_t tt_pldm_oem_versions[]
static
Initial value:
= {
{.alpha = 0x00, .update = 0xf0, .minor = 0xf0, .major = 0xf1},
{.alpha = 0x2b, .update = 0x76, .minor = 0x8e, .major = 0x9a},
}