5#include "sw/device/lib/testing/spi_host_testutils.h"
8#include "sw/device/lib/testing/pinmux_testutils.h"
9#include "sw/device/lib/testing/test_framework/check.h"
11status_t spi_host_testutils_configure_host0_pad_attrs(
dif_pinmux_t *pinmux) {
18 .flags = kDifPinmuxPadAttrPullResistorEnable |
19 kDifPinmuxPadAttrPullResistorUp};
21 for (uint32_t i = 0; i < kDtSpiHostPeriphIoCount; ++i) {
24 dt_pad_t pad = dt_periph_io_dio_pad(periph_io);
25 res = dif_pinmux_pad_write_attrs_dt(pinmux, pad, in_attr, &out_attr);
32 "Specified slew rate not supported, trying supported slew rate");
37 "Specified drive strength not supported, trying supported drive "
42 dif_pinmux_pad_write_attrs_dt(pinmux, pad, in_attr, &out_attr));
52extern status_t spi_host_testutils_is_active(
dif_spi_host_t *spi_host);
55 dif_spi_host_status_t
status;
56 uint8_t dummy[
sizeof(uint32_t)];
57 TRY(dif_spi_host_get_status(spi_host, &
status));
59 TRY(dif_spi_host_fifo_read(spi_host, &dummy,
sizeof(dummy)));
60 TRY(dif_spi_host_get_status(spi_host, &
status));
65#if defined(OPENTITAN_IS_EARLGREY)
69typedef struct spi_host1_pinmux_pads {
75} spi_host1_pinmux_pads_t;
81static const spi_host1_pinmux_pads_t kSpiHost1PinmuxMap[] = {
82 [kSpiPinmuxPlatformIdCw310] =
90 [kSpiPinmuxPlatformIdCw340] =
98 [kSpiPinmuxPlatformIdTeacup] =
108status_t spi_host1_pinmux_connect_to_bob(
const dif_pinmux_t *pinmux,
110 spi_pinmux_platform_id_t platform_id) {
111 TRY_CHECK(platform_id < kSpiPinmuxPlatformIdCount);
112 const spi_host1_pinmux_pads_t *platform = &kSpiHost1PinmuxMap[platform_id];
117 TRY(dif_pinmux_mio_select_output(pinmux, csb_outsel, csb));
121 TRY(dif_pinmux_mio_select_output(pinmux, platform->clk, sck));
125 TRY(dif_pinmux_mio_select_input(pinmux, sd0, platform->sd0));
126 TRY(dif_pinmux_mio_select_output(pinmux, platform->sd0, sd0));
130 TRY(dif_pinmux_mio_select_input(pinmux, sd1, platform->sd1));
131 TRY(dif_pinmux_mio_select_output(pinmux, platform->sd1, sd1));
135 TRY(dif_pinmux_mio_select_input(pinmux, sd2, platform->sd2));
136 TRY(dif_pinmux_mio_select_output(pinmux, platform->sd2, sd2));
140 TRY(dif_pinmux_mio_select_input(pinmux, sd3, platform->sd3));
141 TRY(dif_pinmux_mio_select_output(pinmux, platform->sd3, sd3));
144#elif defined(OPENTITAN_IS_DARJEELING)
147#error "spi_host_testutils does not support this top"