From 4ded0f34576585747a38092c7fb8c5d2a2f5200e Mon Sep 17 00:00:00 2001
From: Mathieu Kardous <mathieu.kardous@silabs.com>
Date: Thu, 15 Aug 2024 08:07:51 -0400
Subject: [PATCH 1/8] Update all sdks to new verions

---
 .gitmodules                                | 6 +++---
 third_party/silabs/simplicity_sdk          | 2 +-
 third_party/silabs/wifi_sdk                | 2 +-
 third_party/silabs/wiseconnect-wifi-bt-sdk | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/.gitmodules b/.gitmodules
index 0b015f8d14cd16..78a6cabb940d05 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -213,17 +213,17 @@
 [submodule "third_party/silabs/simplicity_sdk"]
 	path = third_party/silabs/simplicity_sdk
 	url = https://github.com/SiliconLabs/simplicity_sdk.git
-	branch = v2024.6.0
+	branch = v2024.6.1-0
 	platforms = silabs
 [submodule "third_party/silabs/wiseconnect-wifi-bt-sdk"]
 	path = third_party/silabs/wiseconnect-wifi-bt-sdk
 	url = https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk.git
-	branch = 2.8.2
+	branch = 2.10.0
 	platforms = silabs
 [submodule "third_party/silabs/wifi_sdk"]
 	path = third_party/silabs/wifi_sdk
 	url = https://github.com/SiliconLabs/wiseconnect.git
-	branch = v3.3.0
+	branch = v3.3.1
 	platforms = silabs
 [submodule "editline"]
 	path = third_party/editline/repo
diff --git a/third_party/silabs/simplicity_sdk b/third_party/silabs/simplicity_sdk
index a1a37fa7dda1f7..aa5ce2e835dfdc 160000
--- a/third_party/silabs/simplicity_sdk
+++ b/third_party/silabs/simplicity_sdk
@@ -1 +1 @@
-Subproject commit a1a37fa7dda1f76ea70229aa4ffe2e47cb066edc
+Subproject commit aa5ce2e835dfdce8c20fb828f27d3a261946f946
diff --git a/third_party/silabs/wifi_sdk b/third_party/silabs/wifi_sdk
index e97a0ed00ddda3..841ea3f7e0e8ce 160000
--- a/third_party/silabs/wifi_sdk
+++ b/third_party/silabs/wifi_sdk
@@ -1 +1 @@
-Subproject commit e97a0ed00ddda347a8a39e8276f470e1c5fea469
+Subproject commit 841ea3f7e0e8ce64a160ae2354e747260a61b1e9
diff --git a/third_party/silabs/wiseconnect-wifi-bt-sdk b/third_party/silabs/wiseconnect-wifi-bt-sdk
index c3843e95e63f84..f94b83d050fe62 160000
--- a/third_party/silabs/wiseconnect-wifi-bt-sdk
+++ b/third_party/silabs/wiseconnect-wifi-bt-sdk
@@ -1 +1 @@
-Subproject commit c3843e95e63f84e301a2727f7b3c26125818b53a
+Subproject commit f94b83d050fe6200c5ec2dacfafa2edc92ad5ef3

From a3872295b2f41ded83a953b6bd40e7e6b065fb66 Mon Sep 17 00:00:00 2001
From: Mathieu Kardous <mathieu.kardous@silabs.com>
Date: Thu, 15 Aug 2024 08:38:39 -0400
Subject: [PATCH 2/8] 9116 changes to support sdk update

---
 examples/platform/silabs/efr32/rs911x/rsi_if.c | 6 +++---
 third_party/silabs/efr32_sdk.gni               | 2 ++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/examples/platform/silabs/efr32/rs911x/rsi_if.c b/examples/platform/silabs/efr32/rs911x/rsi_if.c
index a08e2a2f292de1..e4d6f51bf0ded9 100644
--- a/examples/platform/silabs/efr32/rs911x/rsi_if.c
+++ b/examples/platform/silabs/efr32/rs911x/rsi_if.c
@@ -511,9 +511,9 @@ static void wfx_rsi_save_ap_info() // translation
     case SME_WEP:
         wfx_rsi.sec.security = WFX_SEC_WEP;
         break;
