15 #include "sw/device/lib/testing/spi_device_testutils.h"
16 #include "sw/device/lib/testing/spi_flash_testutils.h"
17 #include "sw/device/lib/testing/test_framework/check.h"
19 #include "sw/device/lib/testing/test_framework/ottf_utils.h"
20 #include "sw/device/tests/spi_host_flash_test_impl.h"
24 static_assert(__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__,
25 "This test assumes the target platform is little endian.");
27 OTTF_DEFINE_TEST_CONFIG();
30 kDefaultTimeoutMicros = 50000,
38 uint8_t backdoor_cpha = UINT8_MAX;
40 uint8_t backdoor_cpol = UINT8_MAX;
42 uint32_t backdoor_data = UINT32_MAX;
44 static status_t spi_config_test(dif_spi_host_t *spi);
46 static status_t configure_pinmux(
const dif_pinmux_t *pinmux);
49 dif_spi_host_t spi_host;
54 CHECK_DIF_OK(dif_pinmux_init(base_addr, &pinmux));
56 CHECK_DIF_OK(dif_spi_host_init(base_addr, &spi_host));
58 configure_pinmux(&pinmux);
59 for (
size_t i = 0; i < 4; ++i) {
60 CHECK_STATUS_OK(spi_config_test(&spi_host));
65 static status_t spi_config_test(dif_spi_host_t *spi) {
70 backdoor_cpha = UINT8_MAX;
71 backdoor_cpol = UINT8_MAX;
72 backdoor_data = UINT32_MAX;
74 OTTF_WAIT_FOR(backdoor_cpha != UINT8_MAX, kDefaultTimeoutMicros);
75 config.
cpha = backdoor_cpha;
76 OTTF_WAIT_FOR(backdoor_cpol != UINT8_MAX, kDefaultTimeoutMicros);
77 config.
cpol = backdoor_cpol;
83 static uint32_t address = 0;
84 OTTF_WAIT_FOR(backdoor_data != UINT32_MAX, kDefaultTimeoutMicros);
85 uint8_t data[
sizeof(backdoor_data)];
86 memcpy(data, (
const void *)&backdoor_data,
sizeof(data));
88 TRY(spi_flash_testutils_program_page(spi, data,
sizeof(data), address,
93 static status_t configure_pinmux(
const dif_pinmux_t *pinmux) {