TT Zephyr Platforms 19.5.0-rc1
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
27
28/* These values are used by CM2DM and MSG_TYPE_TRIGGER_RESET. */
33
34typedef struct dmStaticInfo {
35 /*
36 * Non-zero for valid data
37 * Allows for breaking changes
38 */
42 uint32_t arc_start_time; /* Timestamp in ASIC refclk (50 MHz) */
43 uint32_t dm_init_duration; /* Duration in DMC refclk (64 MHz) */
44 uint32_t arc_hang_pc; /* Program counter during last ARC hang */
45} __packed dmStaticInfo;
46
52
57
62
63struct bh_arc {
64 const struct smbus_dt_spec smbus;
65 const struct gpio_dt_spec enable;
66};
67
75
76int bharc_smbus_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t *count, uint8_t *output);
77int bharc_smbus_block_write(const struct bh_arc *dev, uint8_t cmd, uint8_t count, uint8_t *input);
78int bharc_smbus_word_data_write(const struct bh_arc *dev, uint16_t cmd, uint16_t word);
79int bharc_smbus_word_data_read(const struct bh_arc *dev, uint16_t cmd, uint16_t *word);
80int bharc_smbus_byte_data_write(const struct bh_arc *dev, uint8_t cmd, uint8_t word);
81int bharc_smbus_block_write_block_read(const struct bh_arc *dev, uint8_t cmd, uint8_t snd_count,
82 uint8_t *send_buf, uint8_t *rcv_count, uint8_t *rcv_buf);
83int bharc_enable_i2cbus(const struct bh_arc *dev);
84int bharc_disable_i2cbus(const struct bh_arc *dev);
85
86#define BH_ARC_INIT(n) \
87 {.smbus = SMBUS_DT_SPEC_GET(n), \
88 .enable = COND_CODE_1(DT_PROP_HAS_IDX(n, gpios, 0), ({ \
89 .port = DEVICE_DT_GET(DT_GPIO_CTLR_BY_IDX(n, gpios, 0)), \
90 .pin = DT_GPIO_PIN_BY_IDX(n, gpios, 0), \
91 .dt_flags = DT_GPIO_FLAGS_BY_IDX(n, gpios, 0), \
92 }), ({})) }
93
94#endif
int bharc_enable_i2cbus(const struct bh_arc *dev)
Definition bh_arc.c:10
int bharc_smbus_byte_data_write(const struct bh_arc *dev, uint8_t cmd, uint8_t word)
Definition bh_arc.c:59
int bharc_smbus_word_data_write(const struct bh_arc *dev, uint16_t cmd, uint16_t word)
Definition bh_arc.c:49
int bharc_smbus_word_data_read(const struct bh_arc *dev, uint16_t cmd, uint16_t *word)
Definition bh_arc.c:54
int bharc_disable_i2cbus(const struct bh_arc *dev)
Definition bh_arc.c:21
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:29
@ kCm2DmResetLevelAsic
Definition bh_arc.h:30
@ kCm2DmResetLevelDmc
Definition bh_arc.h:31
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:25
@ kCm2DmMsgIdReady
Definition bh_arc.h:20
@ kCm2DmMsgIdNull
Definition bh_arc.h:16
@ kCm2DmMsgIdLedBlink
Definition bh_arc.h:24
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:42
int bharc_smbus_block_write(const struct bh_arc *dev, uint8_t cmd, uint8_t count, uint8_t *input)
Definition bh_arc.c:37
static void cmd(uint32_t command)
__UINT32_TYPE__ uint32_t
__UINT8_TYPE__ uint8_t
__UINT16_TYPE__ uint16_t
Definition bh_arc.h:63
const struct gpio_dt_spec enable
Definition bh_arc.h:65
const struct smbus_dt_spec smbus
Definition bh_arc.h:64
Definition bh_arc.h:53
uint8_t seq_num
Definition bh_arc.h:55
uint8_t msg_id
Definition bh_arc.h:54
Definition bh_arc.h:68
int ack_ret
Definition bh_arc.h:73
cm2dmMessage msg
Definition bh_arc.h:69
int ret
Definition bh_arc.h:70
cm2dmAck ack
Definition bh_arc.h:72
Definition bh_arc.h:47
uint8_t msg_id
Definition bh_arc.h:48
uint32_t data
Definition bh_arc.h:50
uint8_t seq_num
Definition bh_arc.h:49
Definition bh_arc.h:34
uint32_t arc_start_time
Definition bh_arc.h:42
uint32_t dm_init_duration
Definition bh_arc.h:43
uint32_t app_version
Definition bh_arc.h:41
uint32_t arc_hang_pc
Definition bh_arc.h:44
uint32_t version
Definition bh_arc.h:39
uint32_t bl_version
Definition bh_arc.h:40
Definition bh_arc.h:58
cm2dmAck f
Definition bh_arc.h:59
uint16_t val
Definition bh_arc.h:60