-    case SME_WPA3_TRANSITION:
+    case SME_WPA3_PERSONAL_TRANSITION:
 #if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
-    case SME_WPA3:
+    case SME_WPA3_PERSONAL:
         wfx_rsi.sec.security = WFX_SEC_WPA3;
 #else
         wfx_rsi.sec.security = WFX_SEC_WPA2;
@@ -557,7 +557,7 @@ static void wfx_rsi_do_join(void)
             break;
 #if WIFI_ENABLE_SECURITY_WPA3_TRANSITION
         case WFX_SEC_WPA3:
-            connect_security_mode = RSI_WPA3_TRANSITION;
+            connect_security_mode = RSI_WPA3_PERSONAL_TRANSITION;
             break;
 #endif // WIFI_ENABLE_SECURITY_WPA3_TRANSITION
         case WFX_SEC_NONE:
diff --git a/third_party/silabs/efr32_sdk.gni b/third_party/silabs/efr32_sdk.gni
index c9126d02e43a9f..617dfd10facb95 100644
--- a/third_party/silabs/efr32_sdk.gni
+++ b/third_party/silabs/efr32_sdk.gni
@@ -485,6 +485,8 @@ template("efr32_sdk") {
         "RSI_LITTLE_ENDIAN=1",
         "SLI_SI91X_ENABLE_BLE=1",
         "SL_SI91X_ENABLE_LITTLE_ENDIAN=1",
+        "RSI_BLE_MAX_NBR_PERIPHERALS=1",
+        "RSI_BLE_MAX_NBR_CENTRALS=1",
       ]
     }
 

From 29a55cc96805aa870c1178a66d476ebc97e82b18 Mon Sep 17 00:00:00 2001
From: Mathieu Kardous <mathieu.kardous@silabs.com>
Date: Thu, 15 Aug 2024 08:56:34 -0400
Subject: [PATCH 3/8] 917 changes to support sdk update

---
 examples/platform/silabs/FreeRTOSConfig.h     |  2 +-
 .../silabs/SiWx917/SiWx917/sl_wifi_if.cpp     | 98 ++++++-------------
 examples/platform/silabs/display/demo-ui.c    | 14 ++-
 examples/platform/silabs/wfx_rsi.h            |  1 -
 third_party/silabs/SiWx917_sdk.gni            | 20 ----
 5 files changed, 42 insertions(+), 93 deletions(-)

diff --git a/examples/platform/silabs/FreeRTOSConfig.h b/examples/platform/silabs/FreeRTOSConfig.h
index d2805c40654632..b27c775d9b7a54 100644
--- a/examples/platform/silabs/FreeRTOSConfig.h
+++ b/examples/platform/silabs/FreeRTOSConfig.h
@@ -150,7 +150,7 @@ extern uint32_t SystemCoreClock;
 #define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 70
 #define configPRE_SLEEP_PROCESSING(x)
 #define configPOST_SLEEP_PROCESSING(x)
-#define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING(x) sl_si91x_pre_supress_ticks_and_sleep(&x)
+#define configPRE_SUPPRESS_TICKS_AND_SLEEP_PROCESSING(x)
 #else
 #define configUSE_TICKLESS_IDLE 0
 #endif // SL_CATALOG_POWER_MANAGER_PRESENT
diff --git a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
index bfdedbfe82bb13..693c70051df086 100644
--- a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
+++ b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
@@ -15,6 +15,10 @@
  *    limitations under the License.
  */
 
+/*
+ * This file implements the interface to the wifi sdk
+ */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -23,38 +27,45 @@
 #include "sl_matter_wifi_config.h"
 #endif // SL_MATTER_GN_BUILD
 
+#include "FreeRTOS.h"
+#include "ble_config.h"
+#include "dhcp_client.h"
+#include "event_groups.h"
+#include "sl_board_configuration.h"
 #include "sl_status.h"
