TT-System-Firmware APIs 19.13.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
gddr.c File Reference
Include dependency graph for gddr.c:

Macros

#define MRISC_FW_NOC2AXI_PORT   0
#define MRISC_SETUP_TLB   13
#define MRISC_L1_ADDR   (1ULL << 37)
#define MRISC_REG_ADDR   (1ULL << 40)
#define MRISC_FW_CFG_OFFSET   0x3C00
#define ARC_NOC0_X   8
#define ARC_NOC0_Y   0
#define MRISC_L1_SIZE   (128 * 1024)
#define MRISC_FW_TAG   "memfw"
#define MRISC_FW_CFG_TAG   "memfwcfg"

Functions

uint8_t get_gddr_mrisc_noc2axi_port (uint8_t gddr_inst)
 Get the noc2axi port MRISC FW is loaded on for a GDDR instance.
 LOG_MODULE_REGISTER (gddr, CONFIG_TT_APP_LOG_LEVEL)
struct gddr_bist_info get_gddr_bist_info (void)
 Get GDDR BIST status.
static uint32_t GetGddrSpeedFromCfg (uint8_t *fw_cfg_image)
static void GetGddrMriscNocCoords (uint8_t gddr_inst, uint8_t noc_id, uint8_t *x, uint8_t *y)
static volatile void * SetupMriscL1Tlb (uint8_t gddr_inst)
static uint32_t MriscL1Read32 (uint8_t gddr_inst, uint32_t addr)
static void MriscL1Write32 (uint8_t gddr_inst, uint32_t addr, uint32_t val)
static uint32_t MriscRegRead32 (uint8_t gddr_inst, uint32_t addr)
static void MriscRegWrite32 (uint8_t gddr_inst, uint32_t addr, uint32_t val)
int read_gddr_telemetry_table (uint8_t gddr_inst, gddr_telemetry_table_t *gddr_telemetry)
static void ReleaseMriscReset (uint8_t gddr_inst)
static void SetAxiEnable (uint8_t gddr_inst, uint8_t noc2axi_port, bool axi_enable)
static int LoadMriscFw (uint8_t gddr_inst, uint8_t *buf, size_t buf_size, size_t spi_address, size_t image_size)
static int LoadMriscFwCfg (uint8_t gddr_inst, uint8_t *buf, size_t buf_size, size_t spi_address, size_t image_size)
static uint32_t GetDramMask (void)
static int read_gddr_temperature (uint8_t gddr_inst, struct gddr_inst_temp *temp)
int get_gddr_temps (struct gddr_temps *temps)
 Read the DRAM die temperatures for all enabled GDDR instances.
static int check_mrisc_busy (uint8_t gddr_inst)
static int wait_mrisc_not_busy (uint8_t gddr_inst, k_timepoint_t timeout, const char *op_desc)
static int StartHwMemtest (uint8_t gddr_inst, uint32_t addr_bits, uint32_t start_addr, uint32_t mask)
static int CheckHwMemtestResult (uint8_t gddr_inst, k_timepoint_t timeout)
static void wipe_l1 (void)
static int InitMrisc (void)
 SYS_INIT_APP (InitMrisc)
static int CheckGddrTraining (uint8_t gddr_inst, k_timepoint_t timeout)
static int CheckGddrHwTest (void)
static int gddr_training (void)
static int32_t mrisc_message (uint32_t op_code, uint32_t instance_mask, uint32_t timeout_ms, const char *op_desc)
int32_t set_mrisc_power_setting (bool on)
 Sets the MRISC power setting for all active MRISCs.
 SYS_INIT_APP (gddr_training)
static void assert_mrisc_soft_reset (uint8_t gddr_inst)
static uint8_t toggle_gddr_reset (const union request *req, struct response *rsp)
 Toggle GDDR MRISC reset, re-train, and re-run BIST.
 REGISTER_MESSAGE (TT_SMC_MSG_TOGGLE_GDDR_RESET, toggle_gddr_reset)

Variables

static const struct device *const pll_dev_3 = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(pll3))
static const struct deviceflash = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(spi_flash))
static const struct devicedma_noc = DEVICE_DT_GET(DT_NODELABEL(dma1))
static const struct device *const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))
static struct gddr_bist_info gddr_bist
static uint8_t gddr_telemetry_version_ok

Macro Definition Documentation

◆ ARC_NOC0_X

#define ARC_NOC0_X   8

◆ ARC_NOC0_Y

#define ARC_NOC0_Y   0

◆ MRISC_FW_CFG_OFFSET

#define MRISC_FW_CFG_OFFSET   0x3C00

◆ MRISC_FW_CFG_TAG

#define MRISC_FW_CFG_TAG   "memfwcfg"

◆ MRISC_FW_NOC2AXI_PORT

#define MRISC_FW_NOC2AXI_PORT   0

◆ MRISC_FW_TAG

#define MRISC_FW_TAG   "memfw"

◆ MRISC_L1_ADDR

#define MRISC_L1_ADDR   (1ULL << 37)

◆ MRISC_L1_SIZE

#define MRISC_L1_SIZE   (128 * 1024)

◆ MRISC_REG_ADDR

#define MRISC_REG_ADDR   (1ULL << 40)

◆ MRISC_SETUP_TLB

#define MRISC_SETUP_TLB   13

Function Documentation

◆ assert_mrisc_soft_reset()

void assert_mrisc_soft_reset ( uint8_t gddr_inst)
static

◆ check_mrisc_busy()

int check_mrisc_busy ( uint8_t gddr_inst)
static

◆ CheckGddrHwTest()

int CheckGddrHwTest ( void )
static

◆ CheckGddrTraining()

int CheckGddrTraining ( uint8_t gddr_inst,
k_timepoint_t timeout )
static

