TT-System-Firmware APIs 19.10.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 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)
volatile struct tt_vuartuart_tt_virt_get (const struct device *dev)
static int uart_tt_virt_init (const struct device *dev)

Macro Definition Documentation

◆ DEFINE_UART_TT_VIRT

#define DEFINE_UART_TT_VIRT ( _inst)
Value:
struct uart_tt_virt_area_##_inst { \
union { \
struct tt_vuart vuart; \
}; \
}; \
static struct uart_tt_virt_area_##_inst uart_tt_virt_area_##_inst = { \
.vuart = \
{ \
.magic = DT_INST_PROP(_inst, magic), \
.version = ((DT_INST_REG_ADDR(_inst)) << 24) | \
(DT_INST_PROP(_inst, version) & GENMASK(0, 24)), \
.rx_cap = DT_INST_PROP(_inst, rx_cap), \
.tx_cap = DT_INST_PROP(_inst, tx_cap), \
}, \
}; \
static const struct uart_tt_virt_config uart_tt_virt_config_##_inst = { \
.vuart = (struct tt_vuart *)&uart_tt_virt_area_##_inst.vuart, \
.loopback = DT_INST_PROP(_inst, loopback), \
}; \
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_REG_ADDR(inst)
#define PM_DEVICE_DT_INST_GET(idx)
#define GENMASK(h, l)
__UINT32_TYPE__ uint32_t
In-memory ring buffer descriptor for Tenstorrent virtual UART.
Definition uart_tt_virt.h:69
volatile struct tt_vuart * vuart
Definition uart_tt_virt.c:22
static int uart_tt_virt_init(const struct device *dev)
Definition uart_tt_virt.c:371
#define UART_TT_VIRT_DESC_SIZE(_inst)
Definition uart_tt_virt.c:387

◆ DT_DRV_COMPAT

#define DT_DRV_COMPAT   tenstorrent_vuart

◆ UART_TT_VIRT_DESC_SIZE

#define UART_TT_VIRT_DESC_SIZE ( _inst)
Value:
(DIV_ROUND_UP(sizeof(struct tt_vuart) + DT_INST_PROP(_inst, rx_cap) + \
DT_INST_PROP(_inst, tx_cap), \
sizeof(uint32_t)))
#define DIV_ROUND_UP(n, d)

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_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_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 )