5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_I2C_TESTUTILS_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_I2C_TESTUTILS_H_
10 #include "sw/device/lib/base/status.h"
25 status_t i2c_testutils_write(
const dif_i2c_t *i2c, uint8_t addr,
26 size_t byte_count,
const uint8_t *data,
39 status_t i2c_testutils_issue_read(
const dif_i2c_t *i2c, uint8_t addr,
51 status_t i2c_testutils_target_check_start(
const dif_i2c_t *i2c, uint8_t *addr);
65 status_t i2c_testutils_target_check_end(
const dif_i2c_t *i2c,
77 status_t i2c_testutils_target_read(
const dif_i2c_t *i2c, uint16_t byte_count,
92 status_t i2c_testutils_target_check_read(
const dif_i2c_t *i2c, uint8_t *addr,
103 status_t i2c_testutils_target_write(
const dif_i2c_t *i2c, uint16_t byte_count);
119 status_t i2c_testutils_target_check_write(
const dif_i2c_t *i2c,
120 uint16_t byte_count, uint8_t *addr,
121 uint8_t *bytes, uint8_t *cont_byte);
126 typedef enum i2c_pinmux_platform_id {
127 I2cPinmuxPlatformIdHyper310 = 0,
128 I2cPinmuxPlatformIdDvsim,
129 I2cPinmuxPlatformIdCw310Pmod,
130 I2cPinmuxPlatformIdCount,
131 } i2c_pinmux_platform_id_t;
143 status_t i2c_testutils_select_pinmux(
const dif_pinmux_t *pinmux,
145 i2c_pinmux_platform_id_t platform);
155 status_t i2c_testutils_detach_pinmux(
const dif_pinmux_t *pinmux,
165 static inline status_t i2c_testutils_fifo_empty(
const dif_i2c_t *i2c) {
168 return OK_STATUS(
status.rx_fifo_empty);
178 static inline status_t i2c_testutils_tx_fifo_full(
const dif_i2c_t *i2c) {
181 return OK_STATUS(
status.tx_fifo_full);
191 static inline status_t i2c_testutils_tx_fifo_empty(
const dif_i2c_t *i2c) {
194 return OK_STATUS(
status.tx_fifo_empty);
204 static inline status_t i2c_testutils_fmt_fifo_empty(
const dif_i2c_t *i2c) {
207 return OK_STATUS(
status.fmt_fifo_empty);
224 status_t i2c_testutils_read(
const dif_i2c_t *i2c, uint8_t addr,
225 size_t byte_count, uint8_t *data,
size_t timeout);
244 status_t i2c_testutils_wait_host_idle(
const dif_i2c_t *i2c);
255 status_t i2c_testutils_wait_transaction_finish(
const dif_i2c_t *i2c);