Skip to content

Commit 3761447

Browse files
Fix si917 init failure due to missing platform defines. Support factory provisioning with PSA for si917 (project-chip#34197)
1 parent fc52c4a commit 3761447

File tree

5 files changed

+36
-25
lines changed

5 files changed

+36
-25
lines changed

examples/platform/silabs/SiWx917/BUILD.gn

+6-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,12 @@ source_set("siwx917-matter-shell") {
115115

116116
config("siwx917-common-config") {
117117
defines = [ "OTA_PERIODIC_TIMEOUT=${ota_periodic_query_timeout_sec}" ]
118-
libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ]
118+
if (sl_si91x_crypto_flavor == "psa") {
119+
libs =
120+
[ "${sdk_support_root}/matter/provision/lib/libProvisionPSA_si917.a" ]
121+
} else {
122+
libs = [ "${sdk_support_root}/matter/provision/lib/libProvision_si917.a" ]
123+
}
119124

120125
if (!disable_lcd) {
121126
include_dirs = [ "${silabs_common_plat_dir}/display" ]

examples/platform/silabs/provision/ProvisionStorageDefault.cpp

+16-21
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "AttestationKey.h"
1818
#include "ProvisionStorage.h"
1919
#include <credentials/examples/DeviceAttestationCredsExample.h>
20-
#include <em_msc.h>
2120
#include <lib/support/BytesToHex.h>
2221
#include <lib/support/CHIPMemString.h>
2322
#include <lib/support/CodeUtils.h>
@@ -26,15 +25,20 @@
2625
#include <nvm3_default.h>
2726
#include <nvm3_hal_flash.h>
2827
#include <platform/CHIPDeviceConfig.h>
28+
#include <platform/silabs/MigrationManager.h>
2929
#include <platform/silabs/SilabsConfig.h>
30-
#include <psa/crypto.h>
3130
#include <silabs_creds.h>
3231
#ifdef SLI_SI91X_MCU_INTERFACE
3332
#include <sl_si91x_common_flash_intf.h>
33+
#else
34+
#include <em_msc.h>
35+
#include <psa/crypto.h>
3436
#endif
3537

3638
#ifdef SL_PROVISION_GENERATOR
3739
extern void setNvm3End(uint32_t addr);
40+
#elif !SL_MATTER_GN_BUILD
41+
#include <sl_matter_provision_config.h>
3842
#endif
3943

4044
extern uint8_t linker_nvm_end[];
@@ -535,7 +539,7 @@ CHIP_ERROR Storage::GetDeviceAttestationCert(MutableByteSpan & value)
535539
return err;
536540
}
537541

538-
#ifdef SLI_SI91X_MCU_INTERFACE
542+
#if defined(SLI_SI91X_MCU_INTERFACE) && defined(SL_MBEDTLS_USE_TINYCRYPT)
539543
CHIP_ERROR Storage::SetDeviceAttestationKey(const ByteSpan & value)
540544
{
541545
return SilabsConfig::WriteConfigValueBin(SilabsConfig::kConfigKey_Creds_KeyId, value.data(), value.size());
@@ -573,7 +577,7 @@ CHIP_ERROR Storage::SignWithDeviceAttestationKey(const ByteSpan & message, Mutab
573577
}
574578
}
575579

576-
#else // SLI_SI91X_MCU_INTERFACEX_MCU_INTERFACEX_MCU_INTERFACE
580+
#else
577581

578582
CHIP_ERROR Storage::SetDeviceAttestationKey(const ByteSpan & value)
579583
{
@@ -696,15 +700,6 @@ CHIP_ERROR Storage::GetTestEventTriggerKey(MutableByteSpan & keySpan)
696700

697701
} // namespace Provision
698702

699-
void MigrateUint32(uint32_t old_key, uint32_t new_key)
700-
{
701-
uint32_t value = 0;
702-
if (SilabsConfig::ConfigValueExists(old_key) && (CHIP_NO_ERROR == SilabsConfig::ReadConfigValue(old_key, value)))
703-
{
704-
SilabsConfig::WriteConfigValue(new_key, value);
705-
}
706-
}
707-
708703
void MigrateDacProvider(void)
709704
{
710705
constexpr uint32_t kOldKey_Creds_KeyId = SilabsConfigKey(SilabsConfig::kMatterConfig_KeyBase, 0x21);
@@ -716,14 +711,14 @@ void MigrateDacProvider(void)
716711
constexpr uint32_t kOldKey_Creds_CD_Offset = SilabsConfigKey(SilabsConfig::kMatterConfig_KeyBase, 0x27);
717712
constexpr uint32_t kOldKey_Creds_CD_Size = SilabsConfigKey(SilabsConfig::kMatterConfig_KeyBase, 0x28);
718713

719-
MigrateUint32(kOldKey_Creds_KeyId, SilabsConfig::kConfigKey_Creds_KeyId);
720-
MigrateUint32(kOldKey_Creds_Base_Addr, SilabsConfig::kConfigKey_Creds_Base_Addr);
721-
MigrateUint32(kOldKey_Creds_DAC_Offset, SilabsConfig::kConfigKey_Creds_DAC_Offset);
722-
MigrateUint32(kOldKey_Creds_DAC_Size, SilabsConfig::kConfigKey_Creds_DAC_Size);
723-
MigrateUint32(kOldKey_Creds_PAI_Offset, SilabsConfig::kConfigKey_Creds_PAI_Offset);
724-
MigrateUint32(kOldKey_Creds_PAI_Size, SilabsConfig::kConfigKey_Creds_PAI_Size);
725-
MigrateUint32(kOldKey_Creds_CD_Offset, SilabsConfig::kConfigKey_Creds_CD_Offset);
726-
MigrateUint32(kOldKey_Creds_CD_Size, SilabsConfig::kConfigKey_Creds_CD_Size);
714+
MigrationManager::MigrateUint32(kOldKey_Creds_KeyId, SilabsConfig::kConfigKey_Creds_KeyId);
715+
MigrationManager::MigrateUint32(kOldKey_Creds_Base_Addr, SilabsConfig::kConfigKey_Creds_Base_Addr);
716+
MigrationManager::MigrateUint32(kOldKey_Creds_DAC_Offset, SilabsConfig::kConfigKey_Creds_DAC_Offset);
717+
MigrationManager::MigrateUint32(kOldKey_Creds_DAC_Size, SilabsConfig::kConfigKey_Creds_DAC_Size);
718+
MigrationManager::MigrateUint32(kOldKey_Creds_PAI_Offset, SilabsConfig::kConfigKey_Creds_PAI_Offset);
719+
MigrationManager::MigrateUint32(kOldKey_Creds_PAI_Size, SilabsConfig::kConfigKey_Creds_PAI_Size);
720+
MigrationManager::MigrateUint32(kOldKey_Creds_CD_Offset, SilabsConfig::kConfigKey_Creds_CD_Offset);
721+
MigrationManager::MigrateUint32(kOldKey_Creds_CD_Size, SilabsConfig::kConfigKey_Creds_CD_Size);
727722
}
728723

729724
} // namespace Silabs

third_party/silabs/SiWx917_sdk.gni

+12-2
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ template("siwx917_sdk") {
188188
"SL_HEAP_SIZE=32768",
189189
"SL_WIFI=1",
190190
"CCP_SI917_BRINGUP=1",
191-
"SL_COMPONENT_CATALOG_PRESENT",
191+
"SL_COMPONENT_CATALOG_PRESENT=1",
192192
"RS911X_WIFI=1",
193193
"RSI_WLAN_ENABLE",
194194
"SLI_SI91X_ENABLE_OS=1",
@@ -226,7 +226,7 @@ template("siwx917_sdk") {
226226
"SL_SI91X_SI917_RAM_MEM_CONFIG=3",
227227
"SL_SI91x_DUAL_INTERRUPTS_ERRATA=1",
228228
"EXT_IRQ_COUNT=75",
229-
"FLASH_PAGE_SIZE=1",
229+
"FLASH_PAGE_SIZE=4096",
230230
"DEBUG_ENABLE=1",
231231
"ENABLE_DEBUG_MODULE=1",
232232
"SI91X_SYSRTC_PRESENT=1",
@@ -240,6 +240,16 @@ template("siwx917_sdk") {
240240
"configUSE_POSIX_ERRNO=1",
241241
"NVM3_LOCK_OVERRIDE=1",
242242
"SL_MEMORY_POOL_LIGHT=1",
243+
"SL_CODE_COMPONENT_CORE=core",
244+
"SLI_SI91X_MCU_EXTERNAL_LDO_FOR_PSRAM=1",
245+
"CLOCK_ROMDRIVER_PRESENT=1",
246+
"ULPSS_CLOCK_ROMDRIVER_PRESENT=1",
247+
"SL_SI91X_BOARD_INIT=1",
248+
"CRC_ROMDRIVER_PRESENT=1",
249+
"TIMER_ROMDRIVER_PRESENT=1",
250+
"UDMA_ROMDRIVER_PRESENT=1",
251+
"PLL_ROMDRIVER_PRESENT=1",
252+
"SL_MATTER_GN_BUILD=1",
243253
]
244254

245255
if (silabs_log_enabled && chip_logging) {

third_party/silabs/efr32_sdk.gni

+1
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,7 @@ template("efr32_sdk") {
432432
"SL_RAIL_UTIL_PA_CONFIG_HEADER=<sl_rail_util_pa_config.h>",
433433
"RADIO_CONFIG_DMP_SUPPORT=1",
434434
"SL_MATTER_BLE_EXTENDED_ADV=${sl_matter_ble_extended_adv}",
435+
"SL_MATTER_GN_BUILD=1",
435436
"SL_MEMORY_POOL_LIGHT=1",
436437
"SL_OPENTHREAD_STACK_FEATURES_CONFIG_FILE=\"sl_openthread_features_config.h\"",
437438
"SL_CSL_TIMEOUT=${sl_ot_csl_timeout_sec}",

0 commit comments

Comments
 (0)