+#include "task.h"
+#include "wfx_host_events.h"
+#include "wfx_rsi.h"
 #include <app/icd/server/ICDServerConfig.h>
 #include <inet/IPAddress.h>
 #include <lib/support/logging/CHIPLogging.h>
 
-#include "FreeRTOS.h"
-#include "event_groups.h"
-#include "sl_board_configuration.h"
 extern "C" {
+#include "sl_net.h"
+#include "sl_si91x_driver.h"
+#include "sl_si91x_host_interface.h"
+#include "sl_si91x_m4_ps.h"
 #include "sl_si91x_types.h"
+#include "sl_wifi.h"
+#include "sl_wifi_callback_framework.h"
 #include "sl_wifi_constants.h"
 #include "sl_wifi_types.h"
 #include "sl_wlan_config.h"
+#include "wfx_host_events.h"
+#if SL_MBEDTLS_USE_TINYCRYPT
+#include "sl_si91x_constants.h"
+#include "sl_si91x_trng.h"
+#endif // SL_MBEDTLS_USE_TINYCRYPT
 }
-#include "task.h"
 
 #if (EXP_BOARD)
 #include "rsi_bt_common_apis.h"
 #endif
 
-#include "ble_config.h"
-
 #if CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI91X_MCU_INTERFACE
 #include "rsi_rom_power_save.h"
 #include "sl_si91x_button_pin_config.h"
-#if DISPLAY_ENABLED
-#include "sl_memlcd.h"
-#endif // DISPLAY_ENABLED
-extern "C" {
-#include "sl_si91x_driver.h"
-#include "sl_si91x_m4_ps.h"
-}
+#include "sl_si91x_power_manager.h"
 
 namespace {
 // TODO: should be removed once we are getting the press interrupt for button 0 with sleep
@@ -67,9 +78,6 @@ bool ps_requirement_added = false;
 } // namespace
 #endif // CHIP_CONFIG_ENABLE_ICD_SERVER && SLI_SI91X_MCU_INTERFACE
 
-#include "dhcp_client.h"
-#include "wfx_host_events.h"
-#include "wfx_rsi.h"
 #define ADV_SCAN_THRESHOLD -40
 #define ADV_RSSI_TOLERANCE_THRESHOLD 5
 #define ADV_ACTIVE_SCAN_DURATION 15
@@ -79,17 +87,9 @@ bool ps_requirement_added = false;
 
 // TODO: Confirm that this value works for size and timing
 #define WFX_QUEUE_SIZE 10
-extern "C" {
-#include "sl_net.h"
-#include "sl_si91x_host_interface.h"
-#include "sl_wifi.h"
-#include "sl_wifi_callback_framework.h"
-#include "wfx_host_events.h"
-#if SL_MBEDTLS_USE_TINYCRYPT
-#include "sl_si91x_constants.h"
-#include "sl_si91x_trng.h"
-#endif // SL_MBEDTLS_USE_TINYCRYPT
-}
+
+// TODO: Figure out why we actually need this, we are already handling failure and retries somewhere else.
+#define WIFI_SCAN_TIMEOUT_TICK 10000
 
 WfxRsi_t wfx_rsi;
 
@@ -109,20 +109,9 @@ bool is_wifi_disconnection_event = false;
 uint32_t retryInterval                 = WLAN_MIN_RETRY_TIMER_MS;
 volatile bool scan_results_complete    = false;
 volatile bool bg_scan_results_complete = false;
-
-// TODO: Figure out why we actually need this, we are already handling failure and retries somewhere else.
-#define WIFI_SCAN_TIMEOUT_TICK 10000
-
 extern osSemaphoreId_t sl_rs_ble_init_sem;
-
-/*
- * This file implements the interface to the wifi sdk
- */
-
 static wfx_wifi_scan_ext_t temp_reset;
-
 volatile sl_status_t callback_status = SL_STATUS_OK;
