TT-System-Firmware APIs 19.8.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
status_reg.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Tenstorrent AI ULC
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6/* Scratch registers used for status and error reporting */
7#ifndef STATUS_REG_H
8#define STATUS_REG_H
9
10#include <stdint.h>
11
12#define RESET_UNIT_SCRATCH_RAM_BASE_ADDR 0x80030400
13#define RESET_UNIT_SCRATCH_RAM_REG_ADDR(n) \
14 (RESET_UNIT_SCRATCH_RAM_BASE_ADDR + sizeof(uint32_t) * (n))
15
16#define RESET_UNIT_SCRATCH_BASE_ADDR 0x80030060
17#define RESET_UNIT_SCRATCH_REG_ADDR(n) (RESET_UNIT_SCRATCH_BASE_ADDR + sizeof(uint32_t) * (n))
18
19/* SCRATCH_[0-7] */
20#define STATUS_POST_CODE_REG_ADDR RESET_UNIT_SCRATCH_REG_ADDR(0)
21/* Cable power limit written by DMC via JTAG before ARC boot.
22 * Format: [31:16] = magic marker, [15:0] = power limit in watts
23 * Magic marker presence indicates DMC supports this feature.
24 * If magic marker absent (legacy DMC), SMC skips cable fault detection.
25 * If magic marker present and power_limit=0, cable fault is detected.
26 */
27#define DMC_CABLE_POWER_LIMIT_REG_ADDR RESET_UNIT_SCRATCH_REG_ADDR(1)
28#define CABLE_POWER_LIMIT_MAGIC 0xCAB10000 /* Magic marker in upper 16 bits */
29#define CABLE_POWER_LIMIT_MAGIC_MASK 0xFFFF0000
30#define CABLE_POWER_LIMIT_VALUE_MASK 0x0000FFFF
31
32/* SCRATCH_RAM[0-63] */
33#define STATUS_FW_VERSION_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(0)
34/* SCRATCH_RAM_1 is reserved for the security handshake used by bootcode */
35#define STATUS_BOOT_STATUS0_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(2)
36#define STATUS_BOOT_STATUS1_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(3)
37#define STATUS_ERROR_STATUS0_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(4)
38#define STATUS_ERROR_STATUS1_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(5)
39#define STATUS_INTERFACE_TABLE_BASE_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(6)
40/* SCRATCH_RAM_7 is reserved for possible future interface table uses */
41#define STATUS_MSG_Q_STATUS_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(8)
42#define STATUS_MSG_Q_ERR_FLAGS_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(9)
43#define SPI_BUFFER_INFO_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(10)
44#define STATUS_MSG_Q_INFO_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(11)
52#define TELEMETRY_DATA_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(12)
60#define TELEMETRY_TABLE_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(13)
61#define PCIE_INIT_CPL_TIME_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(14)
62#define CMFW_START_TIME_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(15)
63#define ARC_START_TIME_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(16)
64#define PERST_TO_DMFW_INIT_DONE_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(17)
65#define PING_DMFW_DURATION_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(18)
66#define I2C0_TARGET_DEBUG_STATE_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(19)
67#define I2C0_TARGET_DEBUG_STATE_2_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(20)
68#define ARC_HANG_PC RESET_UNIT_SCRATCH_RAM_REG_ADDR(21)
69
70#define STATUS_FW_VUART_REG_ADDR(n) RESET_UNIT_SCRATCH_RAM_REG_ADDR(40 + (n))
71/* SCRATCH_RAM_40 - SCRATCH_RAM_41 reserved for virtual uarts */
72#define STATUS_FW_SCRATCH_REG_ADDR RESET_UNIT_SCRATCH_RAM_REG_ADDR(63)
73
80
85
86typedef struct {
88 uint32_t cable_fault: 1; /* No cable or improperly installed 12V-2x6 cable */
90
95
96#endif
__UINT32_TYPE__ uint32_t
Definition status_reg.h:74
uint32_t msg_queue_ready
Definition status_reg.h:75
uint32_t fw_id
Definition status_reg.h:77
uint32_t hw_init_status
Definition status_reg.h:76
uint32_t spare
Definition status_reg.h:78
Definition status_reg.h:86
uint32_t cable_fault
Definition status_reg.h:88
uint32_t regulator_init_error
Definition status_reg.h:87
Definition status_reg.h:81
STATUS_BOOT_STATUS0_reg_t f
Definition status_reg.h:83
uint32_t val
Definition status_reg.h:82
Definition status_reg.h:91
STATUS_ERROR_STATUS0_reg_t f
Definition status_reg.h:93
uint32_t val
Definition status_reg.h:92