◆ CheckHwMemtestResult()

int CheckHwMemtestResult ( uint8_t gddr_inst,
k_timepoint_t timeout )
static

◆ gddr_training()

int gddr_training ( void )
static

◆ get_gddr_bist_info()

struct gddr_bist_info get_gddr_bist_info ( void )

Get GDDR BIST status.

Returns
Per-instance bitmasks indicating which instances have completed BIST and which have failed.

◆ get_gddr_mrisc_noc2axi_port()

uint8_t get_gddr_mrisc_noc2axi_port ( uint8_t gddr_inst)

Get the noc2axi port MRISC FW is loaded on for a GDDR instance.

Parameters
[in]gddr_instGDDR controller instance (0 - NUM_GDDR - 1).
Returns
noc2axi port index (0, 1 or 2).

◆ get_gddr_temps()

int get_gddr_temps ( struct gddr_temps * temps)

Read the DRAM die temperatures for all enabled GDDR instances.

Disabled instances are left zeroed. Reads that fail are logged and skipped, leaving the corresponding entry zeroed while the remaining instances are still read.

Parameters
[out]tempsDestination struct. Fully overwritten on entry.
Returns
0 if all enabled instances were read successfully. If one or more reads failed, the last error code encountered is returned (the rest are still read).

◆ GetDramMask()

uint32_t GetDramMask ( void )
static

◆ GetGddrMriscNocCoords()

void GetGddrMriscNocCoords ( uint8_t gddr_inst,
uint8_t noc_id,
uint8_t * x,
uint8_t * y )
static

◆ GetGddrSpeedFromCfg()

uint32_t GetGddrSpeedFromCfg ( uint8_t * fw_cfg_image)
static

◆ InitMrisc()

int InitMrisc ( void )
static

◆ LoadMriscFw()

int LoadMriscFw ( uint8_t gddr_inst,
uint8_t * buf,
size_t buf_size,
size_t spi_address,
size_t image_size )
static

◆ LoadMriscFwCfg()

int LoadMriscFwCfg ( uint8_t gddr_inst,
uint8_t * buf,
size_t buf_size,
size_t spi_address,
size_t image_size )
static

◆ LOG_MODULE_REGISTER()

LOG_MODULE_REGISTER ( gddr ,
CONFIG_TT_APP_LOG_LEVEL  )

◆ mrisc_message()

int32_t mrisc_message ( uint32_t op_code,
uint32_t instance_mask,
uint32_t timeout_ms,
const char * op_desc )
static

◆ MriscL1Read32()

uint32_t MriscL1Read32 ( uint8_t gddr_inst,
uint32_t addr )
static

◆ MriscL1Write32()

void MriscL1Write32 ( uint8_t gddr_inst,
uint32_t addr,
uint32_t val )
static

◆ MriscRegRead32()

uint32_t MriscRegRead32 ( uint8_t gddr_inst,
uint32_t addr )
static

◆ MriscRegWrite32()

void MriscRegWrite32 ( uint8_t gddr_inst,
uint32_t addr,
uint32_t val )
static

◆ read_gddr_telemetry_table()

int read_gddr_telemetry_table ( uint8_t gddr_inst,
gddr_telemetry_table_t * gddr_telemetry )

◆ read_gddr_temperature()

int read_gddr_temperature ( uint8_t gddr_inst,
struct gddr_inst_temp * temp )
static

◆ REGISTER_MESSAGE()

◆ ReleaseMriscReset()

void ReleaseMriscReset ( uint8_t gddr_inst)
static

◆ set_mrisc_power_setting()

int32_t set_mrisc_power_setting ( bool on)

Sets the MRISC power setting for all active MRISCs.

Parameters
[in]ontrue to send MRISCs the MRISC_MSG_TYPE_PHY_WAKEUP command
false to send MRISCs the MRISC_MSG_TYPE_PHY_POWERDOWN command
Returns
0 on success. Negative error code on failure.

◆ SetAxiEnable()

void SetAxiEnable ( uint8_t gddr_inst,
uint8_t noc2axi_port,
bool axi_enable )
static

◆ SetupMriscL1Tlb()

volatile void * SetupMriscL1Tlb ( uint8_t gddr_inst)
static

◆ StartHwMemtest()

int StartHwMemtest ( uint8_t gddr_inst,
uint32_t addr_bits,
uint32_t start_addr,
uint32_t mask )
static

◆ SYS_INIT_APP() [1/2]

SYS_INIT_APP ( gddr_training )

◆ SYS_INIT_APP() [2/2]

SYS_INIT_APP ( InitMrisc )

◆ toggle_gddr_reset()

uint8_t toggle_gddr_reset ( const union request * req,
struct response * rsp )
static

Toggle GDDR MRISC reset, re-train, and re-run BIST.

Sequence: 1) Assert MRISC soft reset 2) Release MRISC reset 3) Wait for GDDR training completion 4) Re-run BIST 5) If PHY was powered down, issue PHY wakeup

◆ wait_mrisc_not_busy()

int wait_mrisc_not_busy ( uint8_t gddr_inst,
k_timepoint_t timeout,
const char * op_desc )
static

◆ wipe_l1()

void wipe_l1 ( void )
static

Variable Documentation

◆ dma_noc

const struct device* dma_noc = DEVICE_DT_GET(DT_NODELABEL(dma1))
static

◆ flash

const struct device* flash = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(spi_flash))
static

◆ fwtable_dev

const struct device* const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))
static

◆ gddr_bist

struct gddr_bist_info gddr_bist
static

◆ gddr_telemetry_version_ok

uint8_t gddr_telemetry_version_ok
static

◆ pll_dev_3

const struct device* const pll_dev_3 = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(pll3))
static