TT-System-Firmware APIs 19.15.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
uart_tt_virt.c File Reference
#include <errno.h>
#include <stdatomic.h>
#include <tenstorrent/uart_tt_virt.h>
#include <zephyr/device.h>
#include <zephyr/drivers/uart.h>
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/util.h>
Include dependency graph for uart_tt_virt.c:

Data Structures

struct  uart_tt_virt_config
struct  uart_tt_virt_data

Macros

#define DT_DRV_COMPAT   tenstorrent_vuart
#define UART_TT_VIRT_DESC_SIZE(_inst)
#define UART_TT_VIRT_DEFINE_AREA(_inst)
#define UART_TT_VIRT_CHECK_REGION(_inst)
#define UART_TT_VIRT_PTR(_inst)
#define DEFINE_UART_TT_VIRT(_inst)

Functions

 LOG_MODULE_REGISTER (uart_tt_virt, CONFIG_UART_LOG_LEVEL)
static int uart_tt_virt_err_check (const struct device *dev)
static int uart_tt_virt_poll_in (const struct device *dev, unsigned char *p_char)
void uart_tt_virt_poll_out (const struct device *dev, unsigned char out_char)
static DEVICE_API (uart, uart_tt_virt_api)
__weak void uart_tt_virt_init_callback (const struct device *dev, size_t inst)
__weak volatile struct tt_vuartuart_tt_virt_lookup_callback (size_t inst)
volatile struct tt_vuartuart_tt_virt_get (const struct device *dev)
static bool uart_tt_virt_adoptable (const struct uart_tt_virt_config *config, volatile const struct tt_vuart *vuart)
static int uart_tt_virt_init (const struct device *dev)

Macro Definition Documentation

◆ DEFINE_UART_TT_VIRT

#define DEFINE_UART_TT_VIRT ( _inst)
Value:
COND_CODE_1(DT_INST_NODE_HAS_PROP(_inst, memory_region), \
static const struct uart_tt_virt_config uart_tt_virt_config_##_inst = { \
.vuart = UART_TT_VIRT_PTR(_inst), \
.init_metadata = DT_INST_PROP(_inst, init_metadata), \
.loopback = DT_INST_PROP(_inst, loopback), \
.magic = DT_INST_PROP(_inst, magic), \
.version = ((DT_INST_REG_ADDR(_inst)) << 24) | \
(DT_INST_PROP(_inst, version) & GENMASK(23, 0)), \
.rx_cap = DT_INST_PROP(_inst, rx_cap), \
.tx_cap = DT_INST_PROP(_inst, tx_cap), \
}; \
static struct uart_tt_virt_data uart_tt_virt_data_##_inst; \
\
DEVICE_DT_INST_DEFINE(_inst, uart_tt_virt_init, PM_DEVICE_DT_INST_GET(_inst), \
&uart_tt_virt_data_##_inst, &uart_tt_virt_config_##_inst, \
PRE_KERNEL_1, CONFIG_SERIAL_INIT_PRIORITY, &uart_tt_virt_api);
#define DT_INST_PROP(inst, prop)
#define DT_INST_NODE_HAS_PROP(inst, prop)
#define DT_INST_REG_ADDR(inst)
#define PM_DEVICE_DT_INST_GET(idx)
#define COND_CODE_1(_flag, _if_1_code, _else_code)
#define GENMASK(h, l)
Definition uart_tt_virt.c:21
Definition uart_tt_virt.c:31
#define UART_TT_VIRT_CHECK_REGION(_inst)
Definition uart_tt_virt.c:441
#define UART_TT_VIRT_PTR(_inst)
Definition uart_tt_virt.c:446
static int uart_tt_virt_init(const struct device *dev)
Definition uart_tt_virt.c:394
#define UART_TT_VIRT_DEFINE_AREA(_inst)
Definition uart_tt_virt.c:430

◆ DT_DRV_COMPAT

#define DT_DRV_COMPAT   tenstorrent_vuart

◆ UART_TT_VIRT_CHECK_REGION

#define UART_TT_VIRT_CHECK_REGION ( _inst)
Value:
BUILD_ASSERT(DT_REG_SIZE(DT_INST_PHANDLE(_inst, memory_region)) >= \
"tenstorrent,vuart memory-region is too small for its buffers");
BUILD_ASSERT((int) BH_PCIE_MODE_DISABLED==FwTable_PciPropertyTable_PcieMode_DISABLED)
#define DT_INST_PHANDLE(inst, prop)
#define DT_REG_SIZE(node_id)
#define UART_TT_VIRT_DESC_SIZE(_inst)
Definition uart_tt_virt.c:426

◆ UART_TT_VIRT_DEFINE_AREA

#define UART_TT_VIRT_DEFINE_AREA ( _inst)
Value:
struct uart_tt_virt_area_##_inst { \
union { \
sizeof(uint32_t))]; \
struct tt_vuart vuart; \
}; \
}; \
static struct uart_tt_virt_area_##_inst uart_tt_virt_area_##_inst;
#define DIV_ROUND_UP(n, d)
__UINT32_TYPE__ uint32_t
In-memory ring buffer descriptor for Tenstorrent virtual UART.
Definition uart_tt_virt.h:69

◆ UART_TT_VIRT_DESC_SIZE

#define UART_TT_VIRT_DESC_SIZE ( _inst)
Value:
(sizeof(struct tt_vuart) + DT_INST_PROP(_inst, rx_cap) + DT_INST_PROP(_inst, tx_cap))

◆ UART_TT_VIRT_PTR

#define UART_TT_VIRT_PTR ( _inst)
Value:
COND_CODE_1(DT_INST_NODE_HAS_PROP(_inst, memory_region), \
DT_INST_PHANDLE(_inst, memory_region))), \
((struct tt_vuart *)&uart_tt_virt_area_##_inst.vuart))
#define DT_REG_ADDR(node_id)
__UINTPTR_TYPE__ uintptr_t

Function Documentation

◆ DEVICE_API()

DEVICE_API ( uart ,
uart_tt_virt_api  )
static

◆ LOG_MODULE_REGISTER()

LOG_MODULE_REGISTER ( uart_tt_virt ,
CONFIG_UART_LOG_LEVEL  )

◆ uart_tt_virt_adoptable()

bool uart_tt_virt_adoptable ( const struct uart_tt_virt_config * config,
volatile const struct tt_vuart * vuart )
static

◆ uart_tt_virt_err_check()

int uart_tt_virt_err_check ( const struct device * dev)
static

◆ uart_tt_virt_get()

volatile struct tt_vuart * uart_tt_virt_get ( const struct device * dev)

◆ uart_tt_virt_init()

int uart_tt_virt_init ( const struct device * dev)
static

◆ uart_tt_virt_init_callback()

__weak void uart_tt_virt_init_callback ( const struct device * dev,
size_t inst )

◆ uart_tt_virt_lookup_callback()

__weak volatile struct tt_vuart * uart_tt_virt_lookup_callback ( size_t inst)

◆ uart_tt_virt_poll_in()

int uart_tt_virt_poll_in ( const struct device * dev,
unsigned char * p_char )
static

◆ uart_tt_virt_poll_out()

void uart_tt_virt_poll_out ( const struct device * dev,
unsigned char out_char )