17
17
#include " AttestationKey.h"
18
18
#include " ProvisionStorage.h"
19
19
#include < credentials/examples/DeviceAttestationCredsExample.h>
20
- #include < em_device.h>
21
20
#include < lib/support/BytesToHex.h>
22
21
#include < lib/support/CHIPMemString.h>
23
22
#include < lib/support/CodeUtils.h>
28
27
#include < platform/CHIPDeviceConfig.h>
29
28
#include < platform/silabs/MigrationManager.h>
30
29
#include < platform/silabs/SilabsConfig.h>
30
+ #include < platform/silabs/platformAbstraction/SilabsPlatform.h>
31
31
#include < silabs_creds.h>
32
32
#ifndef NDEBUG
33
33
#if defined(SL_MATTER_TEST_EVENT_TRIGGER_ENABLED) && (SL_MATTER_GN_BUILD == 0)
37
37
#ifdef OTA_ENCRYPTION_ENABLE
38
38
#include < platform/silabs/multi-ota/OtaTlvEncryptionKey.h>
39
39
#endif // OTA_ENCRYPTION_ENABLE
40
- #ifdef SLI_SI91X_MCU_INTERFACE
41
- #include < sl_si91x_common_flash_intf.h>
42
- #else
43
- #ifdef _SILICON_LABS_32B_SERIES_2
44
- #include < em_msc.h>
45
- #elif defined(_SILICON_LABS_32B_SERIES_3)
46
- #include " sl_se_manager.h"
47
- #include " sl_se_manager_types.h"
48
- #include < sl_se_manager_extmem.h>
49
- #endif // _SILICON_LABS_32B_SERIES_2
40
+ #ifndef SLI_SI91X_MCU_INTERFACE
50
41
#include < psa/crypto.h>
51
42
#endif
52
43
@@ -56,16 +47,6 @@ extern void setNvm3End(uint32_t addr);
56
47
#include < sl_matter_provision_config.h>
57
48
#endif
58
49
59
- #if defined(_SILICON_LABS_32B_SERIES_3)
60
- // To remove any ambiguities regarding the Flash aliases, use the below macro to ignore the 8 MSB.
61
- #define FLASH_GENERIC_MASK 0x00FFFFFF
62
- #define GENERIC_ADDRESS (addr ) ((addr) &FLASH_GENERIC_MASK)
63
-
64
- // Transforms any address into an address using the same alias as FLASH_BASE from the CMSIS.
65
- #define CMSIS_CONVERTED_ADDRESS (addr ) (GENERIC_ADDRESS(addr) | FLASH_BASE)
66
- sl_se_command_context_t cmd_ctx;
67
- #endif // _SILICON_LABS_32B_SERIES_3
68
-
69
50
extern uint8_t linker_nvm_end[];
70
51
71
52
using namespace chip ::Credentials;
@@ -86,42 +67,12 @@ size_t sCredentialsOffset = 0;
86
67
87
68
CHIP_ERROR ErasePage (uint32_t addr)
88
69
{
89
- #ifdef SLI_SI91X_MCU_INTERFACE
90
- rsi_flash_erase_sector ((uint32_t *) addr);
91
- #elif defined(_SILICON_LABS_32B_SERIES_2)
92
- MSC_ErasePage ((uint32_t *) addr);
93
- #elif defined(_SILICON_LABS_32B_SERIES_3)
94
- sl_status_t status;
95
- uint32_t * data_start = NULL ;
96
- size_t data_size;
97
-
98
- status = sl_se_data_region_get_location (&cmd_ctx, (void **) &data_start, &data_size);
99
- VerifyOrReturnError (status == SL_STATUS_OK, CHIP_ERROR (status));
100
- VerifyOrReturnError (GENERIC_ADDRESS (addr) > GENERIC_ADDRESS ((uint32_t ) data_start), CHIP_ERROR_INVALID_ADDRESS);
101
- status = sl_se_data_region_erase (&cmd_ctx, (void *) addr, 1 ); // Erase one page
102
- VerifyOrReturnError (status == SL_STATUS_OK, CHIP_ERROR (status));
103
- #endif
104
- return CHIP_NO_ERROR;
70
+ return chip::DeviceLayer::Silabs::GetPlatform ().FlashErasePage (addr);
105
71
}
106
72
107
73
CHIP_ERROR WritePage (uint32_t addr, const uint8_t * data, size_t size)
108
74
{
109
- #ifdef SLI_SI91X_MCU_INTERFACE
110
- rsi_flash_write ((uint32_t *) addr, (unsigned char *) data, size);
111
- #elif defined(_SILICON_LABS_32B_SERIES_2)
112
- MSC_WriteWord ((uint32_t *) addr, data, size);
113
- #elif defined(_SILICON_LABS_32B_SERIES_3)
114
- sl_status_t status;
115
- uint32_t * data_start = NULL ;
116
- size_t data_size;
117
-
118
- status = sl_se_data_region_get_location (&cmd_ctx, (void **) &data_start, &data_size);
119
- VerifyOrReturnError (status == SL_STATUS_OK, CHIP_ERROR (status));
120
- VerifyOrReturnError (GENERIC_ADDRESS (addr) > GENERIC_ADDRESS ((uint32_t ) data_start), CHIP_ERROR_INVALID_ADDRESS);
121
- status = sl_se_data_region_write (&cmd_ctx, (void *) addr, data, size);
122
- VerifyOrReturnError (status == SL_STATUS_OK, CHIP_ERROR (status));
123
- #endif
124
- return CHIP_NO_ERROR;
75
+ return chip::DeviceLayer::Silabs::GetPlatform ().FlashWritePage (addr, data, size);
125
76
}
126
77
127
78
size_t RoundNearest (size_t n, size_t multiple)
@@ -203,16 +154,8 @@ CHIP_ERROR Storage::Initialize(uint32_t flash_addr, uint32_t flash_size)
203
154
{
204
155
#ifndef SLI_SI91X_MCU_INTERFACE
205
156
base_addr = (flash_addr + flash_size - FLASH_PAGE_SIZE);
206
-
207
- #ifdef _SILICON_LABS_32B_SERIES_2
208
- MSC_Init ();
209
- #elif defined(_SILICON_LABS_32B_SERIES_3)
210
- sl_status_t status;
211
- status = sl_se_init ();
212
- VerifyOrReturnError (status == SL_STATUS_OK, CHIP_ERROR_INTERNAL);
213
- status = sl_se_init_command_context (&cmd_ctx);
214
- #endif // _SILICON_LABS_32B_SERIES
215
157
#endif // SLI_SI91X_MCU_INTERFACE
158
+ chip::DeviceLayer::Silabs::GetPlatform ().FlashInit ();
216
159
#ifdef SL_PROVISION_GENERATOR
217
160
setNvm3End (base_addr);
218
161
#endif
0 commit comments