-
 // Scan semaphore
 static osSemaphoreId_t sScanSemaphore;
 // DHCP Poll timer
@@ -319,28 +308,6 @@ void sl_si91x_invoke_btn_press_event()
     }
 #endif // ENABLE_CHIP_SHELL
 }
-
-/******************************************************************
- * @fn   sl_app_sleep_ready()
- * @brief
- *       Called from the supress ticks from tickless to check if it
- *       is ok to go to sleep
- * @param[in] None
- * @return
- *        None
- *********************************************************************/
-uint32_t sl_app_sleep_ready()
-{
-    if (wfx_rsi.dev_state & WFX_RSI_ST_SLEEP_READY)
-    {
-#if DISPLAY_ENABLED
-        // Powering down the LCD
-        sl_memlcd_power_on(NULL, false);
-#endif /* DISPLAY_ENABLED */
-        return true;
-    }
-    return false;
-}
 #endif // SLI_SI91X_MCU_INTERFACE
 
 /******************************************************************
@@ -370,14 +337,7 @@ int32_t wfx_rsi_power_save(rsi_power_save_profile_mode_t sl_si91x_ble_state, sl_
         ChipLogError(DeviceLayer, "sl_wifi_set_performance_profile failed: 0x%lx", static_cast<uint32_t>(status));
         return status;
     }
-    if (sl_si91x_wifi_state == HIGH_PERFORMANCE)
-    {
-        wfx_rsi.dev_state &= ~(WFX_RSI_ST_SLEEP_READY);
-    }
-    else
-    {
-        wfx_rsi.dev_state |= WFX_RSI_ST_SLEEP_READY;
-    }
+
     return status;
 }
 #endif /* CHIP_CONFIG_ENABLE_ICD_SERVER */
@@ -687,7 +647,7 @@ static sl_status_t wfx_rsi_do_join(void)
     case WFX_SEC_WPA3:
         ap.security = SL_WIFI_WPA3_TRANSITION;
 #else
-        ap.security          = SL_WIFI_WPA_WPA2_MIXED;
+        ap.security = SL_WIFI_WPA_WPA2_MIXED;
 #endif // WIFI_ENABLE_SECURITY_WPA3_TRANSITION
         break;
     case WFX_SEC_NONE:
diff --git a/examples/platform/silabs/display/demo-ui.c b/examples/platform/silabs/display/demo-ui.c
index 479af92fd5bb90..e0fe37ec9cb09b 100644
--- a/examples/platform/silabs/display/demo-ui.c
+++ b/examples/platform/silabs/display/demo-ui.c
@@ -25,6 +25,7 @@
 #include "glib.h"
 #include "sl_component_catalog.h"
 #include "sl_memlcd.h"
+#include <app/icd/server/ICDServerConfig.h>
 #if SL_WIFI && !SLI_SI91X_MCU_INTERFACE
 #include "spi_multiplex.h"
 #endif // SL_WIFI && !SLI_SI91X_MCU_INTERFACE
@@ -106,9 +107,12 @@ void demoUIInit(GLIB_Context_t * context)
 sl_status_t updateDisplay(void)
 {
     sl_status_t status = SL_STATUS_OK;
-#if SLI_SI91X_MCU_INTERFACE && SL_ICD_ENABLED && DISPLAY_ENABLED
+
+#if SLI_SI91X_MCU_INTERFACE && CHIP_CONFIG_ENABLE_ICD_SERVER
+    // In sleep, memlcd will not be retained so re-initialize MEMLCD interface after sleep wakeup
     sl_memlcd_post_wakeup_init();
-#endif // SLI_SI91X_MCU_INTERFACE && SL_ICD_ENABLED && DISPLAY_ENABLED
+#endif // SLI_SI91X_MCU_INTERFACE && SL_ICD_ENABLED && CHIP_CONFIG_ENABLE_ICD_SERVER
+
 #if SL_LCDCTRL_MUX
     status = sl_wfx_host_pre_lcd_spi_transfer();
     if (status != SL_STATUS_OK)
@@ -123,6 +127,12 @@ sl_status_t updateDisplay(void)
         return status;
 #endif // SL_LCDCTRL_MUX
 
+#if SLI_SI91X_MCU_INTERFACE && CHIP_CONFIG_ENABLE_ICD_SERVER
+    // MEMLCD is not a UULP component and not available in sleep so powering down before sleep and need to be re-initialized after
+    // sleep-wakeup
+    sl_memlcd_power_on(NULL, false);
+#endif // SLI_SI91X_MCU_INTERFACE && CHIP_CONFIG_ENABLE_ICD_SERVER
+
     return SL_STATUS_OK;
 }
 
