Software APIs
mock_flash_ctrl.cc
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 #include "sw/device/silicon_creator/lib/drivers/mock_flash_ctrl.h"
6 
7 namespace rom_test {
8 extern "C" {
9 
10 void flash_ctrl_init(void) { MockFlashCtrl::Instance().Init(); }
11 
12 void flash_ctrl_status_get(flash_ctrl_status_t *status) {
13  MockFlashCtrl::Instance().StatusGet(status);
14 }
15 
16 void flash_ctrl_error_code_get(flash_ctrl_error_code_t *error_code) {
17  MockFlashCtrl::Instance().ErrorCodeGet(error_code);
18 }
19 
20 rom_error_t flash_ctrl_data_read(uint32_t addr, uint32_t word_count,
21  void *data) {
22  return MockFlashCtrl::Instance().DataRead(addr, word_count, data);
23 }
24 
25 rom_error_t flash_ctrl_info_read(const flash_ctrl_info_page_t *info_page,
26  uint32_t offset, uint32_t word_count,
27  void *data) {
28  return MockFlashCtrl::Instance().InfoRead(info_page, offset, word_count,
29  data);
30 }
31 
32 rom_error_t flash_ctrl_data_write(uint32_t addr, uint32_t word_count,
33  const void *data) {
34  return MockFlashCtrl::Instance().DataWrite(addr, word_count, data);
35 }
36 
37 rom_error_t flash_ctrl_info_write(const flash_ctrl_info_page_t *info_page,
38  uint32_t offset, uint32_t word_count,
39  const void *data) {
40  return MockFlashCtrl::Instance().InfoWrite(info_page, offset, word_count,
41  data);
42 }
43 
44 rom_error_t flash_ctrl_data_erase(uint32_t addr,
45  flash_ctrl_erase_type_t erase_type) {
46  return MockFlashCtrl::Instance().DataErase(addr, erase_type);
47 }
48 
49 rom_error_t flash_ctrl_data_erase_verify(uint32_t addr,
50  flash_ctrl_erase_type_t erase_type) {
51  return MockFlashCtrl::Instance().DataEraseVerify(addr, erase_type);
52 }
53 
54 rom_error_t flash_ctrl_info_erase(const flash_ctrl_info_page_t *info_page,
55  flash_ctrl_erase_type_t erase_type) {
56  return MockFlashCtrl::Instance().InfoErase(info_page, erase_type);
57 }
58 
59 void flash_ctrl_data_default_perms_set(flash_ctrl_perms_t perms) {
60  MockFlashCtrl::Instance().DataDefaultPermsSet(perms);
61 }
62 
63 void flash_ctrl_info_perms_set(const flash_ctrl_info_page_t *info_page,
64  flash_ctrl_perms_t perms) {
65  MockFlashCtrl::Instance().InfoPermsSet(info_page, perms);
66 }
67 
68 void flash_ctrl_data_default_cfg_set(flash_ctrl_cfg_t cfg) {
69  MockFlashCtrl::Instance().DataDefaultCfgSet(cfg);
70 }
71 
72 flash_ctrl_cfg_t flash_ctrl_data_default_cfg_get() {
73  return MockFlashCtrl::Instance().DataDefaultCfgGet();
74 }
75 
76 void flash_ctrl_info_cfg_set(const flash_ctrl_info_page_t *info_page,
77  flash_ctrl_cfg_t cfg) {
78  MockFlashCtrl::Instance().InfoCfgSet(info_page, cfg);
79 }
80 
81 void flash_ctrl_data_region_protect(flash_ctrl_region_index_t region,
82  uint32_t page_offset, uint32_t num_pages,
83  flash_ctrl_perms_t perms,
84  flash_ctrl_cfg_t cfg,
85  hardened_bool_t lock) {
86  MockFlashCtrl::Instance().DataRegionProtect(region, page_offset, num_pages,
87  perms, cfg, lock);
88 }
89 
90 void flash_ctrl_bank_erase_perms_set(hardened_bool_t enable) {
91  MockFlashCtrl::Instance().BankErasePermsSet(enable);
92 }
93 
94 void flash_ctrl_exec_set(uint32_t exec_val) {
95  MockFlashCtrl::Instance().ExecSet(exec_val);
96 }
97 
98 void flash_ctrl_creator_info_pages_lockdown(void) {
99  MockFlashCtrl::Instance().CreatorInfoPagesLockdown();
100 }
101 
102 } // extern "C"
103 } // namespace rom_test