TT-System-Firmware APIs 19.15.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
reset_tt_bh_emul.c File Reference
#include <stdbool.h>
#include <stdint.h>
#include <zephyr/device.h>
#include <zephyr/drivers/reset.h>
#include <zephyr/drivers/reset/reset_tt_bh.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/util.h>
Include dependency graph for reset_tt_bh_emul.c:

Data Structures

struct  tt_bh_reset_emul_config
struct  tt_bh_reset_emul_data

Macros

#define DT_DRV_COMPAT   tenstorrent_bh_reset_emul
#define TT_BH_RESET_EMUL_MASK_FROM_NRESETS(_n)
#define TT_BH_RESET_EMUL_MASK(_n)
#define TT_BH_RESET_EMUL_NUM_SPECIFIERS(_n)
#define TT_BH_RESET_EMUL_N_BANKS(_n)
#define TT_BH_RESET_EMUL_MASK_DEFINE(_n)
#define TT_BH_RESET_EMUL_DEFINE(_n)

Functions

static bool tt_bh_reset_emul_is_valid_id (const struct device *dev, uint32_t id)
static bool tt_bh_reset_emul_is_valid_offset (const struct device *dev, uint32_t offset)
static uint32_ttt_bh_reset_emul_bank (struct tt_bh_reset_emul_data *data, uint32_t offset)
static int tt_bh_reset_emul_status (const struct device *dev, uint32_t id, uint8_t *status)
static int tt_bh_reset_emul_line_assert (const struct device *dev, uint32_t id)
static int tt_bh_reset_emul_line_deassert (const struct device *dev, uint32_t id)
static int tt_bh_reset_emul_line_toggle (const struct device *dev, uint32_t id)
int reset_tt_bh_write (const struct device *dev, uint32_t value)
 Absolute write to a BH reset-unit bank register.
int reset_tt_bh_lines_assert (const struct device *dev, uint32_t offset, uint32_t mask)
 Assert lines in mask at offset with a single RMW.
int reset_tt_bh_lines_deassert (const struct device *dev, uint32_t offset, uint32_t mask)
 Deassert lines in mask at offset with a single RMW.
static int tt_bh_reset_emul_init (const struct device *dev)
static DEVICE_API (reset, tt_bh_reset_emul_api)
 DT_INST_FOREACH_STATUS_OKAY (TT_BH_RESET_EMUL_DEFINE)

Macro Definition Documentation

◆ DT_DRV_COMPAT

#define DT_DRV_COMPAT   tenstorrent_bh_reset_emul

◆ TT_BH_RESET_EMUL_DEFINE

#define TT_BH_RESET_EMUL_DEFINE ( _n)
Value:
"Maximally 1 of nresets or reset-mask may be specified"); \
BUILD_ASSERT(TT_BH_RESET_EMUL_N_BANKS(_n) >= 1, "n-banks must be at least 1"); \
\
static uint32_t tt_bh_reset_emul_vals_##_n[TT_BH_RESET_EMUL_N_BANKS(_n)]; \
static struct tt_bh_reset_emul_data tt_bh_reset_emul_data_##_n = { \
.values = tt_bh_reset_emul_vals_##_n, \
}; \
static const struct tt_bh_reset_emul_config tt_bh_reset_emul_config_##_n = { \
.reset_mask = TT_BH_RESET_EMUL_MASK_DEFINE(_n), \
}; \
\
BUILD_ASSERT(TT_BH_RESET_EMUL_MASK_DEFINE(_n) != 0, "reset mask should never be zero"); \
\
DEVICE_DT_INST_DEFINE(_n, tt_bh_reset_emul_init, NULL, &tt_bh_reset_emul_data_##_n, \
&tt_bh_reset_emul_config_##_n, PRE_KERNEL_1, \
CONFIG_RESET_INIT_PRIORITY, &tt_bh_reset_emul_api);
#define NULL
Definition avs.c:45
BUILD_ASSERT((int) BH_PCIE_MODE_DISABLED==FwTable_PciPropertyTable_PcieMode_DISABLED)
#define TT_BH_RESET_BANK_STRIDE
Definition reset_tt_bh.h:21
#define TT_BH_RESET_EMUL_MASK_DEFINE(_n)
Definition reset_tt_bh_emul.c:183
#define TT_BH_RESET_EMUL_N_BANKS(_n)
Definition reset_tt_bh_emul.c:181
#define TT_BH_RESET_EMUL_NUM_SPECIFIERS(_n)
Definition reset_tt_bh_emul.c:179
static int tt_bh_reset_emul_init(const struct device *dev)
Definition reset_tt_bh_emul.c:162
__UINT32_TYPE__ uint32_t
Definition reset_tt_bh_emul.c:18
Definition reset_tt_bh_emul.c:23

