5 #include "sw/device/silicon_creator/lib/bootstrap_unittest_util.h"
12 #include "flash_ctrl_regs.h"
13 #include "gpio_regs.h"
15 #include "otp_ctrl_regs.h"
21 namespace bootstrap_unittest_util {
24 using ::testing::DoAll;
25 using ::testing::NotNull;
26 using ::testing::Return;
27 using ::testing::SetArgPointee;
32 read32(OTP_CTRL_PARAM_OWNER_SW_CFG_ROM_BOOTSTRAP_DIS_OFFSET))
43 EXPECT_CALL(spi_device_, CmdGet(NotNull()))
44 .WillOnce(DoAll(SetArgPointee<0>(cmd), Return(kErrorOk)));
48 EXPECT_CALL(spi_device_, FlashStatusGet())
49 .WillOnce(Return(wel << kSpiDeviceWelBit));
54 .read = kMultiBitBool4False,
55 .write = kMultiBitBool4True,
56 .erase = kMultiBitBool4False,
62 .read = kMultiBitBool4False,
63 .write = kMultiBitBool4False,
64 .erase = kMultiBitBool4True,
70 .read = kMultiBitBool4False,
71 .write = kMultiBitBool4False,
72 .erase = kMultiBitBool4False,
79 EXPECT_CALL(flash_ctrl_, DataErase(0, kFlashCtrlEraseTypeBank))
80 .WillOnce(Return(err0));
81 EXPECT_CALL(flash_ctrl_, DataErase(FLASH_CTRL_PARAM_BYTES_PER_BANK,
82 kFlashCtrlEraseTypeBank))
83 .WillOnce(Return(err1));
91 .read = kMultiBitBool4False,
92 .write = kMultiBitBool4False,
93 .erase = kMultiBitBool4True,
95 EXPECT_CALL(flash_ctrl_, DataErase(addr, kFlashCtrlEraseTypePage))
96 .WillOnce(Return(err0));
97 EXPECT_CALL(flash_ctrl_, DataErase(addr + FLASH_CTRL_PARAM_BYTES_PER_PAGE,
98 kFlashCtrlEraseTypePage))
99 .WillOnce(Return(err1));
105 EXPECT_CALL(flash_ctrl_, DataEraseVerify(0, kFlashCtrlEraseTypeBank))
106 .WillOnce(Return(err0));
107 EXPECT_CALL(flash_ctrl_, DataEraseVerify(FLASH_CTRL_PARAM_BYTES_PER_BANK,
108 kFlashCtrlEraseTypeBank))
109 .WillOnce(Return(err1));
114 .
opcode = kSpiDeviceOpcodeChipErase,
115 .address = kSpiDeviceNoAddress,
116 .payload_byte_count = 0,
123 .
opcode = kSpiDeviceOpcodeSectorErase,
125 .payload_byte_count = 0,
130 spi_device_cmd_t PageProgramCmd(uint32_t address,
size_t payload_byte_count) {
132 .
opcode = kSpiDeviceOpcodePageProgram,
134 .payload_byte_count = payload_byte_count,
136 EXPECT_LE(payload_byte_count, kSpiDevicePayloadAreaNumBytes);
137 for (
size_t i = 0; i < payload_byte_count; ++i) {
138 cmd.payload[i] =
static_cast<uint8_t
>(i);
146 .
opcode = kSpiDeviceOpcodeReset,
147 .address = kSpiDeviceNoAddress,
148 .payload_byte_count = 0,