diff --git a/examples/platform/silabs/wfx_rsi.h b/examples/platform/silabs/wfx_rsi.h
index c47a4ee0af251e..c559e1e7610880 100644
--- a/examples/platform/silabs/wfx_rsi.h
+++ b/examples/platform/silabs/wfx_rsi.h
@@ -62,7 +62,6 @@ typedef enum
     WFX_RSI_ST_STA_READY       = (WFX_RSI_ST_STA_CONNECTED | WFX_RSI_ST_STA_DHCP_DONE),
     WFX_RSI_ST_STARTED         = (1 << 9),  /* RSI task started			*/
     WFX_RSI_ST_SCANSTARTED     = (1 << 10), /* Scan Started				*/
-    WFX_RSI_ST_SLEEP_READY     = (1 << 11)  /* Notify the M4 to go to sleep*/
 } WfxStateType_e;
 
 typedef struct WfxEvent_s
diff --git a/third_party/silabs/SiWx917_sdk.gni b/third_party/silabs/SiWx917_sdk.gni
index 8c7635ad9235d3..1163cd28c99de3 100644
--- a/third_party/silabs/SiWx917_sdk.gni
+++ b/third_party/silabs/SiWx917_sdk.gni
@@ -27,17 +27,8 @@ import("silabs_board.gni")
 examples_plat_dir = "${chip_root}/examples/platform/silabs/SiWx917"
 
 declare_args() {
-  # Enable the Alarm Based Wakeup for 917 SoC when sleep is enabled
-  si91x_alarm_based_periodic_wakeup = false
-
-  # Periodic time at which the 917 SoC should wakeup
-  si91x_alarm_periodic_time = 30
-
   # option to select the crypto library
   sl_si91x_crypto_flavor = "tinycrypt"
-
-  # enable 917 SoC M4 sleep wakeup
-  si917_m4_sleep_enabled = false
 }
 
 # Defines an siwx917 SDK build target.
@@ -325,17 +316,6 @@ template("siwx917_sdk") {
         "SL_SI91X_POWER_MANAGER_UC_AVAILABLE=1",
         "SL_SI91X_TICKLESS_MODE=1",
       ]
