![]() |
TT-System-Firmware APIs 19.10.99
Tenstorrent Firmware
|
Driver for Tenstorrent Grendel SMC Mailbox. More...
#include <zephyr/device.h>#include <zephyr/drivers/mbox.h>#include <zephyr/irq.h>#include <zephyr/logging/log.h>#include "platform.h"
Data Structures | |
| struct | tt_grendel_mbox_config |
| struct | tt_grendel_mbox_data |
Macros | |
| #define | DT_DRV_COMPAT tenstorrent_grendel_mbox |
| #define | MBOX_CHANNEL_STRIDE 0x800 |
| #define | TT_GRENDEL_MBOX_MSG_MAX_SIZE 8 |
| #define | MBOX_WRITE_DATA_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_WRITE_DATA_REG_OFFSET |
| #define | MBOX_READ_DATA_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_READ_DATA_REG_OFFSET |
| #define | MBOX_STATUS_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_STATUS_REG_OFFSET |
| #define | MBOX_IRQEN_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_IRQEN_REG_OFFSET |
| #define | MBOX_IRQP_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_IRQP_REG_OFFSET |
| #define | MBOX_IRQS_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_IRQS_REG_OFFSET |
| #define | MBOX_WIRQT_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_WIRQT_REG_OFFSET |
| #define | MBOX_RIRQT_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_RIRQT_REG_OFFSET |
| #define | MBOX_BASE(cfg, channel) |
| Test class. | |
| #define | TT_GRENDEL_MBOX_CHANNEL_IRQ_HANDLER_DEFINE(channel_id, _) |
| #define | TT_GRENDEL_MBOX_CHANNEL_IRQ_HANDLER_CONNECT(channel_id, inst) |
| #define | TT_GRENDEL_MBOX_DEFINE(inst) |
Functions | |
| LOG_MODULE_REGISTER (mbox_tt_grendel, CONFIG_MBOX_LOG_LEVEL) | |
| static int | tt_grendel_mbox_mtu_get (const struct device *dev) |
| static uint32_t | tt_grendel_mbox_max_channels_get (const struct device *dev) |
| static int | tt_grendel_mbox_register_callback (const struct device *dev, mbox_channel_id_t channel_id, mbox_callback_t cb, void *user_data) |
| static int | tt_grendel_mbox_send (const struct device *dev, mbox_channel_id_t channel_id, const struct mbox_msg *msg) |
| static int | tt_grendel_mbox_set_enabled (const struct device *dev, mbox_channel_id_t channel_id, bool enabled) |
| static int | tt_grendel_mbox_init (const struct device *dev) |
| static void | tt_grendel_mbox_isr (const struct device *dev, mbox_channel_id_t channel_id) |
Variables | |
| static const struct mbox_driver_api | tt_grendel_mbox_api |
Driver for Tenstorrent Grendel SMC Mailbox.
The SMC only has inbound mailbox interrupts connected, so in order to message the SMC core a message must be written to the outbound mailbox. This can be done using this driver or from a remote host writing to the SMC's outbound mailbox registers directly.
Outbound MBOX interrupts would be routed to other system components (such as Ascalon) rather than the SMC core, and would be triggered by writing to an inbound mailbox channel.
| #define DT_DRV_COMPAT tenstorrent_grendel_mbox |
| #define MBOX_BASE | ( | cfg, | |
| channel ) |
| #define MBOX_CHANNEL_STRIDE 0x800 |
| #define MBOX_IRQEN_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_IRQEN_REG_OFFSET |
| #define MBOX_IRQP_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_IRQP_REG_OFFSET |
| #define MBOX_IRQS_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_IRQS_REG_OFFSET |
| #define MBOX_READ_DATA_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_READ_DATA_REG_OFFSET |
| #define MBOX_RIRQT_REG_OFFSET SMC_CPU_SMC_INBOUND_MAILBOX_0_RIRQT_REG_OFFSET |
| #define MBOX_STATUS_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_STATUS_REG_OFFSET |
| #define MBOX_WIRQT_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_WIRQT_REG_OFFSET |
| #define MBOX_WRITE_DATA_REG_OFFSET SMC_CPU_SMC_OUTBOUND_MAILBOX_0_WRITE_DATA_REG_OFFSET |
| #define TT_GRENDEL_MBOX_CHANNEL_IRQ_HANDLER_CONNECT | ( | channel_id, | |
| inst ) |
| #define TT_GRENDEL_MBOX_CHANNEL_IRQ_HANDLER_DEFINE | ( | channel_id, | |
| _ ) |
| #define TT_GRENDEL_MBOX_DEFINE | ( | inst | ) |
| #define TT_GRENDEL_MBOX_MSG_MAX_SIZE 8 |
| LOG_MODULE_REGISTER | ( | mbox_tt_grendel | , |
| CONFIG_MBOX_LOG_LEVEL | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |