TT Zephyr Platforms 18.11.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
bh_arc.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Tenstorrent AI ULC
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef INCLUDE_TENSTORRENT_LIB_BH_ARC_H_
8#define INCLUDE_TENSTORRENT_LIB_BH_ARC_H_
9
10#include <stdint.h>
11
13#include <zephyr/drivers/gpio.h>
14
26
27/* These values are used by CM2DM and MSG_TYPE_TRIGGER_RESET. */
32
33typedef struct dmStaticInfo {
34 /*
35 * Non-zero for valid data
36 * Allows for breaking changes
37 */
41 uint32_t arc_start_time; /* Timestamp in ASIC refclk (50 MHz) */
42 uint32_t dm_init_duration; /* Duration in DMC refclk (64 MHz) */
43 uint32_t arc_hang_pc; /* Program counter during last ARC hang */
44} __packed dmStaticInfo;
45
51
56
61
62struct bh_arc {
63 const struct smbus_dt_spec smbus;
64 const struct gpio_dt_spec enable;
65};
66
74
75int bharc_smbus_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t *count, uint8_t *output);
76int bharc_smbus_block_write(const struct bh_arc *dev, uint8_t cmd, uint8_t count, uint8_t *input);
77int bharc_smbus_word_data_write(const struct bh_arc *dev, uint16_t cmd, uint16_t word);
78int bharc_smbus_byte_data_write(const struct bh_arc *dev, uint8_t cmd, uint8_t word);
79int bharc_smbus_block_write_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t snd_count,
80 uint8_t *send_buf, uint8_t *rcv_count, uint8_t *rcv_buf);
81
82#define BH_ARC_INIT(n) \
83 {.smbus = SMBUS_DT_SPEC_GET(n), \
84 .enable = COND_CODE_1(DT_PROP_HAS_IDX(n, gpios, 0), ({ \
85 .port = DEVICE_DT_GET(DT_GPIO_CTLR_BY_IDX(n, gpios, 0)), \
86 .pin = DT_GPIO_PIN_BY_IDX(n, gpios, 0), \
87 .dt_flags = DT_GPIO_FLAGS_BY_IDX(n, gpios, 0), \
88 }), ({})) }
89
90#endif
int bharc_smbus_byte_data_write(const struct bh_arc *dev, uint8_t cmd, uint8_t word)
Definition bh_arc.c:118
int bharc_smbus_word_data_write(const struct bh_arc *dev, uint16_t cmd, uint16_t word)
Definition bh_arc.c:97
int bharc_smbus_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t *count, uint8_t *output)
Definition bh_arc.c:32
Cm2DmResetLevel
Definition bh_arc.h:28
@ kCm2DmResetLevelAsic
Definition bh_arc.h:29
@ kCm2DmResetLevelDmc
Definition bh_arc.h:30
Cm2DmMsgId
Definition bh_arc.h:15
@ kCm2DmMsgIdFanSpeedUpdate
Definition bh_arc.h:19
@ kCm2DmMsgIdResetReq
Definition bh_arc.h:17
@ kCm2DmMsgIdAutoResetTimeoutUpdate
Definition bh_arc.h:21
@ kCm2DmMsgIdPing
Definition bh_arc.h:18
@ kCm2DmMsgTelemHeartbeatUpdate
Definition bh_arc.h:22
@ kCm2DmMsgIdForcedFanSpeedUpdate
Definition bh_arc.h:23
@ kCm2DmMsgCount
Definition bh_arc.h:24
@ kCm2DmMsgIdReady
Definition bh_arc.h:20
@ kCm2DmMsgIdNull
Definition bh_arc.h:16
int bharc_smbus_block_write_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t snd_count, uint8_t *send_buf, uint8_t *rcv_count, uint8_t *rcv_buf)
Definition bh_arc.c:74
int bharc_smbus_block_write(const struct bh_arc *dev, uint8_t cmd, uint8_t count, uint8_t *input)
Definition bh_arc.c:53
static void cmd(uint32_t command)
__UINT32_TYPE__ uint32_t
__UINT8_TYPE__ uint8_t
__UINT16_TYPE__ uint16_t
Definition bh_arc.h:62
const struct gpio_dt_spec enable
Definition bh_arc.h:64
const struct smbus_dt_spec smbus
Definition bh_arc.h:63
Definition bh_arc.h:52
uint8_t seq_num
Definition bh_arc.h:54
uint8_t msg_id
Definition bh_arc.h:53
Definition bh_arc.h:67
int ack_ret
Definition bh_arc.h:72
cm2dmMessage msg
Definition bh_arc.h:68
int ret
Definition bh_arc.h:69
cm2dmAck ack
Definition bh_arc.h:71
Definition bh_arc.h:46
uint8_t msg_id
Definition bh_arc.h:47
uint32_t data
Definition bh_arc.h:49
uint8_t seq_num
Definition bh_arc.h:48
Definition bh_arc.h:33
uint32_t arc_start_time
Definition bh_arc.h:41
uint32_t dm_init_duration
Definition bh_arc.h:42
uint32_t app_version
Definition bh_arc.h:40
uint32_t arc_hang_pc
Definition bh_arc.h:43
uint32_t version
Definition bh_arc.h:38
uint32_t bl_version
Definition bh_arc.h:39
Definition bh_arc.h:57
cm2dmAck f
Definition bh_arc.h:58
uint16_t val
Definition bh_arc.h:59