Software APIs
mock_flash_ctrl.h
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_MOCK_FLASH_CTRL_H_
6 #define OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_MOCK_FLASH_CTRL_H_
7 
8 #include "gmock/gmock.h"
9 #include "sw/device/lib/base/global_mock.h"
10 #include "sw/device/silicon_creator/lib/drivers/flash_ctrl.h"
11 
12 namespace rom_test {
13 namespace internal {
14 
15 /**
16  * Mock class for flash_ctrl.
17  */
18 class MockFlashCtrl : public global_mock::GlobalMock<MockFlashCtrl> {
19  public:
20  MOCK_METHOD(void, Init, ());
21  MOCK_METHOD(void, StatusGet, (flash_ctrl_status_t *));
22  MOCK_METHOD(void, ErrorCodeGet, (flash_ctrl_error_code_t *));
23  MOCK_METHOD(rom_error_t, DataRead, (uint32_t, uint32_t, void *));
24  MOCK_METHOD(rom_error_t, InfoRead,
25  (const flash_ctrl_info_page_t *, uint32_t, uint32_t, void *));
26  MOCK_METHOD(rom_error_t, DataWrite, (uint32_t, uint32_t, const void *));
27  MOCK_METHOD(rom_error_t, InfoWrite,
28  (const flash_ctrl_info_page_t *, uint32_t, uint32_t,
29  const void *));
30  MOCK_METHOD(rom_error_t, DataErase, (uint32_t, flash_ctrl_erase_type_t));
31  MOCK_METHOD(rom_error_t, DataEraseVerify,
32  (uint32_t, flash_ctrl_erase_type_t));
33  MOCK_METHOD(rom_error_t, InfoErase,
34  (const flash_ctrl_info_page_t *, flash_ctrl_erase_type_t));
35  MOCK_METHOD(void, DataDefaultPermsSet, (flash_ctrl_perms_t));
36  MOCK_METHOD(void, InfoPermsSet,
38  MOCK_METHOD(flash_ctrl_cfg_t, DataDefaultCfgGet, ());
39  MOCK_METHOD(void, DataDefaultCfgSet, (flash_ctrl_cfg_t));
40  MOCK_METHOD(void, DataRegionProtect,
41  (flash_ctrl_region_index_t region, uint32_t page_offset,
42  uint32_t num_pages, flash_ctrl_perms_t perms,
44  MOCK_METHOD(void, InfoCfgSet,
46  MOCK_METHOD(void, BankErasePermsSet, (hardened_bool_t));
47  MOCK_METHOD(void, ExecSet, (uint32_t));
48  MOCK_METHOD(void, CreatorInfoPagesLockdown, ());
49 };
50 
51 } // namespace internal
52 
53 using MockFlashCtrl = testing::StrictMock<internal::MockFlashCtrl>;
54 using NiceMockFlashCtrl = testing::NiceMock<internal::MockFlashCtrl>;
55 
56 MATCHER_P3(FlashPerms, read, write, erase, "") {
57  return ::testing::Value(
58  arg,
59  ::testing::AllOf(::testing::Field(&flash_ctrl_perms_t::read, read),
60  ::testing::Field(&flash_ctrl_perms_t::write, write),
61  ::testing::Field(&flash_ctrl_perms_t::erase, erase)));
62 }
63 
64 MATCHER_P3(FlashCfg, scrambling, ecc, he, "") {
65  return ::testing::Value(
66  arg, ::testing::AllOf(
67  ::testing::Field(&flash_ctrl_cfg_t::scrambling, scrambling),
68  ::testing::Field(&flash_ctrl_cfg_t::ecc, ecc),
69  ::testing::Field(&flash_ctrl_cfg_t::he, he)));
70 }
71 
72 } // namespace rom_test
73 
74 #endif // OPENTITAN_SW_DEVICE_SILICON_CREATOR_LIB_DRIVERS_MOCK_FLASH_CTRL_H_