-
-      if (si91x_alarm_based_periodic_wakeup) {
-        defines += [ "ALARM_PERIODIC_TIME=${si91x_alarm_periodic_time}" ]
-      }
-
-      if (si917_m4_sleep_enabled) {
-        defines += [
-          "SI917_M4_SLEEP_ENABLED=1",
-          "XTAL_OFF",
-        ]
-      }
     }
 
     if (sl_uart_log_output) {

From 4393408efaec3ae60f068ad38488086867dd8a2b Mon Sep 17 00:00:00 2001
From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com>
Date: Mon, 19 Aug 2024 16:57:40 -0400
Subject: [PATCH 4/8] Update to provision storage for configurable address

---
 .../provision/ProvisionStorageDefault.cpp     | 21 ++++++++++++-------
 .../provision/ProvisionStorageFlash.cpp       | 18 ++++++++++------
 .../silabs/provision/ProvisionStorage.h       |  5 +++--
 3 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/examples/platform/silabs/provision/ProvisionStorageDefault.cpp b/examples/platform/silabs/provision/ProvisionStorageDefault.cpp
index 1162323cda3d51..801eb9e0b70c2e 100644
--- a/examples/platform/silabs/provision/ProvisionStorageDefault.cpp
+++ b/examples/platform/silabs/provision/ProvisionStorageDefault.cpp
@@ -90,7 +90,7 @@ size_t RoundNearest(size_t n, size_t multiple)
 CHIP_ERROR WriteFile(Storage & store, SilabsConfig::Key offset_key, SilabsConfig::Key size_key, const ByteSpan & value)
 {
     uint32_t base_addr = 0;
-    ReturnErrorOnFailure(store.GetBaseAddress(base_addr));
+    ReturnErrorOnFailure(store.GetCredentialsBaseAddress(base_addr));
     if (0 == sCredentialsOffset)
     {
         ReturnErrorOnFailure(ErasePage(base_addr));
@@ -120,7 +120,7 @@ CHIP_ERROR WriteFile(Storage & store, SilabsConfig::Key offset_key, SilabsConfig
 CHIP_ERROR ReadFileByOffset(Storage & store, const char * description, uint32_t offset, uint32_t size, MutableByteSpan & value)
 {
     uint32_t base_addr = 0;
-    ReturnErrorOnFailure(store.GetBaseAddress(base_addr));
+    ReturnErrorOnFailure(store.GetCredentialsBaseAddress(base_addr));
 
     uint8_t * address = (uint8_t *) (base_addr + offset);
     ByteSpan span(address, size);
@@ -167,12 +167,7 @@ CHIP_ERROR Storage::Initialize(uint32_t flash_addr, uint32_t flash_size)
         setNvm3End(base_addr);
 #endif
     }
-    return SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_Creds_Base_Addr, base_addr);
-}
-
-CHIP_ERROR Storage::GetBaseAddress(uint32_t & value)
-{
-    return SilabsConfig::ReadConfigValue(SilabsConfig::kConfigKey_Creds_Base_Addr, value);
+    return SetCredentialsBaseAddress(base_addr);
 }
 
 CHIP_ERROR Storage::Commit()
@@ -625,6 +620,16 @@ CHIP_ERROR Storage::SignWithDeviceAttestationKey(const ByteSpan & message, Mutab
 // Other
 //
 
+CHIP_ERROR Storage::SetCredentialsBaseAddress(uint32_t addr)
+{
+    return SilabsConfig::WriteConfigValue(SilabsConfig::kConfigKey_Creds_Base_Addr, addr);
+}
+
+CHIP_ERROR Storage::GetCredentialsBaseAddress(uint32_t & addr)
+{
+    return SilabsConfig::ReadConfigValue(SilabsConfig::kConfigKey_Creds_Base_Addr, addr);
+}
+
 CHIP_ERROR Storage::SetProvisionVersion(const char * value, size_t size)
 {
     return SilabsConfig::WriteConfigValueStr(SilabsConfig::kConfigKey_Provision_Version, value, size);
diff --git a/examples/platform/silabs/provision/ProvisionStorageFlash.cpp b/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
index 35a32d6af8f5ec..af59d6560cd0fc 100644
--- a/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
+++ b/examples/platform/silabs/provision/ProvisionStorageFlash.cpp
@@ -296,12 +296,6 @@ CHIP_ERROR Storage::Commit()
     return CHIP_NO_ERROR;
 }
 
-CHIP_ERROR Storage::GetBaseAddress(uint32_t & value)
-{
-    value = (uint32_t) Flash::sReadOnlyPage;
-    return CHIP_NO_ERROR;
-}
-
 //
 // DeviceInstanceInfoProvider
 //
@@ -675,6 +669,18 @@ CHIP_ERROR Storage::SignWithDeviceAttestationKey(const ByteSpan & message, Mutab
 // Other
 //
 
+CHIP_ERROR Storage::SetCredentialsBaseAddress(uint32_t addr)
+{
+    Flash::sReadOnlyPage = (uint8_t *) addr;
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR Storage::GetCredentialsBaseAddress(uint32_t & addr)
+{
+    addr = (uint32_t) Flash::sReadOnlyPage;
+    return CHIP_NO_ERROR;
+}
+
 CHIP_ERROR Storage::SetProvisionVersion(const char * value, size_t size)
 {
     return Flash::Set(Parameters::ID::kVersion, value, size);
diff --git a/src/platform/silabs/provision/ProvisionStorage.h b/src/platform/silabs/provision/ProvisionStorage.h
index 3dbc78076442a7..ff012491ae3d7c 100644
--- a/src/platform/silabs/provision/ProvisionStorage.h
+++ b/src/platform/silabs/provision/ProvisionStorage.h
@@ -42,7 +42,7 @@ enum ID : uint16_t
     kFlashAddress  = 0x0101,
     kFlashSize     = 0x0102,
     kFlashPageSize = 0x0103,
-    kBaseAddress   = 0x0104,
+    kCredsAddress  = 0x0104,
     kCsrFile       = 0x0105,
     // Options,
     kVersion       = 0x0111,
@@ -175,7 +175,6 @@ struct Storage : public GenericStorage,
 
     CHIP_ERROR Initialize(uint32_t flash_addr = 0, uint32_t flash_size = 0);
     CHIP_ERROR Commit();
-    CHIP_ERROR GetBaseAddress(uint32_t & value);
 
     //
     // Generic Interface
@@ -233,6 +232,8 @@ struct Storage : public GenericStorage,
     // Other
     //
 
+    CHIP_ERROR SetCredentialsBaseAddress(uint32_t addr);
+    CHIP_ERROR GetCredentialsBaseAddress(uint32_t & addr);
     CHIP_ERROR GetSetupPayload(chip::MutableCharSpan & value);
     CHIP_ERROR SetProvisionRequest(bool value);
     CHIP_ERROR GetProvisionRequest(bool & value);

From 8fb0b22c2787c6e12c8c2b13e132473751c9f055 Mon Sep 17 00:00:00 2001
From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com>
Date: Mon, 19 Aug 2024 17:36:22 -0400
Subject: [PATCH 5/8] bump matter_support submodule

---
 third_party/silabs/matter_support | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/third_party/silabs/matter_support b/third_party/silabs/matter_support
index 8f476b30f9c604..e313f2dc9663da 160000
--- a/third_party/silabs/matter_support
+++ b/third_party/silabs/matter_support
@@ -1 +1 @@
-Subproject commit 8f476b30f9c6041de334abadcdb6852ade77790e
+Subproject commit e313f2dc9663da1ee4488eceba17dbff038f6a63

From 64e74f5396fe1ea8b8b60a673e818830f5e4e924 Mon Sep 17 00:00:00 2001
From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com>
Date: Mon, 19 Aug 2024 17:43:32 -0400
Subject: [PATCH 6/8] Bump docker image version used for silabs ci

---
 .github/workflows/examples-efr32.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml
index ed6f5b45fa0d1b..c236b4ca3db4c3 100644
--- a/.github/workflows/examples-efr32.yaml
+++ b/.github/workflows/examples-efr32.yaml
@@ -40,7 +40,7 @@ jobs:
     if: github.actor != 'restyled-io[bot]'
 
     container:
-      image: ghcr.io/project-chip/chip-build-efr32:73
+      image: ghcr.io/project-chip/chip-build-efr32:74
       volumes:
         - "/tmp/bloat_reports:/tmp/bloat_reports"
     steps:

From 70e68612e3ee0641fb1fa6182daedbb3cea25ede Mon Sep 17 00:00:00 2001
From: "Restyled.io" <commits@restyled.io>
Date: Mon, 19 Aug 2024 21:50:28 +0000
Subject: [PATCH 7/8] Restyled by clang-format

---
 examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
index 693c70051df086..9290d71af12aba 100644
--- a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
+++ b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
@@ -647,7 +647,7 @@ static sl_status_t wfx_rsi_do_join(void)
     case WFX_SEC_WPA3:
         ap.security = SL_WIFI_WPA3_TRANSITION;
 #else
-        ap.security = SL_WIFI_WPA_WPA2_MIXED;
+        ap.security          = SL_WIFI_WPA_WPA2_MIXED;
 #endif // WIFI_ENABLE_SECURITY_WPA3_TRANSITION
         break;
     case WFX_SEC_NONE:

From 52061a7c932b7417e7ed1ff6339a5b3cd9df7be1 Mon Sep 17 00:00:00 2001
From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com>
Date: Mon, 19 Aug 2024 23:05:58 -0400
Subject: [PATCH 8/8] Fix wifi ncp builds

---
 .../silabs/SiWx917/SiWx917/sl_wifi_if.cpp     |  1 -
 src/platform/silabs/rs911x/ble_config.h       | 19 ++++++++++++++++++-
 src/platform/silabs/rs911x/rsi_ble_config.h   |  6 +++++-
 3 files changed, 23 insertions(+), 3 deletions(-)
 mode change 120000 => 100644 src/platform/silabs/rs911x/ble_config.h

diff --git a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
index 9290d71af12aba..03b51540cf4b6d 100644
--- a/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
+++ b/examples/platform/silabs/SiWx917/SiWx917/sl_wifi_if.cpp
@@ -44,7 +44,6 @@ extern "C" {
 #include "sl_net.h"
 #include "sl_si91x_driver.h"
 #include "sl_si91x_host_interface.h"
-#include "sl_si91x_m4_ps.h"
 #include "sl_si91x_types.h"
 #include "sl_wifi.h"
 #include "sl_wifi_callback_framework.h"
diff --git a/src/platform/silabs/rs911x/ble_config.h b/src/platform/silabs/rs911x/ble_config.h
deleted file mode 120000
index 48a308dc911649..00000000000000
--- a/src/platform/silabs/rs911x/ble_config.h
+++ /dev/null
@@ -1 +0,0 @@
-rsi_ble_config.h
\ No newline at end of file
diff --git a/src/platform/silabs/rs911x/ble_config.h b/src/platform/silabs/rs911x/ble_config.h
new file mode 100644
index 00000000000000..0b8c951b4f63b1
--- /dev/null
+++ b/src/platform/silabs/rs911x/ble_config.h
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * @file  ble_config.h
+ * @brief
+ *******************************************************************************
+ * # License
+ * <b>Copyright 2020 Silicon Laboratories Inc. www.silabs.com</b>
+ *******************************************************************************
+ *
+ * The licensor of this software is Silicon Laboratories Inc. Your use of this
+ * software is governed by the terms of Silicon Labs Master Software License
+ * Agreement (MSLA) available at
+ * www.silabs.com/about-us/legal/master-software-license-agreement. This
+ * software is distributed to you in Source Code format and is governed by the
+ * sections of the MSLA applicable to Source Code.
+ *
+ ******************************************************************************/
+
+#include <rsi_ble_config.h>
diff --git a/src/platform/silabs/rs911x/rsi_ble_config.h b/src/platform/silabs/rs911x/rsi_ble_config.h
index f5442578e5d013..781ad80a29e7d7 100644
--- a/src/platform/silabs/rs911x/rsi_ble_config.h
+++ b/src/platform/silabs/rs911x/rsi_ble_config.h
@@ -24,6 +24,10 @@
 #include <rsi_data_types.h>
 #endif
 
+#if SL_MATTER_GN_BUILD == 0
+#include "sl_matter_wifi_config.h"
+#endif // SL_MATTER_GN_BUILD
+
 /******************************************************
  * *                      Macros
  * ******************************************************/
@@ -107,7 +111,7 @@
 #else
 #define RSI_BLE_MAX_NBR_ATT_REC (80)
 
-#if (SLI_SI91X_MCU_INTERFACE | EXP_BOARD)
+#if (EXP_BOARD)
 #define RSI_BLE_MAX_NBR_PERIPHERALS (3)
 #else
 #define RSI_BLE_MAX_NBR_SLAVES (3)