◆ TT_BH_RESET_EMUL_MASK

#define TT_BH_RESET_EMUL_MASK ( _n)
Value:
DT_INST_PROP_OR(_n, reset_mask, 0)
#define DT_INST_PROP_OR(inst, prop, default_value)

◆ TT_BH_RESET_EMUL_MASK_DEFINE

#define TT_BH_RESET_EMUL_MASK_DEFINE ( _n)
Value:
#define TT_BH_RESET_EMUL_MASK_FROM_NRESETS(_n)
Definition reset_tt_bh_emul.c:176
#define TT_BH_RESET_EMUL_MASK(_n)
Definition reset_tt_bh_emul.c:178
#define UINT32_MAX

◆ TT_BH_RESET_EMUL_MASK_FROM_NRESETS

#define TT_BH_RESET_EMUL_MASK_FROM_NRESETS ( _n)
Value:
((uint32_t)BIT64_MASK(DT_INST_PROP_OR(_n, nresets, 0)))
#define BIT64_MASK(n)

◆ TT_BH_RESET_EMUL_N_BANKS

#define TT_BH_RESET_EMUL_N_BANKS ( _n)
Value:
DT_INST_PROP_OR(_n, n_banks, 1)

◆ TT_BH_RESET_EMUL_NUM_SPECIFIERS

#define TT_BH_RESET_EMUL_NUM_SPECIFIERS ( _n)
Value:
(!!DT_INST_PROP_OR(_n, nresets, 0) + !!DT_INST_PROP_OR(_n, reset_mask, 0))

Function Documentation

◆ DEVICE_API()

DEVICE_API ( reset ,
tt_bh_reset_emul_api  )
static

◆ DT_INST_FOREACH_STATUS_OKAY()

DT_INST_FOREACH_STATUS_OKAY ( TT_BH_RESET_EMUL_DEFINE )

◆ reset_tt_bh_lines_assert()

int reset_tt_bh_lines_assert ( const struct device * dev,
uint32_t offset,
uint32_t mask )

Assert lines in mask at offset with a single RMW.

offset is a byte offset from the controller base (typically a multiple of TT_BH_RESET_BANK_STRIDE). Active-low: clears bits in mask. Invalid if offset is out of range or mask shares no bits with the controller's reset-mask.

◆ reset_tt_bh_lines_deassert()

int reset_tt_bh_lines_deassert ( const struct device * dev,
uint32_t offset,
uint32_t mask )

Deassert lines in mask at offset with a single RMW.

Active-low: sets bits in mask. Used for dual-field banks (eth/ddr) where tile and RISC halves share one MMIO word, multi-bank tensix regions, and full-bank releases.

◆ reset_tt_bh_write()

int reset_tt_bh_write ( const struct device * dev,
uint32_t value )

Absolute write to a BH reset-unit bank register.

Sets the entire bank word at offset 0 (no read-modify-write). Use when init must force a known full-register state (e.g. dual-field tile half deasserted with RISC half still asserted). Prefer reset_tt_bh_lines_assert/deassert when only selected lines should change.

◆ tt_bh_reset_emul_bank()

uint32_t * tt_bh_reset_emul_bank ( struct tt_bh_reset_emul_data * data,
uint32_t offset )
inlinestatic

◆ tt_bh_reset_emul_init()

int tt_bh_reset_emul_init ( const struct device * dev)
static

◆ tt_bh_reset_emul_is_valid_id()

bool tt_bh_reset_emul_is_valid_id ( const struct device * dev,
uint32_t id )
inlinestatic

◆ tt_bh_reset_emul_is_valid_offset()

bool tt_bh_reset_emul_is_valid_offset ( const struct device * dev,
uint32_t offset )
inlinestatic

◆ tt_bh_reset_emul_line_assert()

int tt_bh_reset_emul_line_assert ( const struct device * dev,
uint32_t id )
static

◆ tt_bh_reset_emul_line_deassert()

int tt_bh_reset_emul_line_deassert ( const struct device * dev,
uint32_t id )
static

◆ tt_bh_reset_emul_line_toggle()

int tt_bh_reset_emul_line_toggle ( const struct device * dev,
uint32_t id )
static

◆ tt_bh_reset_emul_status()

int tt_bh_reset_emul_status ( const struct device * dev,
uint32_t id,
uint8_t * status )
static