diff --git a/boot/bootutil/src/swap_status_misc.c b/boot/bootutil/src/swap_status_misc.c
index ac6d231..b5fc1ed 100644
--- a/boot/bootutil/src/swap_status_misc.c
+++ b/boot/bootutil/src/swap_status_misc.c
@@ -305,6 +305,7 @@
     return rc;
 }
 
+#if defined (MCUBOOT_SWAP_STATUS_FAST_BOOT)
 static inline int
 boot_read_flag(const struct flash_area *fap, uint8_t *flag, uint32_t off)
 {
@@ -406,6 +407,7 @@
 
     return rc;
 }
+#endif
 
 int
 boot_read_swap_state(const struct flash_area *fap,
@@ -420,7 +422,6 @@
     bool buf_is_clean = false;
     bool is_primary = false;
     bool is_secondary = false;
-    bool is_scratch = fap->fa_id == FLASH_AREA_IMAGE_SCRATCH;
     uint32_t i;
 
     const struct flash_area *fap_stat = NULL;
@@ -436,23 +437,24 @@
         }
     }
 
-    rc = boot_read_swap_state_trailer(fap, state);
-
-    if (is_primary)
+#if defined(MCUBOOT_SWAP_STATUS_FAST_BOOT)
     {
-        if (state->image_ok == BOOT_FLAG_SET && state->copy_done == BOOT_FLAG_SET && state->magic == BOOT_MAGIC_GOOD)
-        {
-            return 0;
+        bool is_scratch = fap->fa_id == FLASH_AREA_IMAGE_SCRATCH;
+        boot_read_swap_state_trailer(fap, state);
+
+        if (is_primary) {
+            if (state->image_ok == BOOT_FLAG_SET && state->copy_done == BOOT_FLAG_SET && state->magic == BOOT_MAGIC_GOOD) {
+                return 0;
+            }
+        }
+
+        if (is_secondary || is_scratch) {
+            if (state->image_ok == BOOT_FLAG_UNSET && state->copy_done == BOOT_FLAG_UNSET && state->magic == BOOT_MAGIC_UNSET) {
+                return 0;
+            }
         }
     }
-
-    if (is_secondary || is_scratch)
-    {
-        if (state->image_ok == BOOT_FLAG_UNSET && state->copy_done == BOOT_FLAG_UNSET && state->magic == BOOT_MAGIC_UNSET)
-        {
-            return 0;
-        }
-    }
+#endif
 
     rc = flash_area_open(FLASH_AREA_IMAGE_SWAP_STATUS, &fap_stat);
     if (rc != 0) {
diff --git a/boot/cypress/BlinkyApp/BlinkyApp.mk b/boot/cypress/BlinkyApp/BlinkyApp.mk
index 0fd575f..5936e07 100644
--- a/boot/cypress/BlinkyApp/BlinkyApp.mk
+++ b/boot/cypress/BlinkyApp/BlinkyApp.mk
@@ -277,7 +277,7 @@
 
 # Disble wdt free hal call
 ifneq ($(DISABLE_WDT_FREE), 0)
-DEFINES_APP += -DISABLE_WDT_FREE
+DEFINES_APP += -DDISABLE_WDT_FREE
 endif
 
 pre_build:
diff --git a/boot/cypress/MCUBootApp/MCUBootApp.md b/boot/cypress/MCUBootApp/MCUBootApp.md
index 410bd4a..b5bc044 100644
--- a/boot/cypress/MCUBootApp/MCUBootApp.md
+++ b/boot/cypress/MCUBootApp/MCUBootApp.md
@@ -583,6 +583,9 @@
 Misaligned application_1 (secondary slot) - suggested address 0x18030200
 ```
 This gives the nearest larger address that satisfies the slot location requirements. Other errors, such as overlapping flash areas, are also checked and reported.
+
+To improve boot time user may specify build variables `MCUBOOT_SWAP_STATUS_FAST_BOOT=1` `USE_BOOTSTRAP=0` and comment out `MCUBOOT_VALIDATE_PRIMARY_SLOT` in "mcuboot_config.h" to achieve faser boot.
+
 ### Hardware limitations
 
 This application is created to demonstrate the MCUboot library features and not as a reference example. So, some considerations are taken.
diff --git a/boot/cypress/MCUBootApp/MCUBootApp.mk b/boot/cypress/MCUBootApp/MCUBootApp.mk
index 31dd40f..db0d950 100644
--- a/boot/cypress/MCUBootApp/MCUBootApp.mk
+++ b/boot/cypress/MCUBootApp/MCUBootApp.mk
@@ -42,6 +42,7 @@
 USE_SHARED_SLOT ?= 0
 FIH_PROFILE_LEVEL_LIST := OFF LOW MEDIUM HIGH
 FIH_PROFILE_LEVEL ?= MEDIUM
+MCUBOOT_SWAP_STATUS_FAST_BOOT ?= 0
 
 ifeq ($(BUILDCFG), Release)
 MCUBOOT_LOG_LEVEL ?= MCUBOOT_LOG_LEVEL_INFO
@@ -53,6 +54,10 @@
 $(error Only GCC ARM is supported at this moment)
 endif
 
+ifeq ($(MCUBOOT_SWAP_STATUS_FAST_BOOT), 1)
+DEFINES_APP += -DMCUBOOT_SWAP_STATUS_FAST_BOOT
+endif
+
 # Check FIH profile param
 ifneq ($(filter $(FIH_PROFILE_LEVEL), $(FIH_PROFILE_LEVEL_LIST)),)
 ifneq ($(FIH_PROFILE_LEVEL), OFF) 
diff --git a/boot/cypress/MCUBootApp/main.c b/boot/cypress/MCUBootApp/main.c
index 8c7bdd0..b526d77 100644
--- a/boot/cypress/MCUBootApp/main.c
+++ b/boot/cypress/MCUBootApp/main.c
@@ -25,13 +25,14 @@
 #include "cyhal.h"
 #include "cyhal_wdt.h"
 
+#include "cyw_platform_utils.h"
+
 #if defined CYW20829
 #include "cy_service_app.h"
 #endif
 
 #include "cybsp.h"
 #include "cy_retarget_io.h"
-#include "cyw_platform_utils.h"
 
 #if defined(CY_BOOT_USE_EXTERNAL_FLASH) || defined(CYW20829)
 #include "flash_qspi.h"
diff --git a/boot/cypress/Makefile b/boot/cypress/Makefile
index e901317..a444c04 100644
--- a/boot/cypress/Makefile
+++ b/boot/cypress/Makefile
@@ -65,7 +65,7 @@
 
 # Defines whether or not make all compile warnings into errors for application
 # source code (but not for library source code)
-WARN_AS_ERR = 0
+WARN_AS_ERR ?= 1
 
 ifneq ($(filter $(APP_NAME), $(APPS)),)
 include ./$(APP_NAME)/$(APP_NAME).mk
diff --git a/boot/cypress/platforms/BSP/XMC7000/CAT1C_SMIF.FLM b/boot/cypress/platforms/BSP/XMC7000/CAT1C_SMIF.FLM
index 1153f5d..bd9781a 100644
--- a/boot/cypress/platforms/BSP/XMC7000/CAT1C_SMIF.FLM
+++ b/boot/cypress/platforms/BSP/XMC7000/CAT1C_SMIF.FLM
Binary files differ
diff --git a/boot/cypress/platforms/BSP/XMC7000/cybsp_doc.h b/boot/cypress/platforms/BSP/XMC7000/cybsp_doc.h
index 1f9f0d6..30363dc 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cybsp_doc.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cybsp_doc.h
@@ -24,7 +24,7 @@
 #include "cyhal_pin_package.h"
 #endif
 /* CAT4 and CAT5 do not have configurators so the BSP defines pins in a non-generated header */
-#if defined(COMPONENT_CAT4) || defined(COMPONENT_CAT5)
+#if defined(COMPONENT_CAT4)
 #include "cybsp_pins.h"
 #else
 #include "cycfg.h"
@@ -357,11 +357,15 @@
 /** Pin: WIFI Host Wakeup \def CYBSP_WIFI_HOST_WAKE
  */
 
+#ifndef CYBSP_WIFI_HOST_WAKE_GPIO_DM
 /** WiFi host-wake GPIO drive mode */
 #define CYBSP_WIFI_HOST_WAKE_GPIO_DM (CYHAL_GPIO_DRIVE_ANALOG)
+#endif
+#ifndef CYBSP_WIFI_HOST_WAKE_IRQ_EVENT
 /** WiFi host-wake IRQ event */
 #define CYBSP_WIFI_HOST_WAKE_IRQ_EVENT (CYHAL_GPIO_IRQ_RISE)
 #endif
+#endif // ifdef CYBSP_WIFI_HOST_WAKE
 #ifdef CYBSP_BT_UART_RX
 /** Pin: BT UART RX \def CYBSP_BT_UART_RX
  */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cybsp_hw_config.h b/boot/cypress/platforms/BSP/XMC7000/cybsp_hw_config.h
index 580d49c..a6c9bad 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cybsp_hw_config.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cybsp_hw_config.h
@@ -28,6 +28,7 @@
 
 #include "cy_result.h"
 #include "cybsp_types.h"
+#include "cycfg_pins.h"
 
 #if defined(__cplusplus)
 extern "C" {
@@ -37,6 +38,13 @@
 #define CYBSP_USER_BTN_DRIVE          (CYHAL_GPIO_DRIVE_PULLUP)
 #endif
 
+#ifndef CYBSP_DEBUG_UART_CTS
+#define CYBSP_DEBUG_UART_CTS (NC)
+#endif
+#ifndef CYBSP_DEBUG_UART_RTS
+#define CYBSP_DEBUG_UART_RTS (NC)
+#endif
+
 #if defined(__cplusplus)
 }
 #endif
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg.c b/boot/cypress/platforms/BSP/XMC7000/cycfg.c
index f61f95b..734470f 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg.c
@@ -1,30 +1,31 @@
 /*******************************************************************************
-* File Name: cycfg.c
-*
-* Description:
-* Wrapper function to initialize all generated code.
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg.c
+ *
+ * Description:
+ * Simple wrapper containing all generated files and function to initialize
+ * all generated code.
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg.h"
 
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg.h b/boot/cypress/platforms/BSP/XMC7000/cycfg.h
index c650151..9528ebe 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg.h
@@ -1,38 +1,35 @@
 /*******************************************************************************
-* File Name: cycfg.h
-*
-* Description:
-* Simple wrapper header containing all generated files.
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg.h
+ *
+ * Description:
+ * Simple wrapper containing all generated files and function to initialize
+ * all generated code.
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_H)
 #define CYCFG_H
 
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
 #include "cycfg_notices.h"
 #include "cycfg_system.h"
 #include "cycfg_clocks.h"
@@ -40,14 +37,16 @@
 #include "cycfg_peripherals.h"
 #include "cycfg_pins.h"
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
 void init_cycfg_all(void);
 void cycfg_config_init(void);
 void cycfg_config_reservations(void);
 
-
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg.timestamp b/boot/cypress/platforms/BSP/XMC7000/cycfg.timestamp
index a2dfeb7..2f754ab 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg.timestamp
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg.timestamp
@@ -1,28 +1,27 @@
 /*******************************************************************************
-* File Name: cycfg.timestamp
-*
-* Description:
-* Sentinel file for determining if generated source is up to date.
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
-
+ * File Name: cycfg.timestamp
+ *
+ * Description:
+ * Sentinel file for determining if generated source is up to date.
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.c b/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.c
index 8d36f4e..4b16b75 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.c
@@ -1,73 +1,51 @@
 /*******************************************************************************
-* File Name: cycfg_clocks.c
-*
-* Description:
-* Clock configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_clocks.c
+ *
+ * Description:
+ * Clock configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg_clocks.h"
 
 #if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t peri_0_group_0_div_16_0_obj = 
-    {
-        .type = CYHAL_RSC_CLOCK,
-        .block_num = peri_0_group_0_div_16_0_HW,
-        .channel_num = peri_0_group_0_div_16_0_NUM,
-    };
-    const cyhal_resource_inst_t peri_0_group_0_div_8_2_obj = 
-    {
-        .type = CYHAL_RSC_CLOCK,
-        .block_num = peri_0_group_0_div_8_2_HW,
-        .channel_num = peri_0_group_0_div_8_2_NUM,
-    };
-    const cyhal_resource_inst_t peri_0_group_1_div_24_5_0_obj = 
-    {
-        .type = CYHAL_RSC_CLOCK,
-        .block_num = peri_0_group_1_div_24_5_0_HW,
-        .channel_num = peri_0_group_1_div_24_5_0_NUM,
-    };
-#endif //defined (CY_USING_HAL)
-
+const cyhal_resource_inst_t CYBSP_TRACE_CLK_DIV_obj =
+{
+    .type = CYHAL_RSC_CLOCK,
+    .block_num = CYBSP_TRACE_CLK_DIV_HW,
+    .channel_num = CYBSP_TRACE_CLK_DIV_NUM,
+};
+#endif /* defined (CY_USING_HAL) */
 
 void init_cycfg_clocks(void)
 {
-    Cy_SysClk_PeriPclkDisableDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_16_0_GRP_NUM, CY_SYSCLK_DIV_16_BIT, 0U);
-    Cy_SysClk_PeriPclkSetDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_16_0_GRP_NUM, CY_SYSCLK_DIV_16_BIT, 0U, 0U);
-    Cy_SysClk_PeriPclkEnableDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_16_0_GRP_NUM, CY_SYSCLK_DIV_16_BIT, 0U);
-    Cy_SysClk_PeriPclkDisableDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_8_2_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 2U);
-    Cy_SysClk_PeriPclkSetDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_8_2_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 2U, 0U);
-    Cy_SysClk_PeriPclkEnableDivider((en_clk_dst_t)PERI_0_GROUP_0_DIV_8_2_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 2U);
-    Cy_SysClk_PeriPclkDisableDivider((en_clk_dst_t)PERI_0_GROUP_1_DIV_24_5_0_GRP_NUM, CY_SYSCLK_DIV_24_5_BIT, 0U);
-    Cy_SysClk_PeriPclkSetFracDivider((en_clk_dst_t)PERI_0_GROUP_1_DIV_24_5_0_GRP_NUM, CY_SYSCLK_DIV_24_5_BIT, 0U, 105U, 11U);
-    Cy_SysClk_PeriPclkEnableDivider((en_clk_dst_t)PERI_0_GROUP_1_DIV_24_5_0_GRP_NUM, CY_SYSCLK_DIV_24_5_BIT, 0U);
+    Cy_SysClk_PeriPclkDisableDivider((en_clk_dst_t)CYBSP_TRACE_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 3U);
+    Cy_SysClk_PeriPclkSetDivider((en_clk_dst_t)CYBSP_TRACE_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 3U, 0U);
+    Cy_SysClk_PeriPclkEnableDivider((en_clk_dst_t)CYBSP_TRACE_CLK_DIV_GRP_NUM, CY_SYSCLK_DIV_8_BIT, 3U);
 }
-
 void reserve_cycfg_clocks(void)
 {
 #if defined (CY_USING_HAL)
-    cyhal_hwmgr_reserve(&peri_0_group_0_div_16_0_obj);
-    cyhal_hwmgr_reserve(&peri_0_group_0_div_8_2_obj);
-    cyhal_hwmgr_reserve(&peri_0_group_1_div_24_5_0_obj);
-#endif //defined (CY_USING_HAL)
+    cyhal_hwmgr_reserve(&CYBSP_TRACE_CLK_DIV_obj);
+#endif /* defined (CY_USING_HAL) */
 }
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.h
index a066ddc..0bb0ba4 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_clocks.h
@@ -1,84 +1,67 @@
 /*******************************************************************************
-* File Name: cycfg_clocks.h
-*
-* Description:
-* Clock configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_clocks.h
+ *
+ * Description:
+ * Clock configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_CLOCKS_H)
 #define CYCFG_CLOCKS_H
 
 #include "cycfg_notices.h"
 #include "cy_sysclk.h"
+
 #if defined (CY_USING_HAL)
-    #include "cyhal_hwmgr.h"
-#endif //defined (CY_USING_HAL)
+#include "cyhal_hwmgr.h"
+#endif /* defined (CY_USING_HAL) */
 
 #if defined(__cplusplus)
 extern "C" {
-#endif
+#endif /* defined(__cplusplus) */
 
-#define peri_0_group_0_div_16_0_ENABLED 1U
-#if defined (CY_USING_HAL)
-    #define peri_0_group_0_div_16_0_HW CYHAL_CLOCK_BLOCK_PERIPHERAL0_16BIT
-#endif //defined (CY_USING_HAL)
-#if !defined (CY_USING_HAL)
-    #define peri_0_group_0_div_16_0_HW CY_SYSCLK_DIV_16_BIT
-#endif //!defined (CY_USING_HAL)
-#define peri_0_group_0_div_16_0_NUM 0U
-#define PERI_0_GROUP_0_DIV_16_0_GRP_NUM (0U << PERI_PCLK_GR_NUM_Pos)
-#define peri_0_group_0_div_8_2_ENABLED 1U
-#if defined (CY_USING_HAL)
-    #define peri_0_group_0_div_8_2_HW CYHAL_CLOCK_BLOCK_PERIPHERAL0_8BIT
-#endif //defined (CY_USING_HAL)
-#if !defined (CY_USING_HAL)
-    #define peri_0_group_0_div_8_2_HW CY_SYSCLK_DIV_8_BIT
-#endif //!defined (CY_USING_HAL)
-#define peri_0_group_0_div_8_2_NUM 2U
-#define PERI_0_GROUP_0_DIV_8_2_GRP_NUM (0U << PERI_PCLK_GR_NUM_Pos)
-#define peri_0_group_1_div_24_5_0_ENABLED 1U
-#if defined (CY_USING_HAL)
-    #define peri_0_group_1_div_24_5_0_HW CYHAL_CLOCK_BLOCK_PERIPHERAL1_24_5BIT
-#endif //defined (CY_USING_HAL)
-#if !defined (CY_USING_HAL)
-    #define peri_0_group_1_div_24_5_0_HW CY_SYSCLK_DIV_24_5_BIT
-#endif //!defined (CY_USING_HAL)
-#define peri_0_group_1_div_24_5_0_NUM 0U
-#define PERI_0_GROUP_1_DIV_24_5_0_GRP_NUM (1U << PERI_PCLK_GR_NUM_Pos)
+#define CYBSP_TRACE_CLK_DIV_ENABLED 1U
+
+#if defined (CY_USING_HAL) || defined (CY_USING_HAL_LITE)
+#define CYBSP_TRACE_CLK_DIV_HW CYHAL_CLOCK_BLOCK_PERIPHERAL0_8BIT
+#endif /* defined (CY_USING_HAL) || defined (CY_USING_HAL_LITE) */
+
+#if !defined (CY_USING_HAL) && !defined (CY_USING_HAL_LITE)
+#define CYBSP_TRACE_CLK_DIV_HW CY_SYSCLK_DIV_8_BIT
+#endif /* !defined (CY_USING_HAL) && !defined (CY_USING_HAL_LITE) */
+
+#define CYBSP_TRACE_CLK_DIV_NUM 3U
+#define CYBSP_TRACE_CLK_DIV_GRP_NUM ((0U << PERI_PCLK_GR_NUM_Pos) | (0U << PERI_PCLK_INST_NUM_Pos))
 
 #if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t peri_0_group_0_div_16_0_obj;
-    extern const cyhal_resource_inst_t peri_0_group_0_div_8_2_obj;
-    extern const cyhal_resource_inst_t peri_0_group_1_div_24_5_0_obj;
-#endif //defined (CY_USING_HAL)
+extern const cyhal_resource_inst_t CYBSP_TRACE_CLK_DIV_obj;
+#endif /* defined (CY_USING_HAL) */
 
 void init_cycfg_clocks(void);
 void reserve_cycfg_clocks(void);
 
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_CLOCKS_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_notices.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_notices.h
index 7499cf0..318279d 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_notices.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_notices.h
@@ -1,46 +1,53 @@
 /*******************************************************************************
-* File Name: cycfg_notices.h
-*
-* Description:
-* Contains warnings and errors that occurred while generating code for the
-* design.
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_notices.h
+ *
+ * Description:
+ * Contains warnings and errors that occurred while generating code for the
+ * design.
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_NOTICES_H)
 #define CYCFG_NOTICES_H
 
-#ifdef CY_SUPPORTS_DEVICE_VALIDATION
-#ifndef XMC7100D_E272K4160
-    #error "Unexpected MPN; expected DEVICE:=XMC7100D-E272K4160. There may be an inconsistency between the *.modus file and the makefile target configuration device sets."
-#endif
-#endif
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
 
-#ifdef CY_SUPPORTS_COMPLETE_DEVICE_VALIDATION
-#ifndef XMC7100D_E272K4160
-    #error "Unexpected MPN; expected DEVICE:=XMC7100D-E272K4160. There may be an inconsistency between the *.modus file and the makefile target configuration device sets."
-#endif
-#endif
+#if defined(CY_SUPPORTS_DEVICE_VALIDATION)
+#if !defined(XMC7200D_E272K8384)
+#error "Unexpected MPN; expected DEVICE:=XMC7200D-E272K8384. There may be an inconsistency between the *.modus file and the makefile target configuration device sets."
+#endif /* !defined(XMC7200D_E272K8384) */
+#endif /* defined(CY_SUPPORTS_DEVICE_VALIDATION) */
 
+#if defined(CY_SUPPORTS_COMPLETE_DEVICE_VALIDATION)
+#if !defined(XMC7200D_E272K8384)
+#error "Unexpected MPN; expected DEVICE:=XMC7200D-E272K8384. There may be an inconsistency between the *.modus file and the makefile target configuration device sets."
+#endif /* !defined(XMC7200D_E272K8384) */
+#endif /* defined(CY_SUPPORTS_COMPLETE_DEVICE_VALIDATION) */
+
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_NOTICES_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.c b/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.c
index 3e65c19..3701533 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.c
@@ -1,30 +1,29 @@
 /*******************************************************************************
-* File Name: cycfg_peripherals.c
-*
-* Description:
-* Peripheral Hardware Block configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_peripherals.c
+ *
+ * Description:
+ * Peripheral Hardware Block configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg_peripherals.h"
-
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.h
index 2eec711..cb08758 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_peripherals.h
@@ -1,43 +1,42 @@
 /*******************************************************************************
-* File Name: cycfg_peripherals.h
-*
-* Description:
-* Peripheral Hardware Block configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_peripherals.h
+ *
+ * Description:
+ * Peripheral Hardware Block configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_PERIPHERALS_H)
 #define CYCFG_PERIPHERALS_H
 
 #include "cycfg_notices.h"
+
 #if defined(__cplusplus)
 extern "C" {
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_PERIPHERALS_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.c b/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.c
index d4ad893..9724f7d 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.c
@@ -1,34 +1,34 @@
 /*******************************************************************************
-* File Name: cycfg_pins.c
-*
-* Description:
-* Pin configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_pins.c
+ *
+ * Description:
+ * Pin configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg_pins.h"
 
-const cy_stc_gpio_pin_config_t CYBSP_WCO_IN_config = 
+const cy_stc_gpio_pin_config_t CYBSP_WCO_IN_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_ANALOG,
@@ -44,15 +44,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_WCO_IN_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_WCO_IN_PORT_NUM,
-        .channel_num = CYBSP_WCO_IN_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_WCO_OUT_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_WCO_IN_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_WCO_IN_PORT_NUM,
+    .channel_num = CYBSP_WCO_IN_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_WCO_OUT_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_ANALOG,
@@ -68,15 +70,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_WCO_OUT_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_WCO_OUT_PORT_NUM,
-        .channel_num = CYBSP_WCO_OUT_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_ECO_IN_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_WCO_OUT_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_WCO_OUT_PORT_NUM,
+    .channel_num = CYBSP_WCO_OUT_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_ECO_IN_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_ANALOG,
@@ -92,15 +96,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_ECO_IN_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_ECO_IN_PORT_NUM,
-        .channel_num = CYBSP_ECO_IN_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_ECO_OUT_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_ECO_IN_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_ECO_IN_PORT_NUM,
+    .channel_num = CYBSP_ECO_IN_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_ECO_OUT_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_ANALOG,
@@ -116,15 +122,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_ECO_OUT_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_ECO_OUT_PORT_NUM,
-        .channel_num = CYBSP_ECO_OUT_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_SWO_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_ECO_OUT_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_ECO_OUT_PORT_NUM,
+    .channel_num = CYBSP_ECO_OUT_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_SWO_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_STRONG_IN_OFF,
@@ -140,15 +148,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_SWO_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_SWO_PORT_NUM,
-        .channel_num = CYBSP_SWO_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_SWDCK_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_SWO_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_SWO_PORT_NUM,
+    .channel_num = CYBSP_SWO_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_SWDCK_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_PULLDOWN,
@@ -164,15 +174,17 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_SWDCK_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_SWDCK_PORT_NUM,
-        .channel_num = CYBSP_SWDCK_PIN,
-    };
-#endif //defined (CY_USING_HAL)
-const cy_stc_gpio_pin_config_t CYBSP_SWDIO_config = 
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_SWDCK_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_SWDCK_PORT_NUM,
+    .channel_num = CYBSP_SWDCK_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
+const cy_stc_gpio_pin_config_t CYBSP_SWDIO_config =
 {
     .outVal = 1,
     .driveMode = CY_GPIO_DM_PULLUP,
@@ -188,25 +200,22 @@
     .vrefSel = 0UL,
     .vohSel = 0UL,
 };
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t CYBSP_SWDIO_obj = 
-    {
-        .type = CYHAL_RSC_GPIO,
-        .block_num = CYBSP_SWDIO_PORT_NUM,
-        .channel_num = CYBSP_SWDIO_PIN,
-    };
-#endif //defined (CY_USING_HAL)
 
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+const cyhal_resource_inst_t CYBSP_SWDIO_obj =
+{
+    .type = CYHAL_RSC_GPIO,
+    .block_num = CYBSP_SWDIO_PORT_NUM,
+    .channel_num = CYBSP_SWDIO_PIN,
+};
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
 
 void init_cycfg_pins(void)
 {
-    Cy_GPIO_Pin_Init(CYBSP_ECO_IN_PORT, CYBSP_ECO_IN_PIN, &CYBSP_ECO_IN_config);
-    Cy_GPIO_Pin_Init(CYBSP_ECO_OUT_PORT, CYBSP_ECO_OUT_PIN, &CYBSP_ECO_OUT_config);
     Cy_GPIO_Pin_Init(CYBSP_SWO_PORT, CYBSP_SWO_PIN, &CYBSP_SWO_config);
     Cy_GPIO_Pin_Init(CYBSP_SWDCK_PORT, CYBSP_SWDCK_PIN, &CYBSP_SWDCK_config);
     Cy_GPIO_Pin_Init(CYBSP_SWDIO_PORT, CYBSP_SWDIO_PIN, &CYBSP_SWDIO_config);
 }
-
 void reserve_cycfg_pins(void)
 {
 #if defined (CY_USING_HAL)
@@ -217,5 +226,5 @@
     cyhal_hwmgr_reserve(&CYBSP_SWO_obj);
     cyhal_hwmgr_reserve(&CYBSP_SWDCK_obj);
     cyhal_hwmgr_reserve(&CYBSP_SWDIO_obj);
-#endif //defined (CY_USING_HAL)
+#endif /* defined (CY_USING_HAL) */
 }
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.h
index 2acf412..29b5cd9 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_pins.h
@@ -1,30 +1,30 @@
 /*******************************************************************************
-* File Name: cycfg_pins.h
-*
-* Description:
-* Pin configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_pins.h
+ *
+ * Description:
+ * Pin configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_PINS_H)
 #define CYCFG_PINS_H
@@ -32,66 +32,72 @@
 #include "cycfg_notices.h"
 #include "cy_gpio.h"
 #include "cycfg_routing.h"
+
 #if defined (CY_USING_HAL)
-    #include "cyhal_hwmgr.h"
-#endif //defined (CY_USING_HAL)
+#include "cyhal_hwmgr.h"
+#endif /* defined (CY_USING_HAL) */
+
+#if defined (CY_USING_HAL_LITE)
+#include "cyhal_hw_types.h"
+#endif /* defined (CY_USING_HAL_LITE) */
 
 #if defined(__cplusplus)
 extern "C" {
-#endif
+#endif /* defined(__cplusplus) */
 
-#if defined (CY_USING_HAL)
-    #define CYBSP_CAN_TX (P0_2)
-    #define CYBSP_CAN_RX (P0_3)
-    #define CYBSP_SPI_MISO (P10_0)
-    #define CYBSP_D12 CYBSP_SPI_MISO
-    #define CYBSP_SPI_MOSI (P10_1)
-    #define CYBSP_D11 CYBSP_SPI_MOSI
-    #define CYBSP_SPI_CLK (P10_2)
-    #define CYBSP_D13 CYBSP_SPI_CLK
-    #define CYBSP_SPI_CS (P10_3)
-    #define CYBSP_D10 CYBSP_SPI_CS
-    #define CYBSP_D9 (P10_4)
-    #define CYBSP_D8 (P10_5)
-    #define CYBSP_A8 (P12_0)
-    #define CYBSP_A9 (P12_1)
-    #define CYBSP_A10 (P12_2)
-    #define CYBSP_A11 (P12_3)
-    #define CYBSP_A12 (P12_4)
-    #define CYBSP_A13 (P12_5)
-    #define CYBSP_A14 (P12_6)
-    #define CYBSP_A15 (P12_7)
-    #define CYBSP_DEBUG_UART_RX (P13_0)
-    #define CYBSP_D0 CYBSP_DEBUG_UART_RX
-    #define CYBSP_DEBUG_UART_TX (P13_1)
-    #define CYBSP_D1 CYBSP_DEBUG_UART_TX
-    #define CYBSP_DEBUG_UART_RTS (P13_2)
-    #define CYBSP_D2 CYBSP_DEBUG_UART_RTS
-    #define CYBSP_DEBUG_UART_CTS (P13_3)
-    #define CYBSP_D3 CYBSP_DEBUG_UART_CTS
-    #define CYBSP_D4 (P13_4)
-    #define CYBSP_D5 (P13_5)
-    #define CYBSP_D6 (P13_6)
-    #define CYBSP_D7 (P13_7)
-    #define CYBSP_A0 (P14_0)
-    #define CYBSP_A1 (P14_1)
-    #define CYBSP_A2 (P14_2)
-    #define CYBSP_A3 (P14_3)
-    #define CYBSP_A4 (P14_4)
-    #define CYBSP_A5 (P14_5)
-    #define CYBSP_A6 (P14_6)
-    #define CYBSP_A7 (P14_7)
-    #define CYBSP_I2C_SDA (P15_1)
-    #define CYBSP_I2C_SCL (P15_2)
-    #define CYBSP_USER_LED (P16_1)
-    #define CYBSP_USER_LED1 CYBSP_USER_LED
-    #define LED1 CYBSP_USER_LED
-    #define CYBSP_USER_LED2 (P16_2)
-    #define LED2 CYBSP_USER_LED2
-    #define CYBSP_USER_LED3 (P16_3)
-    #define LED3 CYBSP_USER_LED3
-    #define CYBSP_USER_BTN2 (P17_3)
-#endif //defined (CY_USING_HAL)
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_CAN_TX (P0_2)
+#define CYBSP_CAN_RX (P0_3)
+#define CYBSP_SPI_MISO (P10_0)
+#define CYBSP_D12 CYBSP_SPI_MISO
+#define CYBSP_SPI_MOSI (P10_1)
+#define CYBSP_D11 CYBSP_SPI_MOSI
+#define CYBSP_SPI_CLK (P10_2)
+#define CYBSP_D13 CYBSP_SPI_CLK
+#define CYBSP_SPI_CS (P10_3)
+#define CYBSP_D10 CYBSP_SPI_CS
+#define CYBSP_D9 (P10_4)
+#define CYBSP_D8 (P10_5)
+#define CYBSP_A8 (P12_0)
+#define CYBSP_A9 (P12_1)
+#define CYBSP_A10 (P12_2)
+#define CYBSP_A11 (P12_3)
+#define CYBSP_A12 (P12_4)
+#define CYBSP_A13 (P12_5)
+#define CYBSP_A14 (P12_6)
+#define CYBSP_A15 (P12_7)
+#define CYBSP_DEBUG_UART_RX (P13_0)
+#define CYBSP_D0 CYBSP_DEBUG_UART_RX
+#define CYBSP_DEBUG_UART_TX (P13_1)
+#define CYBSP_D1 CYBSP_DEBUG_UART_TX
+#define CYBSP_DEBUG_UART_RTS (P13_2)
+#define CYBSP_D2 CYBSP_DEBUG_UART_RTS
+#define CYBSP_DEBUG_UART_CTS (P13_3)
+#define CYBSP_D3 CYBSP_DEBUG_UART_CTS
+#define CYBSP_D4 (P13_4)
+#define CYBSP_D5 (P13_5)
+#define CYBSP_D6 (P13_6)
+#define CYBSP_D7 (P13_7)
+#define CYBSP_A0 (P14_0)
+#define CYBSP_A1 (P14_1)
+#define CYBSP_A2 (P14_2)
+#define CYBSP_A3 (P14_3)
+#define CYBSP_A4 (P14_4)
+#define CYBSP_A5 (P14_5)
+#define CYBSP_A6 (P14_6)
+#define CYBSP_A7 (P14_7)
+#define CYBSP_I2C_SDA (P15_1)
+#define CYBSP_I2C_SCL (P15_2)
+#define CYBSP_USER_LED (P16_1)
+#define CYBSP_USER_LED1 CYBSP_USER_LED
+#define LED1 CYBSP_USER_LED
+#define CYBSP_USER_LED2 (P16_2)
+#define LED2 CYBSP_USER_LED2
+#define CYBSP_USER_LED3 (P16_3)
+#define LED3 CYBSP_USER_LED3
+#define CYBSP_USER_BTN2 (P17_3)
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_WCO_IN_ENABLED 1U
 #define CYBSP_WCO_IN_PORT GPIO_PRT21
 #define CYBSP_WCO_IN_PORT_NUM 21U
@@ -104,13 +110,15 @@
 #endif
 #define CYBSP_WCO_IN_HSIOM ioss_0_port_21_pin_0_HSIOM
 #define CYBSP_WCO_IN_IRQ ioss_interrupts_gpio_21_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_WCO_IN_HAL_PORT_PIN P21_0
-    #define CYBSP_WCO_IN P21_0
-    #define CYBSP_WCO_IN_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_WCO_IN_HAL_DIR CYHAL_GPIO_DIR_INPUT 
-    #define CYBSP_WCO_IN_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_WCO_IN_HAL_PORT_PIN P21_0
+#define CYBSP_WCO_IN P21_0
+#define CYBSP_WCO_IN_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_WCO_IN_HAL_DIR CYHAL_GPIO_DIR_INPUT 
+#define CYBSP_WCO_IN_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_WCO_OUT_ENABLED 1U
 #define CYBSP_WCO_OUT_PORT GPIO_PRT21
 #define CYBSP_WCO_OUT_PORT_NUM 21U
@@ -123,13 +131,15 @@
 #endif
 #define CYBSP_WCO_OUT_HSIOM ioss_0_port_21_pin_1_HSIOM
 #define CYBSP_WCO_OUT_IRQ ioss_interrupts_gpio_21_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_WCO_OUT_HAL_PORT_PIN P21_1
-    #define CYBSP_WCO_OUT P21_1
-    #define CYBSP_WCO_OUT_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_WCO_OUT_HAL_DIR CYHAL_GPIO_DIR_INPUT 
-    #define CYBSP_WCO_OUT_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_WCO_OUT_HAL_PORT_PIN P21_1
+#define CYBSP_WCO_OUT P21_1
+#define CYBSP_WCO_OUT_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_WCO_OUT_HAL_DIR CYHAL_GPIO_DIR_INPUT 
+#define CYBSP_WCO_OUT_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_ECO_IN_ENABLED 1U
 #define CYBSP_ECO_IN_PORT GPIO_PRT21
 #define CYBSP_ECO_IN_PORT_NUM 21U
@@ -142,13 +152,15 @@
 #endif
 #define CYBSP_ECO_IN_HSIOM ioss_0_port_21_pin_2_HSIOM
 #define CYBSP_ECO_IN_IRQ ioss_interrupts_gpio_21_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_ECO_IN_HAL_PORT_PIN P21_2
-    #define CYBSP_ECO_IN P21_2
-    #define CYBSP_ECO_IN_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_ECO_IN_HAL_DIR CYHAL_GPIO_DIR_INPUT 
-    #define CYBSP_ECO_IN_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_ECO_IN_HAL_PORT_PIN P21_2
+#define CYBSP_ECO_IN P21_2
+#define CYBSP_ECO_IN_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_ECO_IN_HAL_DIR CYHAL_GPIO_DIR_INPUT 
+#define CYBSP_ECO_IN_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_ECO_OUT_ENABLED 1U
 #define CYBSP_ECO_OUT_PORT GPIO_PRT21
 #define CYBSP_ECO_OUT_PORT_NUM 21U
@@ -161,20 +173,22 @@
 #endif
 #define CYBSP_ECO_OUT_HSIOM ioss_0_port_21_pin_3_HSIOM
 #define CYBSP_ECO_OUT_IRQ ioss_interrupts_gpio_21_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_ECO_OUT_HAL_PORT_PIN P21_3
-    #define CYBSP_ECO_OUT P21_3
-    #define CYBSP_ECO_OUT_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_ECO_OUT_HAL_DIR CYHAL_GPIO_DIR_INPUT 
-    #define CYBSP_ECO_OUT_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
-    #define CYBSP_USER_BTN1 (P21_4)
-    #define CYBSP_USER_BTN CYBSP_USER_BTN1
-    #define CYBSP_TRACE_DATA0 (P21_5)
-    #define CYBSP_TRACE_DATA1 (P22_1)
-    #define CYBSP_TRACE_DATA2 (P22_2)
-    #define CYBSP_TRACE_DATA3 (P22_3)
-    #define CYBSP_TRACE_CLK (P22_4)
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_ECO_OUT_HAL_PORT_PIN P21_3
+#define CYBSP_ECO_OUT P21_3
+#define CYBSP_ECO_OUT_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_ECO_OUT_HAL_DIR CYHAL_GPIO_DIR_INPUT 
+#define CYBSP_ECO_OUT_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_ANALOG
+#define CYBSP_USER_BTN1 (P21_4)
+#define CYBSP_USER_BTN CYBSP_USER_BTN1
+#define CYBSP_TRACE_DATA0 (P21_5)
+#define CYBSP_TRACE_DATA1 (P22_1)
+#define CYBSP_TRACE_DATA2 (P22_2)
+#define CYBSP_TRACE_DATA3 (P22_3)
+#define CYBSP_TRACE_CLK (P22_4)
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_SWO_ENABLED 1U
 #define CYBSP_SWO_PORT GPIO_PRT23
 #define CYBSP_SWO_PORT_NUM 23U
@@ -187,13 +201,15 @@
 #endif
 #define CYBSP_SWO_HSIOM ioss_0_port_23_pin_4_HSIOM
 #define CYBSP_SWO_IRQ ioss_interrupts_gpio_23_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_SWO_HAL_PORT_PIN P23_4
-    #define CYBSP_SWO P23_4
-    #define CYBSP_SWO_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_SWO_HAL_DIR CYHAL_GPIO_DIR_OUTPUT 
-    #define CYBSP_SWO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_STRONG
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_SWO_HAL_PORT_PIN P23_4
+#define CYBSP_SWO P23_4
+#define CYBSP_SWO_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_SWO_HAL_DIR CYHAL_GPIO_DIR_OUTPUT 
+#define CYBSP_SWO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_STRONG
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_SWDCK_ENABLED 1U
 #define CYBSP_SWDCK_PORT GPIO_PRT23
 #define CYBSP_SWDCK_PORT_NUM 23U
@@ -206,13 +222,15 @@
 #endif
 #define CYBSP_SWDCK_HSIOM ioss_0_port_23_pin_5_HSIOM
 #define CYBSP_SWDCK_IRQ ioss_interrupts_gpio_23_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_SWDCK_HAL_PORT_PIN P23_5
-    #define CYBSP_SWDCK P23_5
-    #define CYBSP_SWDCK_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_SWDCK_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL 
-    #define CYBSP_SWDCK_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLDOWN
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_SWDCK_HAL_PORT_PIN P23_5
+#define CYBSP_SWDCK P23_5
+#define CYBSP_SWDCK_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_SWDCK_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL 
+#define CYBSP_SWDCK_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLDOWN
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 #define CYBSP_SWDIO_ENABLED 1U
 #define CYBSP_SWDIO_PORT GPIO_PRT23
 #define CYBSP_SWDIO_PORT_NUM 23U
@@ -225,72 +243,85 @@
 #endif
 #define CYBSP_SWDIO_HSIOM ioss_0_port_23_pin_6_HSIOM
 #define CYBSP_SWDIO_IRQ ioss_interrupts_gpio_23_IRQn
-#if defined (CY_USING_HAL)
-    #define CYBSP_SWDIO_HAL_PORT_PIN P23_6
-    #define CYBSP_SWDIO P23_6
-    #define CYBSP_SWDIO_HAL_IRQ CYHAL_GPIO_IRQ_NONE
-    #define CYBSP_SWDIO_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL 
-    #define CYBSP_SWDIO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLUP
-    #define CYBSP_WIFI_SDIO_CLK (P24_2)
-    #define CYBSP_WIFI_SDIO_CMD (P24_3)
-    #define CYBSP_WIFI_SDIO_D0 (P25_0)
-    #define CYBSP_WIFI_SDIO_D1 (P25_1)
-    #define CYBSP_WIFI_SDIO_D2 (P25_2)
-    #define CYBSP_WIFI_SDIO_D3 (P25_3)
-    #define CYBSP_WIFI_HOST_WAKE (P25_4)
-    #define CYBSP_WIFI_WL_REG_ON (P25_6)
-    #define CYBSP_BT_UART_RX (P32_0)
-    #define CYBSP_BT_UART_TX (P32_1)
-    #define CYBSP_BT_UART_RTS (P32_2)
-    #define CYBSP_BT_UART_CTS (P32_3)
-    #define CYBSP_BT_HOST_WAKE (P32_4)
-    #define CYBSP_BT_DEVICE_WAKE (P32_5)
-    #define CYBSP_BT_POWER (P32_6)
-    #define CYBSP_QSPI_SCK (P6_3)
-    #define CYBSP_QSPI_SS (P6_5)
-    #define CYBSP_QSPI_FLASH_SSEL CYBSP_QSPI_SS
-    #define CYBSP_POT (P6_6)
-    #define CYBSP_QSPI_D0 (P7_1)
-    #define CYBSP_QSPI_D1 (P7_2)
-    #define CYBSP_QSPI_D2 (P7_3)
-    #define CYBSP_QSPI_D3 (P7_4)
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+#define CYBSP_SWDIO_HAL_PORT_PIN P23_6
+#define CYBSP_SWDIO P23_6
+#define CYBSP_SWDIO_HAL_IRQ CYHAL_GPIO_IRQ_NONE
+#define CYBSP_SWDIO_HAL_DIR CYHAL_GPIO_DIR_BIDIRECTIONAL 
+#define CYBSP_SWDIO_HAL_DRIVEMODE CYHAL_GPIO_DRIVE_PULLUP
+#define CYBSP_WIFI_SDIO_CLK (P24_2)
+#define CYBSP_WIFI_SDIO_CMD (P24_3)
+#define CYBSP_WIFI_SDIO_D0 (P25_0)
+#define CYBSP_WIFI_SDIO_D1 (P25_1)
+#define CYBSP_WIFI_SDIO_D2 (P25_2)
+#define CYBSP_WIFI_SDIO_D3 (P25_3)
+#define CYBSP_WIFI_HOST_WAKE (P25_4)
+#define CYBSP_WIFI_WL_REG_ON (P25_6)
+#define CYBSP_BT_UART_RX (P32_0)
+#define CYBSP_BT_UART_TX (P32_1)
+#define CYBSP_BT_UART_RTS (P32_2)
+#define CYBSP_BT_UART_CTS (P32_3)
+#define CYBSP_BT_HOST_WAKE (P32_4)
+#define CYBSP_BT_DEVICE_WAKE (P32_5)
+#define CYBSP_BT_POWER (P32_6)
+#define CYBSP_QSPI_SCK (P6_3)
+#define CYBSP_QSPI_SS (P6_5)
+#define CYBSP_QSPI_FLASH_SSEL CYBSP_QSPI_SS
+#define CYBSP_POT (P6_6)
+#define CYBSP_QSPI_D0 (P7_1)
+#define CYBSP_QSPI_D1 (P7_2)
+#define CYBSP_QSPI_D2 (P7_3)
+#define CYBSP_QSPI_D3 (P7_4)
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
 
 extern const cy_stc_gpio_pin_config_t CYBSP_WCO_IN_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_WCO_IN_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_WCO_IN_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_WCO_OUT_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_WCO_OUT_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_WCO_OUT_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_ECO_IN_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_ECO_IN_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_ECO_IN_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_ECO_OUT_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_ECO_OUT_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_ECO_OUT_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_SWO_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_SWO_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_SWO_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_SWDCK_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_SWDCK_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_SWDCK_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
+
 extern const cy_stc_gpio_pin_config_t CYBSP_SWDIO_config;
-#if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t CYBSP_SWDIO_obj;
-#endif //defined (CY_USING_HAL)
+
+#if defined (CY_USING_HAL) || (CY_USING_HAL_LITE)
+extern const cyhal_resource_inst_t CYBSP_SWDIO_obj;
+#endif /* defined (CY_USING_HAL) || (CY_USING_HAL_LITE) */
 
 void init_cycfg_pins(void);
 void reserve_cycfg_pins(void);
 
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_PINS_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.c b/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.c
index f877724..9ab1bcf 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.c
@@ -1,35 +1,73 @@
 /*******************************************************************************
-* File Name: cycfg_qspi_memslot.c
-*
-* Description:
-* Provides definitions of the SMIF-driver memory configuration.
-* This file was automatically generated and should not be modified.
-* QSPI Configurator 4.0.0.974
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_qspi_memslot.c
+ *
+ * Description:
+ * Provides definitions of the SMIF-driver memory configuration.
+ * This file was automatically generated and should not be modified.
+ * QSPI Configurator 4.30.0.1865
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg_qspi_memslot.h"
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0xECU,
+    /* The width of the command transfer. */
+    .cmdWidth = CY_SMIF_WIDTH_SINGLE,
+    /* The width of the address transfer. */
+    .addrWidth = CY_SMIF_WIDTH_QUAD,
+    /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */
+    .mode = 0x01U,
+    /* The width of the mode command transfer. */
+    .modeWidth = CY_SMIF_WIDTH_QUAD,
+    /* The number of dummy cycles. A zero value suggests no dummy cycles. */
+    .dummyCycles = 4U,
+    /* The width of the data transfer. */
+    .dataWidth = CY_SMIF_WIDTH_QUAD,
+#if (CY_IP_MXSMIF_VERSION >= 2)
+    /* The Data rate of data */
+    .dataRate = CY_SMIF_SDR,
+    /* This specifies the presence of the dummy field */
+    .dummyCyclesPresence = CY_SMIF_PRESENT_1BYTE,
+    /* This specifies the presence of the mode field */
+    .modePresence = CY_SMIF_PRESENT_1BYTE,
+    /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */
+    .modeH = 0x00,
+    /* The Data rate of mode */
+    .modeRate = CY_SMIF_SDR,
+    /* The Data rate of address */
+    .addrRate = CY_SMIF_SDR,
+    /* This specifies the width of the command field */
+    .cmdPresence = CY_SMIF_PRESENT_1BYTE,
+    /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
+    .commandH = 0x00,
+    /* The Data rate of command */
+    .cmdRate = CY_SMIF_SDR,
+#endif /* CY_IP_MXSMIF_VERSION */
+};
+
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeEnCmd =
+{
+    /* The 8-bit command. 1 x I/O read command. */
+    .command = 0x06U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -60,14 +98,14 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeEnCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeDisCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0x04U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -98,14 +136,14 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeDisCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_eraseCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0xDCU,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -136,14 +174,14 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_eraseCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_chipEraseCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0x60U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -174,14 +212,52 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_chipEraseCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_programCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0x34U,
+    /* The width of the command transfer. */
+    .cmdWidth = CY_SMIF_WIDTH_SINGLE,
+    /* The width of the address transfer. */
+    .addrWidth = CY_SMIF_WIDTH_SINGLE,
+    /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */
+    .mode = 0xFFFFFFFFU,
+    /* The width of the mode command transfer. */
+    .modeWidth = CY_SMIF_WIDTH_QUAD,
+    /* The number of dummy cycles. A zero value suggests no dummy cycles. */
+    .dummyCycles = 0U,
+    /* The width of the data transfer. */
+    .dataWidth = CY_SMIF_WIDTH_QUAD,
+#if (CY_IP_MXSMIF_VERSION >= 2)
+    /* The Data rate of data */
+    .dataRate = CY_SMIF_SDR,
+    /* This specifies the presence of the dummy field */
+    .dummyCyclesPresence = CY_SMIF_NOT_PRESENT,
+    /* This specifies the presence of the mode field */
+    .modePresence = CY_SMIF_NOT_PRESENT,
+    /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */
+    .modeH = 0x00,
+    /* The Data rate of mode */
+    .modeRate = CY_SMIF_SDR,
+    /* The Data rate of address */
+    .addrRate = CY_SMIF_SDR,
+    /* This specifies the width of the command field */
+    .cmdPresence = CY_SMIF_PRESENT_1BYTE,
+    /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
+    .commandH = 0x00,
+    /* The Data rate of command */
+    .cmdRate = CY_SMIF_SDR,
+#endif /* CY_IP_MXSMIF_VERSION */
+};
+
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegQeCmd =
+{
+    /* The 8-bit command. 1 x I/O read command. */
+    .command = 0x35U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -212,14 +288,14 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_programCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegWipCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0x05U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -250,14 +326,14 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readStsRegQeCmd =
+cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeStsRegQeCmd =
 {
     /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
+    .command = 0x01U,
     /* The width of the command transfer. */
     .cmdWidth = CY_SMIF_WIDTH_SINGLE,
     /* The width of the address transfer. */
@@ -288,183 +364,86 @@
     /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
     .commandH = 0x00,
     /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
+    .cmdRate = CY_SMIF_SDR,
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readStsRegWipCmd =
-{
-    /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
-    /* The width of the command transfer. */
-    .cmdWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The width of the address transfer. */
-    .addrWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */
-    .mode = 0xFFFFFFFFU,
-    /* The width of the mode command transfer. */
-    .modeWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The number of dummy cycles. A zero value suggests no dummy cycles. */
-    .dummyCycles = 0U,
-    /* The width of the data transfer. */
-    .dataWidth = CY_SMIF_WIDTH_SINGLE,
-#if (CY_IP_MXSMIF_VERSION >= 2)
-    /* The Data rate of data */
-    .dataRate = CY_SMIF_SDR,
-    /* This specifies the presence of the dummy field */
-    .dummyCyclesPresence = CY_SMIF_NOT_PRESENT,
-    /* This specifies the presence of the mode field */
-    .modePresence = CY_SMIF_NOT_PRESENT,
-    /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */
-    .modeH = 0x00,
-    /* The Data rate of mode */
-    .modeRate = CY_SMIF_SDR,
-    /* The Data rate of address */
-    .addrRate = CY_SMIF_SDR,
-    /* This specifies the width of the command field */
-    .cmdPresence = CY_SMIF_PRESENT_1BYTE,
-    /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
-    .commandH = 0x00,
-    /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
-#endif /* CY_IP_MXSMIF_VERSION */
-};
-
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeStsRegQeCmd =
-{
-    /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x00U,
-    /* The width of the command transfer. */
-    .cmdWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The width of the address transfer. */
-    .addrWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */
-    .mode = 0xFFFFFFFFU,
-    /* The width of the mode command transfer. */
-    .modeWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The number of dummy cycles. A zero value suggests no dummy cycles. */
-    .dummyCycles = 0U,
-    /* The width of the data transfer. */
-    .dataWidth = CY_SMIF_WIDTH_SINGLE,
-#if (CY_IP_MXSMIF_VERSION >= 2)
-    /* The Data rate of data */
-    .dataRate = CY_SMIF_SDR,
-    /* This specifies the presence of the dummy field */
-    .dummyCyclesPresence = CY_SMIF_NOT_PRESENT,
-    /* This specifies the presence of the mode field */
-    .modePresence = CY_SMIF_NOT_PRESENT,
-    /* The high byte of a 16-bit mode. This value is 0x0 when there is no higher byte mode present */
-    .modeH = 0x00,
-    /* The Data rate of mode */
-    .modeRate = CY_SMIF_SDR,
-    /* The Data rate of address */
-    .addrRate = CY_SMIF_SDR,
-    /* This specifies the width of the command field */
-    .cmdPresence = CY_SMIF_PRESENT_1BYTE,
-    /* The high byte of a 16-bit command. This value is 0x0 when there is no higher byte command present */
-    .commandH = 0x00,
-    /* The Data rate of command */
-    .cmdRate = CY_SMIF_SDR
-#endif /* CY_IP_MXSMIF_VERSION */
-};
-
-cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readSfdpCmd =
-{
-    /* The 8-bit command. 1 x I/O read command. */
-    .command = 0x5AU,
-    /* The width of the command transfer. */
-    .cmdWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The width of the address transfer. */
-    .addrWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The 8-bit mode byte. This value is 0xFFFFFFFF when there is no mode present. */
-    .mode = 0xFFFFFFFFU,
-    /* The width of the mode command transfer. */
-    .modeWidth = CY_SMIF_WIDTH_SINGLE,
-    /* The number of dummy cycles. A zero value suggests no dummy cycles. */
-    .dummyCycles = 8U,
-    /* The width of the data transfer. */
-    .dataWidth = CY_SMIF_WIDTH_SINGLE
-};
-
-#if (CY_SMIF_DRV_VERSION_MAJOR > 1) || (CY_SMIF_DRV_VERSION_MINOR >= 50)
-static cy_stc_smif_hybrid_region_info_t SFDP_SlaveSlot_0_regionInfoStorage[16];
-
-static cy_stc_smif_hybrid_region_info_t *SFDP_SlaveSlot_0_regionInfo[16] = {
-    &SFDP_SlaveSlot_0_regionInfoStorage[0],
-    &SFDP_SlaveSlot_0_regionInfoStorage[1],
-    &SFDP_SlaveSlot_0_regionInfoStorage[2],
-    &SFDP_SlaveSlot_0_regionInfoStorage[3],
-    &SFDP_SlaveSlot_0_regionInfoStorage[4],
-    &SFDP_SlaveSlot_0_regionInfoStorage[5],
-    &SFDP_SlaveSlot_0_regionInfoStorage[6],
-    &SFDP_SlaveSlot_0_regionInfoStorage[7],
-    &SFDP_SlaveSlot_0_regionInfoStorage[8],
-    &SFDP_SlaveSlot_0_regionInfoStorage[9],
-    &SFDP_SlaveSlot_0_regionInfoStorage[10],
-    &SFDP_SlaveSlot_0_regionInfoStorage[11],
-    &SFDP_SlaveSlot_0_regionInfoStorage[12],
-    &SFDP_SlaveSlot_0_regionInfoStorage[13],
-    &SFDP_SlaveSlot_0_regionInfoStorage[14],
-    &SFDP_SlaveSlot_0_regionInfoStorage[15]
-};
-#endif
-
-cy_stc_smif_mem_device_cfg_t deviceCfg_SFDP_SlaveSlot_0 =
+cy_stc_smif_mem_device_cfg_t deviceCfg_S25FL512S_SlaveSlot_0 =
 {
     /* Specifies the number of address bytes used by the memory slave device. */
-    .numOfAddrBytes = 0x03U,
+    .numOfAddrBytes = 0x04U,
     /* The size of the memory. */
-    .memSize = 0x0000100U,
+    .memSize = 0x04000000U,
     /* Specifies the Read command. */
-    .readCmd = &SFDP_SlaveSlot_0_readCmd,
+    .readCmd = &S25FL512S_SlaveSlot_0_readCmd,
     /* Specifies the Write Enable command. */
-    .writeEnCmd = &SFDP_SlaveSlot_0_writeEnCmd,
+    .writeEnCmd = &S25FL512S_SlaveSlot_0_writeEnCmd,
     /* Specifies the Write Disable command. */
-    .writeDisCmd = &SFDP_SlaveSlot_0_writeDisCmd,
+    .writeDisCmd = &S25FL512S_SlaveSlot_0_writeDisCmd,
     /* Specifies the Erase command. */
-    .eraseCmd = &SFDP_SlaveSlot_0_eraseCmd,
+    .eraseCmd = &S25FL512S_SlaveSlot_0_eraseCmd,
     /* Specifies the sector size of each erase. */
-    .eraseSize = 0x0001000U,
+    .eraseSize = 0x00040000U,
     /* Specifies the Chip Erase command. */
-    .chipEraseCmd = &SFDP_SlaveSlot_0_chipEraseCmd,
+    .chipEraseCmd = &S25FL512S_SlaveSlot_0_chipEraseCmd,
     /* Specifies the Program command. */
-    .programCmd = &SFDP_SlaveSlot_0_programCmd,
+    .programCmd = &S25FL512S_SlaveSlot_0_programCmd,
     /* Specifies the page size for programming. */
-    .programSize = 0x0000100U,
+    .programSize = 0x00000200U,
     /* Specifies the command to read the QE-containing status register. */
-    .readStsRegQeCmd = &SFDP_SlaveSlot_0_readStsRegQeCmd,
+    .readStsRegQeCmd = &S25FL512S_SlaveSlot_0_readStsRegQeCmd,
     /* Specifies the command to read the WIP-containing status register. */
-    .readStsRegWipCmd = &SFDP_SlaveSlot_0_readStsRegWipCmd,
-    /* Specifies the read SFDP command */
-    .readSfdpCmd = &SFDP_SlaveSlot_0_readSfdpCmd,
+    .readStsRegWipCmd = &S25FL512S_SlaveSlot_0_readStsRegWipCmd,
     /* Specifies the command to write into the QE-containing status register. */
-    .writeStsRegQeCmd = &SFDP_SlaveSlot_0_writeStsRegQeCmd,
+    .writeStsRegQeCmd = &S25FL512S_SlaveSlot_0_writeStsRegQeCmd,
     /* The mask for the status register. */
-    .stsRegBusyMask = 0x00U,
+    .stsRegBusyMask = 0x01U,
     /* The mask for the status register. */
-    .stsRegQuadEnableMask = 0x00U,
+    .stsRegQuadEnableMask = 0x02U,
     /* The max time for the erase type-1 cycle-time in ms. */
-    .eraseTime = 1U,
+    .eraseTime = 2600U,
     /* The max time for the chip-erase cycle-time in ms. */
-    .chipEraseTime = 16U,
+    .chipEraseTime = 460000U,
     /* The max time for the page-program cycle-time in us. */
-    .programTime = 8U,
+    .programTime = 1300U,
 #if (CY_SMIF_DRV_VERSION_MAJOR > 1) || (CY_SMIF_DRV_VERSION_MINOR >= 50)
     /* Points to NULL or to structure with info about sectors for hybrid memory. */
     .hybridRegionCount = 0U,
-    .hybridRegionInfo = SFDP_SlaveSlot_0_regionInfo
+    .hybridRegionInfo = 0,
+#endif
+    /* Specifies the command to read variable latency cycles configuration register */
+    .readLatencyCmd = 0,
+    /* Specifies the command to write variable latency cycles configuration register */
+    .writeLatencyCmd = 0,
+    /* Specifies the address for variable latency cycle address */
+    .latencyCyclesRegAddr = 0x00U,
+    /* Specifies variable latency cycles Mask */
+    .latencyCyclesMask = 0x00U,
+#if (CY_IP_MXSMIF_VERSION >= 2)
+    /* Specifies data for memory with hybrid sectors */
+    .octalDDREnableSeq = 0,
+    /* Specifies the command to read the OE-containing status register. */
+    .readStsRegOeCmd = 0,
+    /* Specifies the command to write the OE-containing status register. */
+    .writeStsRegOeCmd = 0,
+    /* QE mask for the status registers */
+    .stsRegOctalEnableMask = 0x00U,
+    /* Octal enable register address */
+    .octalEnableRegAddr = 0x00U,
+    /* Frequency of operation used in Octal mode */
+    .freq_of_operation = CY_SMIF_100MHZ_OPERATION,
 #endif
 };
 
-const cy_stc_smif_mem_config_t SFDP_SlaveSlot_0 =
+cy_stc_smif_mem_config_t S25FL512S_SlaveSlot_0 =
 {
     /* Determines the slot number where the memory device is placed. */
     .slaveSelect = CY_SMIF_SLAVE_SELECT_0,
     /* Flags. */
 #if (CY_IP_MXSMIF_VERSION >= 2)
-    .flags = CY_SMIF_FLAG_SMIF_REV_3 | CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN | CY_SMIF_FLAG_CRYPTO_EN | CY_SMIF_FLAG_DETECT_SFDP | CY_SMIF_FLAG_MERGE_ENABLE,
+    .flags = CY_SMIF_FLAG_SMIF_REV_3 | CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN | CY_SMIF_FLAG_CRYPTO_EN | CY_SMIF_FLAG_MERGE_ENABLE,
 #else
-    .flags = CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN | CY_SMIF_FLAG_CRYPTO_EN | CY_SMIF_FLAG_DETECT_SFDP | CY_SMIF_FLAG_MERGE_ENABLE,
+    .flags = CY_SMIF_FLAG_MEMORY_MAPPED | CY_SMIF_FLAG_WR_EN | CY_SMIF_FLAG_CRYPTO_EN | CY_SMIF_FLAG_MERGE_ENABLE,
 #endif /* CY_IP_MXSMIF_VERSION */
     /* The data-line selection options for a slave device. */
     .dataSelect = CY_SMIF_DATA_SEL0,
@@ -478,23 +457,23 @@
     Valid when the memory mapped mode is enabled. */
     .dualQuadSlots = 0,
     /* The configuration of the device. */
-    .deviceCfg = &deviceCfg_SFDP_SlaveSlot_0,
+    .deviceCfg = &deviceCfg_S25FL512S_SlaveSlot_0,
 #if (CY_IP_MXSMIF_VERSION >= 2)
     /** Continous transfer merge timeout.
      * After this period the memory device is deselected. A later transfer, even from a
      * continuous address, starts with the overhead phases (command, address, mode, dummy cycles).
      * This configuration parameter is available for CAT1B devices. */
-    .mergeTimeout = CY_SMIF_MERGE_TIMEOUT_256_CYCLES
+    .mergeTimeout = CY_SMIF_MERGE_TIMEOUT_256_CYCLES,
 #else
 #error Features used by this file require CY_IP_MXSMIF_VERSION >= 2.
 #endif /* CY_IP_MXSMIF_VERSION */
 };
 
-const cy_stc_smif_mem_config_t* const smifMemConfigs[CY_SMIF_DEVICE_NUM] = {
-   &SFDP_SlaveSlot_0
+cy_stc_smif_mem_config_t* smifMemConfigs[CY_SMIF_DEVICE_NUM] = {
+   &S25FL512S_SlaveSlot_0,
 };
 
-const cy_stc_smif_block_config_t smifBlockConfig =
+cy_stc_smif_block_config_t smifBlockConfig =
 {
     /* The number of SMIF memories defined. */
     .memCount = CY_SMIF_DEVICE_NUM,
@@ -503,5 +482,5 @@
     /* The version of the SMIF driver. */
     .majorVersion = CY_SMIF_DRV_VERSION_MAJOR,
     /* The version of the SMIF driver. */
-    .minorVersion = CY_SMIF_DRV_VERSION_MINOR
+    .minorVersion = CY_SMIF_DRV_VERSION_MINOR,
 };
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.h
index d9b08eb..7507b44 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_qspi_memslot.h
@@ -1,34 +1,34 @@
 /*******************************************************************************
-* File Name: cycfg_qspi_memslot.h
-*
-* Description:
-* Provides declarations of the SMIF-driver memory configuration.
-* This file was automatically generated and should not be modified.
-* QSPI Configurator 4.0.0.974
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_qspi_memslot.h
+ *
+ * Description:
+ * Provides declarations of the SMIF-driver memory configuration.
+ * This file was automatically generated and should not be modified.
+ * QSPI Configurator 4.30.0.1865
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #ifndef CYCFG_QSPI_MEMSLOT_H
 #define CYCFG_QSPI_MEMSLOT_H
 #include "cy_smif_memslot.h"
 
-#define CY_SMIF_CFG_TOOL_VERSION           (400)
+#define CY_SMIF_CFG_TOOL_VERSION           (430)
 
 /* Supported QSPI Driver version */
 #define CY_SMIF_DRV_VERSION_REQUIRED       (100)
@@ -42,39 +42,28 @@
    #error The QSPI Configurator requires a newer version of the PDL. Update the PDL in your project.
 #endif
 
+typedef cy_stc_smif_mem_config_t cy_serial_flash_mem_config_t;
+typedef cy_stc_smif_block_config_t cy_serial_flash_block_config_t;
+
 #define CY_SMIF_DEVICE_NUM 1
 
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeEnCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeDisCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_eraseCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_chipEraseCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_programCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readStsRegQeCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readStsRegWipCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_writeStsRegQeCmd;
-extern cy_stc_smif_mem_cmd_t SFDP_SlaveSlot_0_readSfdpCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeEnCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeDisCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_eraseCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_chipEraseCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_programCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegQeCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_readStsRegWipCmd;
+extern cy_stc_smif_mem_cmd_t S25FL512S_SlaveSlot_0_writeStsRegQeCmd;
 
-extern cy_stc_smif_mem_device_cfg_t deviceCfg_SFDP_SlaveSlot_0;
+extern cy_stc_smif_mem_device_cfg_t deviceCfg_S25FL512S_SlaveSlot_0;
 
-extern const cy_stc_smif_mem_config_t SFDP_SlaveSlot_0;
+extern cy_stc_smif_mem_config_t S25FL512S_SlaveSlot_0;
 
-#define Auto_detect_SFDP_SlaveSlot_0_readCmd SFDP_SlaveSlot_0_readCmd
-#define Auto_detect_SFDP_SlaveSlot_0_writeEnCmd SFDP_SlaveSlot_0_writeEnCmd
-#define Auto_detect_SFDP_SlaveSlot_0_writeDisCmd SFDP_SlaveSlot_0_writeDisCmd
-#define Auto_detect_SFDP_SlaveSlot_0_eraseCmd SFDP_SlaveSlot_0_eraseCmd
-#define Auto_detect_SFDP_SlaveSlot_0_chipEraseCmd SFDP_SlaveSlot_0_chipEraseCmd
-#define Auto_detect_SFDP_SlaveSlot_0_programCmd SFDP_SlaveSlot_0_programCmd
-#define Auto_detect_SFDP_SlaveSlot_0_readStsRegQeCmd SFDP_SlaveSlot_0_readStsRegQeCmd
-#define Auto_detect_SFDP_SlaveSlot_0_readStsRegWipCmd SFDP_SlaveSlot_0_readStsRegWipCmd
-#define Auto_detect_SFDP_SlaveSlot_0_writeStsRegQeCmd SFDP_SlaveSlot_0_writeStsRegQeCmd
-#define Auto_detect_SFDP_SlaveSlot_0_readSfdpCmd SFDP_SlaveSlot_0_readSfdpCmd
-#define deviceCfg_Auto_detect_SFDP_SlaveSlot_0 deviceCfg_SFDP_SlaveSlot_0
-#define Auto_detect_SFDP_SlaveSlot_0 SFDP_SlaveSlot_0
+extern cy_stc_smif_mem_config_t* smifMemConfigs[CY_SMIF_DEVICE_NUM];
 
-extern const cy_stc_smif_mem_config_t* const smifMemConfigs[CY_SMIF_DEVICE_NUM];
-
-extern const cy_stc_smif_block_config_t smifBlockConfig;
+extern cy_stc_smif_block_config_t smifBlockConfig;
 
 
 #endif /*CYCFG_QSPI_MEMSLOT_H*/
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_routing.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_routing.h
index 2e8a2ce..0932043 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_routing.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_routing.h
@@ -1,50 +1,52 @@
 /*******************************************************************************
-* File Name: cycfg_routing.h
-*
-* Description:
-* Establishes all necessary connections between hardware elements.
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_routing.h
+ *
+ * Description:
+ * Establishes all necessary connections between hardware elements.
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_ROUTING_H)
 #define CYCFG_ROUTING_H
 
+#include "cycfg_notices.h"
+
 #if defined(__cplusplus)
 extern "C" {
-#endif
-
-#include "cycfg_notices.h"
-static inline void init_cycfg_routing(void) {}
+#endif /* defined(__cplusplus) */
 
 #define ioss_0_port_21_pin_0_ANALOG P21_0_SRSS_WCO_IN
 #define ioss_0_port_21_pin_1_ANALOG P21_1_SRSS_WCO_OUT
+#define ioss_0_port_21_pin_2_ANALOG P21_2_SRSS_ECO_IN
+#define ioss_0_port_21_pin_3_ANALOG P21_3_SRSS_ECO_OUT
 #define ioss_0_port_23_pin_4_HSIOM P23_4_CPUSS_SWJ_SWO_TDO
 #define ioss_0_port_23_pin_5_HSIOM P23_5_CPUSS_SWJ_SWCLK_TCLK
 #define ioss_0_port_23_pin_6_HSIOM P23_6_CPUSS_SWJ_SWDIO_TMS
 
+static inline void init_cycfg_routing(void) {}
+
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_ROUTING_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_system.c b/boot/cypress/platforms/BSP/XMC7000/cycfg_system.c
index ca14ba0..5debda7 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_system.c
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_system.c
@@ -1,30 +1,30 @@
 /*******************************************************************************
-* File Name: cycfg_system.c
-*
-* Description:
-* System configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_system.c
+ *
+ * Description:
+ * System configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #include "cycfg_system.h"
 
@@ -33,54 +33,75 @@
 #define CY_CFG_SYSCLK_PLL_ERROR 3
 #define CY_CFG_SYSCLK_FLL_ERROR 4
 #define CY_CFG_SYSCLK_WCO_ERROR 5
+
+#if  (CY_CPU_CORTEX_M7)
+#define CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED 1
+#define CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE CY_SYSTICK_CLOCK_SOURCE_CLK_IMO
+#define CY_CFG_SYSCLK_CLKALTSYSTICK_INTERVAL 0
+#define CY_CFG_SYSCLK_CLKALTSYSTICK_FREQUENCY 8000000
+#define CY_CFG_SYSCLK_CLKALTSYSTICK_TICKS ((0)/1000000.0)*8000000
+#endif /*  (CY_CPU_CORTEX_M7) */
+
 #define CY_CFG_SYSCLK_CLKBAK_ENABLED 1
 #define CY_CFG_SYSCLK_CLKBAK_SOURCE CY_SYSCLK_BAK_IN_CLKLF
+#define CY_CFG_SYSCLK_ECO_ENABLED 1
+#define CY_CFG_SYSCLK_ECO_FREQ 16000000UL
+#define CY_CFG_SYSCLK_ECO_GPIO_IN_PRT GPIO_PRT21
+#define CY_CFG_SYSCLK_ECO_GPIO_IN_PIN 2
+#define CY_CFG_SYSCLK_ECO_GPIO_OUT_PRT GPIO_PRT21
+#define CY_CFG_SYSCLK_ECO_GPIO_OUT_PIN 3
+#define CY_CFG_SYSCLK_ECO_CLOAD 10UL
+#define CY_CFG_SYSCLK_ECO_ESR 150UL
+#define CY_CFG_SYSCLK_ECO_DRIVE_LEVEL 100UL
 #define CY_CFG_SYSCLK_CLKFAST_0_ENABLED 1
 #define CY_CFG_SYSCLK_CLKFAST_0_INT_DIVIDER 0
 #define CY_CFG_SYSCLK_CLKFAST_0_FRAC_DIVIDER 0
+#define CY_CFG_SYSCLK_CLKFAST_1_ENABLED 1
+#define CY_CFG_SYSCLK_CLKFAST_1_INT_DIVIDER 0
+#define CY_CFG_SYSCLK_CLKFAST_1_FRAC_DIVIDER 0
 #define CY_CFG_SYSCLK_FLL_ENABLED 1
 #define CY_CFG_SYSCLK_FLL_MULT 500U
 #define CY_CFG_SYSCLK_FLL_REFDIV 40U
-#define CY_CFG_SYSCLK_FLL_CCO_RANGE CY_SYSCLK_FLL_CCO_RANGE2
+#define CY_CFG_SYSCLK_FLL_CCO_RANGE CY_SYSCLK_FLL_CCO_RANGE4
 #define CY_CFG_SYSCLK_FLL_ENABLE_OUTDIV true
-#define CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE 10U
+#define CY_CFG_SYSCLK_FLL_LOCK_TOLERANCE 2U
 #define CY_CFG_SYSCLK_FLL_IGAIN 9U
-#define CY_CFG_SYSCLK_FLL_PGAIN 0U
-#define CY_CFG_SYSCLK_FLL_SETTLING_COUNT 8U
+#define CY_CFG_SYSCLK_FLL_PGAIN 5U
+#define CY_CFG_SYSCLK_FLL_SETTLING_COUNT 16U
 #define CY_CFG_SYSCLK_FLL_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT
-#define CY_CFG_SYSCLK_FLL_CCO_FREQ 235U
-#define CY_CFG_SYSCLK_FLL_OUT_FREQ 50000000
+#define CY_CFG_SYSCLK_FLL_CCO_FREQ 355U
+#define CY_CFG_SYSCLK_FLL_OUT_FREQ 100000000
 #define CY_CFG_SYSCLK_CLKHF0_ENABLED 1
 #define CY_CFG_SYSCLK_CLKHF0_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 50UL
-#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH0
+#define CY_CFG_SYSCLK_CLKHF0_FREQ_MHZ 200UL
+#define CY_CFG_SYSCLK_CLKHF0_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH3
 #define CY_CFG_SYSCLK_CLKHF1_ENABLED 1
 #define CY_CFG_SYSCLK_CLKHF1_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ 250UL
+#define CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ 350UL
 #define CY_CFG_SYSCLK_CLKHF1_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH1
 #define CY_CFG_SYSCLK_CLKHF2_ENABLED 1
 #define CY_CFG_SYSCLK_CLKHF2_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 196UL
-#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH2
+#define CY_CFG_SYSCLK_CLKHF2_FREQ_MHZ 100UL
+#define CY_CFG_SYSCLK_CLKHF2_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH4
 #define CY_CFG_SYSCLK_CLKHF3_ENABLED 1
-#define CY_CFG_SYSCLK_CLKHF3_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ 144UL
+#define CY_CFG_SYSCLK_CLKHF3_DIVIDER CY_SYSCLK_CLKHF_DIVIDE_BY_2
+#define CY_CFG_SYSCLK_CLKHF3_FREQ_MHZ 100UL
 #define CY_CFG_SYSCLK_CLKHF3_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH3
 #define CY_CFG_SYSCLK_CLKHF4_ENABLED 1
-#define CY_CFG_SYSCLK_CLKHF4_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ 100UL
-#define CY_CFG_SYSCLK_CLKHF4_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH4
+#define CY_CFG_SYSCLK_CLKHF4_DIVIDER CY_SYSCLK_CLKHF_DIVIDE_BY_2
+#define CY_CFG_SYSCLK_CLKHF4_FREQ_MHZ 125UL
+#define CY_CFG_SYSCLK_CLKHF4_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH2
 #define CY_CFG_SYSCLK_CLKHF5_ENABLED 1
-#define CY_CFG_SYSCLK_CLKHF5_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF5_FREQ_MHZ 8UL
-#define CY_CFG_SYSCLK_CLKHF5_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH5
+#define CY_CFG_SYSCLK_CLKHF5_DIVIDER CY_SYSCLK_CLKHF_DIVIDE_BY_2
+#define CY_CFG_SYSCLK_CLKHF5_FREQ_MHZ 125UL
+#define CY_CFG_SYSCLK_CLKHF5_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH2
 #define CY_CFG_SYSCLK_CLKHF6_ENABLED 1
 #define CY_CFG_SYSCLK_CLKHF6_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF6_FREQ_MHZ 8UL
-#define CY_CFG_SYSCLK_CLKHF6_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH5
+#define CY_CFG_SYSCLK_CLKHF6_FREQ_MHZ 200UL
+#define CY_CFG_SYSCLK_CLKHF6_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH3
 #define CY_CFG_SYSCLK_CLKHF7_ENABLED 1
 #define CY_CFG_SYSCLK_CLKHF7_DIVIDER CY_SYSCLK_CLKHF_NO_DIVIDE
-#define CY_CFG_SYSCLK_CLKHF7_FREQ_MHZ 8UL
+#define CY_CFG_SYSCLK_CLKHF7_FREQ_MHZ 0UL
 #define CY_CFG_SYSCLK_CLKHF7_CLKPATH CY_SYSCLK_CLKHF_IN_CLKPATH5
 #define CY_CFG_SYSCLK_ILO0_ENABLED 1
 #define CY_CFG_SYSCLK_ILO0_HIBERNATE true
@@ -88,63 +109,65 @@
 #define CY_CFG_SYSCLK_ILO1_HIBERNATE true
 #define CY_CFG_SYSCLK_IMO_ENABLED 1
 #define CY_CFG_SYSCLK_CLKLF_ENABLED 1
+#define CY_CFG_SYSCLK_CLKMEM_ENABLED 1
+#define CY_CFG_SYSCLK_CLKMEM_DIVIDER 0
 #define CY_CFG_SYSCLK_CLKPATH0_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH0_SOURCE CY_SYSCLK_CLKPATH_IN_ECO
+#define CY_CFG_SYSCLK_CLKPATH0_SOURCE_NUM 1UL
 #define CY_CFG_SYSCLK_CLKPATH1_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH1_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH1_SOURCE CY_SYSCLK_CLKPATH_IN_ECO
+#define CY_CFG_SYSCLK_CLKPATH1_SOURCE_NUM 1UL
 #define CY_CFG_SYSCLK_CLKPATH2_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH2_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH2_SOURCE CY_SYSCLK_CLKPATH_IN_ECO
+#define CY_CFG_SYSCLK_CLKPATH2_SOURCE_NUM 1UL
 #define CY_CFG_SYSCLK_CLKPATH3_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH3_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH3_SOURCE CY_SYSCLK_CLKPATH_IN_ECO
+#define CY_CFG_SYSCLK_CLKPATH3_SOURCE_NUM 1UL
 #define CY_CFG_SYSCLK_CLKPATH4_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH4_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH4_SOURCE CY_SYSCLK_CLKPATH_IN_ECO
+#define CY_CFG_SYSCLK_CLKPATH4_SOURCE_NUM 1UL
 #define CY_CFG_SYSCLK_CLKPATH5_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPATH5_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
-#define CY_CFG_SYSCLK_CLKPATH5_SOURCE_NUM 0UL
+#define CY_CFG_SYSCLK_CLKPATH5_SOURCE CY_SYSCLK_CLKPATH_IN_ILO0
+#define CY_CFG_SYSCLK_CLKPATH5_SOURCE_NUM 6UL
 #define CY_CFG_SYSCLK_CLKPATH6_ENABLED 1
 #define CY_CFG_SYSCLK_CLKPATH6_SOURCE CY_SYSCLK_CLKPATH_IN_IMO
 #define CY_CFG_SYSCLK_CLKPATH6_SOURCE_NUM 0UL
-#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1
-#define CY_CFG_SYSCLK_CLKPERI_DIVIDER 0
 #define CY_CFG_SYSCLK_PLL0_ENABLED 1
-#define CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV 62
+#define CY_CFG_SYSCLK_PLL0_FEEDBACK_DIV 43
 #define CY_CFG_SYSCLK_PLL0_REFERENCE_DIV 1
 #define CY_CFG_SYSCLK_PLL0_OUTPUT_DIV 2
-#define CY_CFG_SYSCLK_PLL0_FRAC_DIV 8388608
+#define CY_CFG_SYSCLK_PLL0_FRAC_DIV 12582912
 #define CY_CFG_SYSCLK_PLL0_FRAC_DITHER_EN false
 #define CY_CFG_SYSCLK_PLL0_FRAC_EN true
 #define CY_CFG_SYSCLK_PLL0_LF_MODE false
 #define CY_CFG_SYSCLK_PLL0_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_AUTO
-#define CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ 250000000
+#define CY_CFG_SYSCLK_PLL0_OUTPUT_FREQ 350000000
 #define CY_CFG_SYSCLK_PLL1_ENABLED 1
-#define CY_CFG_SYSCLK_PLL1_FEEDBACK_DIV 73
+#define CY_CFG_SYSCLK_PLL1_FEEDBACK_DIV 31
 #define CY_CFG_SYSCLK_PLL1_REFERENCE_DIV 1
-#define CY_CFG_SYSCLK_PLL1_OUTPUT_DIV 3
-#define CY_CFG_SYSCLK_PLL1_FRAC_DIV 8388608
+#define CY_CFG_SYSCLK_PLL1_OUTPUT_DIV 2
+#define CY_CFG_SYSCLK_PLL1_FRAC_DIV 4194304
 #define CY_CFG_SYSCLK_PLL1_FRAC_DITHER_EN false
 #define CY_CFG_SYSCLK_PLL1_FRAC_EN true
 #define CY_CFG_SYSCLK_PLL1_LF_MODE false
 #define CY_CFG_SYSCLK_PLL1_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_AUTO
-#define CY_CFG_SYSCLK_PLL1_OUTPUT_FREQ 196000000
+#define CY_CFG_SYSCLK_PLL1_OUTPUT_FREQ 250000000
 #define CY_CFG_SYSCLK_PLL2_ENABLED 1
-#define CY_CFG_SYSCLK_PLL2_FEEDBACK_DIV 36
-#define CY_CFG_SYSCLK_PLL2_REFERENCE_DIV 1
+#define CY_CFG_SYSCLK_PLL2_FEEDBACK_DIV 50
+#define CY_CFG_SYSCLK_PLL2_REFERENCE_DIV 2
 #define CY_CFG_SYSCLK_PLL2_OUTPUT_DIV 2
 #define CY_CFG_SYSCLK_PLL2_LF_MODE false
 #define CY_CFG_SYSCLK_PLL2_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_AUTO
-#define CY_CFG_SYSCLK_PLL2_OUTPUT_FREQ 144000000
+#define CY_CFG_SYSCLK_PLL2_OUTPUT_FREQ 200000000
 #define CY_CFG_SYSCLK_PLL3_ENABLED 1
 #define CY_CFG_SYSCLK_PLL3_FEEDBACK_DIV 25
-#define CY_CFG_SYSCLK_PLL3_REFERENCE_DIV 1
+#define CY_CFG_SYSCLK_PLL3_REFERENCE_DIV 2
 #define CY_CFG_SYSCLK_PLL3_OUTPUT_DIV 2
 #define CY_CFG_SYSCLK_PLL3_LF_MODE false
 #define CY_CFG_SYSCLK_PLL3_OUTPUT_MODE CY_SYSCLK_FLLPLL_OUTPUT_AUTO
 #define CY_CFG_SYSCLK_PLL3_OUTPUT_FREQ 100000000
+#define CY_CFG_SYSCLK_CLKSLOW_ENABLED 1
+#define CY_CFG_SYSCLK_CLKSLOW_DIVIDER 1
 #define CY_CFG_SYSCLK_WCO_ENABLED 1
 #define CY_CFG_SYSCLK_WCO_IN_PRT GPIO_PRT21
 #define CY_CFG_SYSCLK_WCO_IN_PIN 0U
@@ -154,169 +177,205 @@
 #define CY_CFG_PWR_ENABLED 1
 #define CY_CFG_PWR_INIT 1
 #define CY_CFG_PWR_VBACKUP_USING_VDDD 1
-#define CY_CFG_PWR_REGULATOR_MODE_MIN false
+#define CY_CFG_PWR_REGULATOR_MODE_MIN 0
 #define CY_CFG_PWR_USING_ULP 0
 
 #if (!defined(CY_DEVICE_SECURE))
-    static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig = 
-    {
-        .fllMult = 500U,
-        .refDiv = 40U,
-        .ccoRange = CY_SYSCLK_FLL_CCO_RANGE2,
-        .enableOutputDiv = true,
-        .lockTolerance = 10U,
-        .igain = 9U,
-        .pgain = 0U,
-        .settlingCount = 8U,
-        .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT,
-        .cco_Freq = 235U,
-    };
-#endif //(!defined(CY_DEVICE_SECURE))
-#if defined (CY_USING_HAL)
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 0U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 1U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 2U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 3U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 4U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 5U,
-        .channel_num = 0U,
-    };
-    const cyhal_resource_inst_t srss_0_clock_0_pathmux_6_obj = 
-    {
-        .type = CYHAL_RSC_CLKPATH,
-        .block_num = 6U,
-        .channel_num = 0U,
-    };
-#endif //defined (CY_USING_HAL)
-static const cy_stc_pll_manual_config_t srss_0_clock_0_pll400m_0_pllConfig = 
+static const cy_stc_fll_manual_config_t srss_0_clock_0_fll_0_fllConfig =
 {
-    .feedbackDiv = 62,
+    .fllMult = 500U,
+    .refDiv = 40U,
+    .ccoRange = CY_SYSCLK_FLL_CCO_RANGE4,
+    .enableOutputDiv = true,
+    .lockTolerance = 2U,
+    .igain = 9U,
+    .pgain = 5U,
+    .settlingCount = 16U,
+    .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_OUTPUT,
+    .cco_Freq = 355U,
+};
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
+#if defined (CY_USING_HAL)
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 0U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 1U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 2U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 3U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 4U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 5U,
+    .channel_num = 0U,
+};
+const cyhal_resource_inst_t srss_0_clock_0_pathmux_6_obj =
+{
+    .type = CYHAL_RSC_CLKPATH,
+    .block_num = 6U,
+    .channel_num = 0U,
+};
+#endif /* defined (CY_USING_HAL) */
+
+static const cy_stc_pll_manual_config_t srss_0_clock_0_pll400m_0_pllConfig =
+{
+    .feedbackDiv = 43,
     .referenceDiv = 1,
     .outputDiv = 2,
     .lfMode = false,
     .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
-    .fracDiv = 8388608,
+    .fracDiv = 12582912,
     .fracDitherEn = false,
     .fracEn = true,
 };
-static const cy_stc_pll_manual_config_t srss_0_clock_0_pll400m_1_pllConfig = 
+static const cy_stc_pll_manual_config_t srss_0_clock_0_pll400m_1_pllConfig =
 {
-    .feedbackDiv = 73,
+    .feedbackDiv = 31,
     .referenceDiv = 1,
-    .outputDiv = 3,
+    .outputDiv = 2,
     .lfMode = false,
     .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
-    .fracDiv = 8388608,
+    .fracDiv = 4194304,
     .fracDitherEn = false,
     .fracEn = true,
 };
+
 #if (!defined(CY_DEVICE_SECURE))
-    static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig = 
-    {
-        .feedbackDiv = 36,
-        .referenceDiv = 1,
-        .outputDiv = 2,
-        .lfMode = false,
-        .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
-    };
-    static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_1_pllConfig = 
-    {
-        .feedbackDiv = 25,
-        .referenceDiv = 1,
-        .outputDiv = 2,
-        .lfMode = false,
-        .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
-    };
-#endif //(!defined(CY_DEVICE_SECURE))
+static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_0_pllConfig =
+{
+    .feedbackDiv = 50,
+    .referenceDiv = 2,
+    .outputDiv = 2,
+    .lfMode = false,
+    .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
+};
+static const cy_stc_pll_manual_config_t srss_0_clock_0_pll_1_pllConfig =
+{
+    .feedbackDiv = 25,
+    .referenceDiv = 2,
+    .outputDiv = 2,
+    .lfMode = false,
+    .outputMode = CY_SYSCLK_FLLPLL_OUTPUT_AUTO,
+};
+#endif /* (!defined(CY_DEVICE_SECURE)) */
 
 __WEAK void cycfg_ClockStartupError(uint32_t error)
 {
     (void)error; /* Suppress the compiler warning */
     while(1);
 }
+
 #if !defined (CY_CFG_SYSCLK_ILO0_ENABLED)
-    __STATIC_INLINE void Cy_SysClk_Ilo0DeInit()
+__STATIC_INLINE void Cy_SysClk_Ilo0DeInit()
+{
+    if(Cy_SysPm_IsBgRefCtrl())
     {
-        if(Cy_SysPm_IsBgRefCtrl())
-        {
-            Cy_SysPm_BgRefCtrl(false);
-            Cy_WDT_Unlock();
-            Cy_SysClk_IloSrcDisable(0);
-            Cy_SysClk_IloSrcHibernateOn(0, false);
-            Cy_WDT_Lock();
-            Cy_SysPm_BgRefCtrl(true);
-        }
-        else
-        {
-            Cy_WDT_Unlock();
-            Cy_SysClk_IloSrcDisable(0);
-            Cy_SysClk_IloSrcHibernateOn(0, false);
-            Cy_WDT_Lock();
-        }
+        Cy_SysPm_BgRefCtrl(false);
+        Cy_WDT_Unlock();
+        Cy_SysClk_IloSrcDisable(0);
+        Cy_SysClk_IloSrcHibernateOn(0, false);
+        Cy_WDT_Lock();
+        Cy_SysPm_BgRefCtrl(true);
     }
-#endif //!defined (CY_CFG_SYSCLK_ILO0_ENABLED)
+    else
+    {
+        Cy_WDT_Unlock();
+        Cy_SysClk_IloSrcDisable(0);
+        Cy_SysClk_IloSrcHibernateOn(0, false);
+        Cy_WDT_Lock();
+    }
+}
+#endif /* !defined (CY_CFG_SYSCLK_ILO0_ENABLED) */
+
 #if !defined (CY_CFG_SYSCLK_ILO1_ENABLED)
-    __STATIC_INLINE void Cy_SysClk_Ilo1DeInit()
-    {
-        Cy_SysClk_IloSrcDisable(1);
-        Cy_SysClk_IloSrcHibernateOn(1, false);
-    }
-#endif //!defined (CY_CFG_SYSCLK_ILO1_ENABLED)
+__STATIC_INLINE void Cy_SysClk_Ilo1DeInit()
+{
+    Cy_SysClk_IloSrcDisable(1);
+    Cy_SysClk_IloSrcHibernateOn(1, false);
+}
+#endif /* !defined (CY_CFG_SYSCLK_ILO1_ENABLED) */
+
+#if ((!defined(CY_DEVICE_SECURE)))
+__STATIC_INLINE void Cy_SysClk_FllDeInit()
+{
+    Cy_SysClk_FllDisable();
+}
+#endif /* ((!defined(CY_DEVICE_SECURE))) */
+
+#if  (CY_CPU_CORTEX_M7)
+__STATIC_INLINE void Cy_SysClk_ClkAltSysTickInit()
+{
+    Cy_SysTick_Init(CY_CFG_SYSCLK_CLKALTSYSTICK_SOURCE, CY_CFG_SYSCLK_CLKALTSYSTICK_TICKS);
+}
+#endif /*  (CY_CPU_CORTEX_M7) */
+
 #if (!defined(CY_DEVICE_SECURE))
-    __STATIC_INLINE void Cy_SysClk_FllDeInit()
+__STATIC_INLINE void Cy_SysClk_ClkBakInit()
+{
+    Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_CLKLF);
+}
+__STATIC_INLINE void Cy_SysClk_EcoInit()
+{
+    (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 2, CY_GPIO_DM_ANALOG, 0UL, HSIOM_SEL_GPIO);
+    (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 3, CY_GPIO_DM_ANALOG, 0UL, HSIOM_SEL_GPIO);
+    if (CY_SYSCLK_BAD_PARAM == Cy_SysClk_EcoConfigure(CY_CFG_SYSCLK_ECO_FREQ, 17UL, 150UL, 100UL))
     {
-        Cy_SysClk_FllDisable();
+        cycfg_ClockStartupError(CY_CFG_SYSCLK_ECO_ERROR);
     }
-    __STATIC_INLINE void Cy_SysClk_ClkBakInit()
+    if (CY_SYSCLK_TIMEOUT == Cy_SysClk_EcoEnable(3000UL))
     {
-        Cy_SysClk_ClkBakSetSource(CY_SYSCLK_BAK_IN_CLKLF);
+        cycfg_ClockStartupError(CY_CFG_SYSCLK_ECO_ERROR);
     }
-#endif //(!defined(CY_DEVICE_SECURE))
+}
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
 __STATIC_INLINE void Cy_SysClk_ClkFast_0_Init()
 {
     Cy_SysClk_ClkFastSrcSetDivider(0, CY_CFG_SYSCLK_CLKFAST_0_INT_DIVIDER, CY_CFG_SYSCLK_CLKFAST_0_FRAC_DIVIDER);
 }
+__STATIC_INLINE void Cy_SysClk_ClkFast_1_Init()
+{
+    Cy_SysClk_ClkFastSrcSetDivider(1, CY_CFG_SYSCLK_CLKFAST_1_INT_DIVIDER, CY_CFG_SYSCLK_CLKFAST_1_FRAC_DIVIDER);
+}
+
 #if (!defined(CY_DEVICE_SECURE))
-    __STATIC_INLINE void Cy_SysClk_FllInit()
+__STATIC_INLINE void Cy_SysClk_FllInit()
+{
+    if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig))
     {
-        if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllManualConfigure(&srss_0_clock_0_fll_0_fllConfig))
-        {
-            cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR);
-        }
-        if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL))
-        {
-            cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR);
-        }
+        cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR);
     }
-#endif //(!defined(CY_DEVICE_SECURE))
+    if (CY_SYSCLK_SUCCESS != Cy_SysClk_FllEnable(200000UL))
+    {
+        cycfg_ClockStartupError(CY_CFG_SYSCLK_FLL_ERROR);
+    }
+}
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
 __STATIC_INLINE void Cy_SysClk_ClkHf0Init()
 {
     Cy_SysClk_ClkHfSetSource(0U, CY_CFG_SYSCLK_CLKHF0_CLKPATH);
@@ -340,21 +399,21 @@
 __STATIC_INLINE void Cy_SysClk_ClkHf3Init()
 {
     Cy_SysClk_ClkHfSetSource(CY_CFG_SYSCLK_CLKHF3, CY_CFG_SYSCLK_CLKHF3_CLKPATH);
-    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF3, CY_SYSCLK_CLKHF_NO_DIVIDE);
+    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF3, CY_SYSCLK_CLKHF_DIVIDE_BY_2);
     Cy_SysClk_ClkHfDirectSel(CY_CFG_SYSCLK_CLKHF3, false);
     Cy_SysClk_ClkHfEnable(CY_CFG_SYSCLK_CLKHF3);
 }
 __STATIC_INLINE void Cy_SysClk_ClkHf4Init()
 {
     Cy_SysClk_ClkHfSetSource(CY_CFG_SYSCLK_CLKHF4, CY_CFG_SYSCLK_CLKHF4_CLKPATH);
-    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF4, CY_SYSCLK_CLKHF_NO_DIVIDE);
+    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF4, CY_SYSCLK_CLKHF_DIVIDE_BY_2);
     Cy_SysClk_ClkHfDirectSel(CY_CFG_SYSCLK_CLKHF4, false);
     Cy_SysClk_ClkHfEnable(CY_CFG_SYSCLK_CLKHF4);
 }
 __STATIC_INLINE void Cy_SysClk_ClkHf5Init()
 {
     Cy_SysClk_ClkHfSetSource(CY_CFG_SYSCLK_CLKHF5, CY_CFG_SYSCLK_CLKHF5_CLKPATH);
-    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF5, CY_SYSCLK_CLKHF_NO_DIVIDE);
+    Cy_SysClk_ClkHfSetDivider(CY_CFG_SYSCLK_CLKHF5, CY_SYSCLK_CLKHF_DIVIDE_BY_2);
     Cy_SysClk_ClkHfDirectSel(CY_CFG_SYSCLK_CLKHF5, false);
     Cy_SysClk_ClkHfEnable(CY_CFG_SYSCLK_CLKHF5);
 }
@@ -372,59 +431,67 @@
     Cy_SysClk_ClkHfDirectSel(CY_CFG_SYSCLK_CLKHF7, false);
     Cy_SysClk_ClkHfEnable(CY_CFG_SYSCLK_CLKHF7);
 }
+
 #if (!defined(CY_DEVICE_SECURE))
-    __STATIC_INLINE void Cy_SysClk_Ilo0Init()
-    {
-        /* The WDT is unlocked in the default startup code */
-        Cy_SysClk_IloSrcEnable(0);
-        Cy_SysClk_IloSrcHibernateOn(0, true);
-    }
-    __STATIC_INLINE void Cy_SysClk_Ilo1Init()
-    {
-        /* The WDT is unlocked in the default startup code */
-        Cy_SysClk_IloSrcEnable(1);
-        Cy_SysClk_IloSrcHibernateOn(1, true);
-    }
-#endif //(!defined(CY_DEVICE_SECURE))
+__STATIC_INLINE void Cy_SysClk_Ilo0Init()
+{
+    /* The WDT is unlocked in the default startup code */
+    Cy_SysClk_IloSrcEnable(0);
+    Cy_SysClk_IloSrcHibernateOn(0, true);
+}
+__STATIC_INLINE void Cy_SysClk_Ilo1Init()
+{
+    /* The WDT is unlocked in the default startup code */
+    Cy_SysClk_IloSrcEnable(1);
+    Cy_SysClk_IloSrcHibernateOn(1, true);
+}
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
 __STATIC_INLINE void Cy_SysClk_ClkLfInit()
 {
     /* The WDT is unlocked in the default startup code */
     Cy_SysClk_ClkLfSetSource(CY_CFG_SYSCLK_CLKLF_SOURCE);
 }
+__STATIC_INLINE void Cy_SysClk_ClkMemInit()
+{
+    Cy_SysClk_ClkMemSetDivider(0U);
+}
+
 #if (!defined(CY_DEVICE_SECURE))
-    __STATIC_INLINE void Cy_SysClk_ClkPath0Init()
-    {
-        Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath1Init()
-    {
-        Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath2Init()
-    {
-        Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath3Init()
-    {
-        Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath4Init()
-    {
-        Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath5Init()
-    {
-        Cy_SysClk_ClkPathSetSource(5U, CY_CFG_SYSCLK_CLKPATH5_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPath6Init()
-    {
-        Cy_SysClk_ClkPathSetSource(6U, CY_CFG_SYSCLK_CLKPATH6_SOURCE);
-    }
-    __STATIC_INLINE void Cy_SysClk_ClkPeriInit()
-    {
-        Cy_SysClk_ClkPeriSetDivider(0U);
-    }
-#endif //(!defined(CY_DEVICE_SECURE))
+__STATIC_INLINE void Cy_SysClk_ClkPath0Init()
+{
+    Cy_SysClk_ClkPathSetSource(0U, CY_CFG_SYSCLK_CLKPATH0_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath1Init()
+{
+    Cy_SysClk_ClkPathSetSource(1U, CY_CFG_SYSCLK_CLKPATH1_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath2Init()
+{
+    Cy_SysClk_ClkPathSetSource(2U, CY_CFG_SYSCLK_CLKPATH2_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath3Init()
+{
+    Cy_SysClk_ClkPathSetSource(3U, CY_CFG_SYSCLK_CLKPATH3_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath4Init()
+{
+    Cy_SysClk_ClkPathSetSource(4U, CY_CFG_SYSCLK_CLKPATH4_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath5Init()
+{
+    Cy_SysClk_ClkPathSetSource(5U, CY_CFG_SYSCLK_CLKPATH5_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPath6Init()
+{
+    Cy_SysClk_ClkPathSetSource(6U, CY_CFG_SYSCLK_CLKPATH6_SOURCE);
+}
+__STATIC_INLINE void Cy_SysClk_ClkPeriInit()
+{
+    Cy_SysClk_ClkPeriSetDivider(1U);
+}
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
 __STATIC_INLINE void Cy_SysClk_Pll0Init()
 {
     Cy_SysClk_PllDisable(SRSS_PLL_400M_0_PATH_NUM);
@@ -477,17 +544,23 @@
         cycfg_ClockStartupError(CY_CFG_SYSCLK_PLL_ERROR);
     }
 }
+
 #if (!defined(CY_DEVICE_SECURE))
-    __STATIC_INLINE void Cy_SysClk_WcoInit()
+__STATIC_INLINE void Cy_SysClk_ClkSlowInit()
+{
+    Cy_SysClk_ClkSlowSetDivider(1U);
+}
+__STATIC_INLINE void Cy_SysClk_WcoInit()
+{
+    (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO);
+    (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO);
+    if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL))
     {
-        (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 0U, 0x00U, 0x00U, HSIOM_SEL_GPIO);
-        (void)Cy_GPIO_Pin_FastInit(GPIO_PRT21, 1U, 0x00U, 0x00U, HSIOM_SEL_GPIO);
-        if (CY_SYSCLK_SUCCESS != Cy_SysClk_WcoEnable(1000000UL))
-        {
-            cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR);
-        }
+        cycfg_ClockStartupError(CY_CFG_SYSCLK_WCO_ERROR);
     }
-#endif //(!defined(CY_DEVICE_SECURE))
+}
+#endif /* (!defined(CY_DEVICE_SECURE)) */
+
 __STATIC_INLINE void init_cycfg_power(void)
 {
     /* **Reset the Backup domain on POR, XRES, BOD only if Backup domain is supplied by VDDD** */
@@ -502,7 +575,12 @@
         #endif /* CY_CFG_SYSCLK_ILO_ENABLED */
     #endif /* CY_CFG_PWR_VBACKUP_USING_VDDD */
 
-    /* **System Active Low Power Profile(LPACTIVE/LPSLEEP) Configuration** */
+    /* **REGHC Configuration** */
+    #if (CY_CFG_PWR_REGHC_ENABLED)
+        Cy_SysPm_ReghcConfigure(CY_CFG_PWR_REGHC_MODE, CY_CFG_PWR_REGHC_TRANS_VADJ_VOLT);
+    #endif /* CY_CFG_PWR_REGHC_ENABLED */
+
+     /* **System Active Low Power Profile(LPACTIVE/LPSLEEP) Configuration** */
     #if (CY_CFG_PWR_SYS_LP_PROFILE_MODE)
         Cy_SysPm_SystemLpActiveEnter();
     #endif /* CY_CFG_PWR_SYS_ACTIVE_MODE */
@@ -513,13 +591,12 @@
     #else
         Cy_SysPm_SystemSetNormalRegulatorCurrent();
     #endif /* CY_CFG_PWR_REGULATOR_MODE_MIN */
-
 }
-
-
 void init_cycfg_system(void)
 {
-    Cy_SysClk_PeriPclkAssignDivider(PCLK_CPUSS_CLOCK_TRACE_IN, CY_SYSCLK_DIV_8_BIT, 2U);
+    Cy_SysClk_PeriPclkAssignDivider(PCLK_CPUSS_CLOCK_TRACE_IN, CY_SYSCLK_DIV_8_BIT, 3U);
+        /* Set worst case memory wait states (! ultra low power, 150 MHz), will update at the end */
+        Cy_SysLib_SetWaitStates(false, 150UL);
     #ifdef CY_CFG_PWR_ENABLED
         #ifdef CY_CFG_PWR_INIT
             init_cycfg_power();
@@ -528,7 +605,7 @@
         #endif /* CY_CFG_PWR_INIT */
     #endif /* CY_CFG_PWR_ENABLED */
     
-        /* Disable FLL */
+    /* Disable FLL */
         Cy_SysClk_FllDeInit();
     
     #ifdef CY_CFG_SYSCLK_ILO0_ENABLED
@@ -568,9 +645,9 @@
         Cy_SysClk_AltHfInit();
     #endif
     
-        #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED
-            Cy_SysClk_ClkPeriInit();
-        #endif
+    #ifdef CY_CFG_SYSCLK_CLKPERI_ENABLED
+        Cy_SysClk_ClkPeriInit();
+    #endif
     
     /* Configure Path Clocks */
     #ifdef CY_CFG_SYSCLK_CLKPATH1_ENABLED
@@ -742,6 +819,15 @@
         Cy_SysClk_ClkMfInit();
     #endif
     
+    #ifdef CY_CFG_SYSCLK_CLKPWR_ENABLED
+        Cy_SysClk_ClkPwrInit();
+    #endif
+    
+        /* Set accurate flash wait states */
+        #if (defined (CY_CFG_PWR_ENABLED) && defined (CY_CFG_SYSCLK_CLKHF1_ENABLED))
+            Cy_SysLib_SetWaitStates(false, CY_CFG_SYSCLK_CLKHF1_FREQ_MHZ);
+        #endif
+    
     #ifdef CY_CFG_SYSCLK_CLKPATH0_ENABLED
         Cy_SysClk_ClkPath0Init();
     #endif
@@ -770,20 +856,25 @@
     
 #if defined(CY_CFG_SYSCLK_ECO_PRESCALER_ENABLED)
         Cy_SysClk_EcoPrescalerInit();
-#endif //defined(CY_CFG_SYSCLK_ECO_PRESCALER_ENABLED)
+#endif /* defined(CY_CFG_SYSCLK_ECO_PRESCALER_ENABLED) */
+    #ifdef CY_CFG_SYSCLK_CLKALTSYSTICK_ENABLED
+        Cy_SysClk_ClkAltSysTickInit();
+    #endif
+    
     /* Update System Core Clock values for correct Cy_SysLib_Delay functioning */
     SystemCoreClockUpdate();
+#if defined (CY_USING_HAL)
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_0_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_1_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_2_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_3_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_4_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_5_obj);
+    (void)cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_6_obj);
+#endif /* defined (CY_USING_HAL) */
 }
-
 void reserve_cycfg_system(void)
 {
-#if defined (CY_USING_HAL)
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_0_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_1_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_2_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_3_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_4_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_5_obj);
-    cyhal_hwmgr_reserve(&srss_0_clock_0_pathmux_6_obj);
-#endif //defined (CY_USING_HAL)
+    Cy_SysClk_EcoSetFrequency(CY_CFG_SYSCLK_ECO_FREQ);
+    SystemCoreClockUpdate();
 }
diff --git a/boot/cypress/platforms/BSP/XMC7000/cycfg_system.h b/boot/cypress/platforms/BSP/XMC7000/cycfg_system.h
index f66c1bb..e214cda 100644
--- a/boot/cypress/platforms/BSP/XMC7000/cycfg_system.h
+++ b/boot/cypress/platforms/BSP/XMC7000/cycfg_system.h
@@ -1,30 +1,30 @@
 /*******************************************************************************
-* File Name: cycfg_system.h
-*
-* Description:
-* System configuration
-* This file was automatically generated and should not be modified.
-* Configurator Backend 3.0.0
-* device-db 4.2.0.3480
-* mtb-pdl-cat1 3.3.0.21979
-*
-********************************************************************************
-* Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
-* an affiliate of Cypress Semiconductor Corporation.
-* SPDX-License-Identifier: Apache-2.0
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-********************************************************************************/
+ * File Name: cycfg_system.h
+ *
+ * Description:
+ * System configuration
+ * This file was automatically generated and should not be modified.
+ * Configurator Backend 3.20.0
+ * device-db 4.12.0.5709
+ * mtb-pdl-cat1 3.600.0.33254
+ *
+ *******************************************************************************
+ * Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
+ * an affiliate of Cypress Semiconductor Corporation.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
 
 #if !defined(CYCFG_SYSTEM_H)
 #define CYCFG_SYSTEM_H
@@ -32,42 +32,47 @@
 #include "cycfg_notices.h"
 #include "cy_sysclk.h"
 #include "cy_wdt.h"
-#if defined (CY_USING_HAL)
-    #include "cyhal_hwmgr.h"
-#endif //defined (CY_USING_HAL)
+#include "cy_systick.h"
 #include "cy_gpio.h"
 #include "cy_syspm.h"
 
+#if defined (CY_USING_HAL)
+#include "cyhal_hwmgr.h"
+#endif /* defined (CY_USING_HAL) */
+
 #if defined(__cplusplus)
 extern "C" {
-#endif
+#endif /* defined(__cplusplus) */
 
 #define cpuss_0_dap_0_ENABLED 1U
 #define srss_0_clock_0_ENABLED 1U
+#define srss_0_clock_0_altsystickclk_0_ENABLED 1U
 #define srss_0_clock_0_bakclk_0_ENABLED 1U
+#define srss_0_clock_0_eco_0_ENABLED 1U
 #define srss_0_clock_0_fastclk_0_ENABLED 1U
+#define srss_0_clock_0_fastclk_1_ENABLED 1U
 #define srss_0_clock_0_fll_0_ENABLED 1U
 #define srss_0_clock_0_hfclk_0_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF0 0UL
-#define CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM 0UL
+#define CY_CFG_SYSCLK_CLKHF0_CLKPATH_NUM 3UL
 #define srss_0_clock_0_hfclk_1_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF1 1UL
 #define CY_CFG_SYSCLK_CLKHF1_CLKPATH_NUM 1UL
 #define srss_0_clock_0_hfclk_2_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF2 2UL
-#define CY_CFG_SYSCLK_CLKHF2_CLKPATH_NUM 2UL
+#define CY_CFG_SYSCLK_CLKHF2_CLKPATH_NUM 4UL
 #define srss_0_clock_0_hfclk_3_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF3 3UL
 #define CY_CFG_SYSCLK_CLKHF3_CLKPATH_NUM 3UL
 #define srss_0_clock_0_hfclk_4_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF4 4UL
-#define CY_CFG_SYSCLK_CLKHF4_CLKPATH_NUM 4UL
+#define CY_CFG_SYSCLK_CLKHF4_CLKPATH_NUM 2UL
 #define srss_0_clock_0_hfclk_5_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF5 5UL
-#define CY_CFG_SYSCLK_CLKHF5_CLKPATH_NUM 5UL
+#define CY_CFG_SYSCLK_CLKHF5_CLKPATH_NUM 2UL
 #define srss_0_clock_0_hfclk_6_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF6 6UL
-#define CY_CFG_SYSCLK_CLKHF6_CLKPATH_NUM 5UL
+#define CY_CFG_SYSCLK_CLKHF6_CLKPATH_NUM 3UL
 #define srss_0_clock_0_hfclk_7_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKHF7 7UL
 #define CY_CFG_SYSCLK_CLKHF7_CLKPATH_NUM 5UL
@@ -76,7 +81,8 @@
 #define srss_0_clock_0_imo_0_ENABLED 1U
 #define srss_0_clock_0_lfclk_0_ENABLED 1U
 #define CY_CFG_SYSCLK_CLKLF_FREQ_HZ 32768
-#define CY_CFG_SYSCLK_CLKLF_SOURCE CY_SYSCLK_CLKLF_IN_ILO
+#define CY_CFG_SYSCLK_CLKLF_SOURCE CY_SYSCLK_CLKLF_IN_WCO
+#define srss_0_clock_0_memclk_0_ENABLED 1U
 #define srss_0_clock_0_pathmux_0_ENABLED 1U
 #define srss_0_clock_0_pathmux_1_ENABLED 1U
 #define srss_0_clock_0_pathmux_2_ENABLED 1U
@@ -85,10 +91,13 @@
 #define srss_0_clock_0_pathmux_5_ENABLED 1U
 #define srss_0_clock_0_pathmux_6_ENABLED 1U
 #define srss_0_clock_0_periclk_0_ENABLED 1U
+#define CY_CFG_SYSCLK_CLKPERI_ENABLED 1
+#define CY_CFG_SYSCLK_CLKPERI_DIVIDER 1
 #define srss_0_clock_0_pll400m_0_ENABLED 1U
 #define srss_0_clock_0_pll400m_1_ENABLED 1U
 #define srss_0_clock_0_pll_0_ENABLED 1U
 #define srss_0_clock_0_pll_1_ENABLED 1U
+#define srss_0_clock_0_slowclk_0_ENABLED 1U
 #define srss_0_clock_0_timerclk_0_ENABLED 1U
 #define srss_0_clock_0_wco_0_ENABLED 1U
 #define srss_0_power_0_ENABLED 1U
@@ -100,28 +109,31 @@
 #define CY_CFG_PWR_MODE_DEEPSLEEP_RAM 0x11UL
 #define CY_CFG_PWR_MODE_DEEPSLEEP_OFF 0x12UL
 #define CY_CFG_PWR_SYS_IDLE_MODE CY_CFG_PWR_MODE_DEEPSLEEP
+#define CY_CFG_PWR_DEEPSLEEP_LATENCY 0UL
 #define CY_CFG_PWR_SYS_LP_PROFILE_MODE 0
 #define CY_CFG_PWR_VDDA_MV 3300
 #define CY_CFG_PWR_VDDD_MV 3300
 #define CY_CFG_PWR_VDDIO0_MV 3300
 #define CY_CFG_PWR_VDDIO1_MV 3300
+#define CY_CFG_PWR_REGHC_ENABLED false
+#define CY_CFG_PWR_REGHC_MODE 255
+#define CY_CFG_PWR_REGHC_TRANS_VADJ_VOLT 0
 
 #if defined (CY_USING_HAL)
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj;
-    extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_6_obj;
-#endif //defined (CY_USING_HAL)
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_0_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_1_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_2_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_3_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_4_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_5_obj;
+extern const cyhal_resource_inst_t srss_0_clock_0_pathmux_6_obj;
+#endif /* defined (CY_USING_HAL) */
 
 void init_cycfg_system(void);
 void reserve_cycfg_system(void);
 
 #if defined(__cplusplus)
 }
-#endif
-
+#endif /* defined(__cplusplus) */
 
 #endif /* CYCFG_SYSTEM_H */
diff --git a/boot/cypress/platforms/BSP/XMC7000/qspi_config.cfg b/boot/cypress/platforms/BSP/XMC7000/qspi_config.cfg
index 24b90b9..295934a 100644
--- a/boot/cypress/platforms/BSP/XMC7000/qspi_config.cfg
+++ b/boot/cypress/platforms/BSP/XMC7000/qspi_config.cfg
@@ -4,10 +4,10 @@
 # Description:
 # This file contains a SMIF Bank layout for use with OpenOCD.
 # This file was automatically generated and should not be modified.
-# QSPI Configurator: 4.0.0.974
+# QSPI Configurator: 4.30.0.1865
 #
 ################################################################################
-# Copyright 2023 Cypress Semiconductor Corporation (an Infineon company) or
+# Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or
 # an affiliate of Cypress Semiconductor Corporation.
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -25,5 +25,5 @@
 ################################################################################
 
 set SMIF_BANKS {
-  0 {addr 0x60000000 size 0x800000 psize 0x0000100 esize 0x0001000}
+  0 {addr 0x60000000 size 0x800000 psize 0x00000200 esize 0x00040000}
 }
diff --git a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM0P/system_cm0plus.c b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM0P/system_cm0plus.c
index 3d691a3..f110bef 100644
--- a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM0P/system_cm0plus.c
+++ b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM0P/system_cm0plus.c
@@ -35,7 +35,6 @@
 
 
 #include <stdbool.h>
-#include "system_cat1c.h"
 #include "cy_device.h"
 #include "cy_device_headers.h"
 #include "cy_syslib.h"
diff --git a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/startup_cm7.c b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/startup_cm7.c
index c2c36d9..0415a87 100644
--- a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/startup_cm7.c
+++ b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/startup_cm7.c
@@ -244,6 +244,10 @@
 void CM7_CpuIntr7_Handler   (void) __attribute__ ((weak, alias("Default_CpuIntr7_Handler")));
 
 extern const cy_israddress __Vectors[VECTORTABLE_SIZE];
+#if defined (__GNUC__)
+_Pragma("GCC diagnostic push")
+_Pragma("GCC diagnostic ignored \"-Wpedantic\"")
+#endif /* __GNUC__ */
 const cy_israddress __Vectors[VECTORTABLE_SIZE] __VECTOR_TABLE_ATTRIBUTE = {
     (cy_israddress)&__INITIAL_SP,
     (cy_israddress)Reset_Handler,               /* initial PC/Reset */
@@ -280,7 +284,9 @@
     (cy_israddress)Default_Handler,
     (cy_israddress)Default_Handler
 };
-
+#if defined (__GNUC__)
+_Pragma("GCC diagnostic pop")
+#endif /* __GNUC__ */
 
 /* Provide empty __WEAK implementation for the low-level initialization
    routine required by the RTOS-enabled applications.
@@ -342,6 +348,25 @@
     SCB->ITCMCR = SCB->ITCMCR | 0x7; /* Set ITCMCR.EN, .RMW and .RETEN fields */
     SCB->DTCMCR = SCB->DTCMCR | 0x7; /* Set DTCMCR.EN, .RMW and .RETEN fields */
 
+#ifdef CORE_NAME_CM7_0
+    CPUSS_CM7_0_CTL |= (0x1 << CPUSS_CM7_0_CTL_INIT_TCM_EN_Pos);
+    CPUSS_CM7_0_CTL |= (0x2 << CPUSS_CM7_0_CTL_INIT_TCM_EN_Pos);
+    CPUSS_CM7_0_CTL |= (0x1 << CPUSS_CM7_0_CTL_INIT_RMW_EN_Pos);
+    CPUSS_CM7_0_CTL |= (0x2 << CPUSS_CM7_0_CTL_INIT_RMW_EN_Pos);
+#elif CORE_NAME_CM7_1
+    CPUSS_CM7_1_CTL |= (0x1 << CPUSS_CM7_1_CTL_INIT_TCM_EN_Pos);
+    CPUSS_CM7_1_CTL |= (0x2 << CPUSS_CM7_1_CTL_INIT_TCM_EN_Pos);
+    CPUSS_CM7_1_CTL |= (0x1 << CPUSS_CM7_1_CTL_INIT_RMW_EN_Pos);
+    CPUSS_CM7_1_CTL |= (0x2 << CPUSS_CM7_1_CTL_INIT_RMW_EN_Pos);
+#else
+/**/
+#endif
+
+    // ITCMCR EN/RMW/RETEN enabled to access ITCM
+    __UNALIGNED_UINT32_WRITE(((void const *)0xE000EF90), 0x2F);
+    // DTCMCR EN/RMW/RETEN enabled to access DTCM
+    __UNALIGNED_UINT32_WRITE(((void const *)0xE000EF94), 0x2F);
+
     /* Enable FPU if present */
     FpuEnable();
 
diff --git a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/system_cm7.c b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/system_cm7.c
index 650b3b9..488f191 100644
--- a/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/system_cm7.c
+++ b/boot/cypress/platforms/BSP/XMC7000/system/COMPONENT_CM7/system_cm7.c
@@ -23,7 +23,6 @@
 *******************************************************************************/
 
 #include <stdbool.h>
-#include "system_cat1c.h"
 #include "cy_device.h"
 #include "cy_device_headers.h"
 #include "cy_syslib.h"
@@ -219,31 +218,29 @@
 * The system interrupt mapped to CPU interrupt will be fetched and executed
 *
 *******************************************************************************/
+
 void CM7_CpuIntr_Handler(uint8_t intrNum)
 {
     uint32_t system_int_idx;
     cy_israddress handler;
 
-    if(CY_IS_CM7_CORE_0 && (_FLD2VAL(CPUSS_CM7_0_INT_STATUS_SYSTEM_INT_VALID, CPUSS_CM7_0_INT_STATUS[intrNum])))
+#ifdef CORE_NAME_CM7_0
+    if((_FLD2VAL(CPUSS_CM7_0_INT_STATUS_SYSTEM_INT_VALID, CPUSS_CM7_0_INT_STATUS[intrNum])))
     {
         system_int_idx = _FLD2VAL(CPUSS_CM7_0_INT_STATUS_SYSTEM_INT_IDX, CPUSS_CM7_0_INT_STATUS[intrNum]);
         handler = Cy_SystemIrqUserTable[system_int_idx];
-        if(handler != NULL)
         handler(); // jump to system interrupt handler
     }
-    else if(CY_IS_CM7_CORE_1 && (_FLD2VAL(CPUSS_CM7_1_INT_STATUS_SYSTEM_INT_VALID, CPUSS_CM7_1_INT_STATUS[intrNum])))
+#endif
+#ifdef CORE_NAME_CM7_1
+    if((_FLD2VAL(CPUSS_CM7_1_INT_STATUS_SYSTEM_INT_VALID, CPUSS_CM7_1_INT_STATUS[intrNum])))
     {
         system_int_idx = _FLD2VAL(CPUSS_CM7_1_INT_STATUS_SYSTEM_INT_IDX, CPUSS_CM7_1_INT_STATUS[intrNum]);
         handler = Cy_SystemIrqUserTable[system_int_idx];
-        if(handler != NULL)
         handler(); // jump to system interrupt handler
     }
-    else
-    {
-        // Triggered by software or because of software cleared a peripheral interrupt flag but did not clear the pending flag at NVIC
-    }
+#endif
     NVIC_ClearPendingIRQ((IRQn_Type)intrNum);
 }
 
 
-
diff --git a/boot/cypress/platforms/BSP/XMC7000/system/system_cat1c.h b/boot/cypress/platforms/BSP/XMC7000/system/system_cat1c.h
index 8c67ae9..3fe0771 100644
--- a/boot/cypress/platforms/BSP/XMC7000/system/system_cat1c.h
+++ b/boot/cypress/platforms/BSP/XMC7000/system/system_cat1c.h
@@ -268,6 +268,19 @@
 * Change the stack size by modifying the following line:\n
 * \code STACK_SIZE = 0x1000; \endcode
 *
+* \note Correct operation of malloc and related functions depends on the working
+* implementation of the 'sbrk' function. Newlib-nano (default C runtime library
+* used by the GNU Arm Embedded toolchain) provides weak 'sbrk' implementation that
+* doesn't check for heap and stack collisions during excessive memory allocations.
+* To ensure the heap always remains within the range defined by __HeapBase and
+* __HeapLimit linker symbols, provide a strong override for the 'sbrk' function:
+* \snippet startup/snippet/main.c snippet_sbrk
+* For FreeRTOS-enabled multi-threaded applications, it is sufficient to include
+* clib-support library that provides newlib-compatible implementations of
+* 'sbrk', '__malloc_lock' and '__malloc_unlock':
+* <br>
+* https://github.com/Infineon/clib-support.
+*
 * \subsubsection group_system_config_heap_stack_config_mdk_cm7 ARM Compiler
 * <b>Editing source code files</b>\n
 * The stack size is defined in the linker script files: 'xx_yy_zz.sct',
@@ -425,6 +438,16 @@
 /** Error Selection */
 #define CORE_MAX                    (2U)
 
+/** Define start of the function placed to the ITCM area by the linker */
+#ifndef CY_SECTION_ITCM_BEGIN
+#define CY_SECTION_ITCM_BEGIN CY_SECTION(".cy_itcm")
+#endif
+
+/** Define end of the function placed to the ITCM area by the linker */
+#ifndef CY_SECTION_ITCM_END
+#define CY_SECTION_ITCM_END
+#endif
+
 extern uint32_t cy_delayFreqHz;
 extern uint32_t cy_delayFreqKhz;
 extern uint32_t  cy_delayFreqMhz;
diff --git a/boot/cypress/platforms/BSP/XMC7000/system/xmc7xxx_partition.h b/boot/cypress/platforms/BSP/XMC7000/system/xmc7xxx_partition.h
index cd6530d..b6a3f2d 100644
--- a/boot/cypress/platforms/BSP/XMC7000/system/xmc7xxx_partition.h
+++ b/boot/cypress/platforms/BSP/XMC7000/system/xmc7xxx_partition.h
@@ -8,21 +8,41 @@
 #define SRAM_PRIVATE_FOR_SROM           0x800 /* 2K Private SRAM for SROM (e.g. API processing). Reserved at the beginning */
 
 /* RAM */
-#define SRAM_BASE_ADDRESS               0x28000000  /* SRAM START */
-#define CM0PLUS_SRAM_RESERVE            0x20000     /* 128K (SRAM0/128KB) -> cm0plus */
-#define CM7_0_SRAM_RESERVE              0x80000 - CM0PLUS_SRAM_RESERVE /* (SRAM0/384KB) -> cm7_0 */
+#define SRAM_BASE_ADDRESS               CY_SRAM_BASE  /* SRAM START */
+#define TOTAL_RAM                       CY_SRAM_SIZE
+#define CM0PLUS_SRAM_RESERVE            0x00004000  /* 16K cm0plus */
 
 /* FLASH */
-#define CODE_FLASH_BASE_ADDRESS         0x10000000  /* FLASH START */
-#define CM0PLUS_CODE_FLASH_RESERVE      0x80000     /* 512K CM0P FLASH SIZE */
-#define CM7_0_CODE_FLASH_RESERVE        0x200000    /* 2048K CM7_0 FLASH SIZE */
+#define CODE_FLASH_BASE_ADDRESS         CY_FLASH_LG_SBM_BASE  /* FLASH START */
+#define TOTAL_FLASH                     (CY_FLASH_LG_SBM_SIZE + CY_FLASH_SM_SBM_SIZE)
+#define CM0PLUS_CODE_FLASH_RESERVE      0x00080000     /* 512K CM0P FLASH SIZE */
+
+/* CM7_1 RAM and FLASH */
+#if defined (__CM7_1_PRESENT)
+    #define CM7_1_SRAM_RESERVE          0x00010000   /* (SRAM0/64KB) -> cm7_1 */
+#else
+    #define CM7_1_SRAM_RESERVE          0x00000000UL
+#endif
+
+#if (TOTAL_FLASH == 0x830000) /** 8M device */
+    #define CM7_0_CODE_FLASH_RESERVE    0x00200000
+#elif (TOTAL_FLASH == 0x410000) /** 4M device */
+    #define CM7_0_CODE_FLASH_RESERVE    0x00200000
+#elif (TOTAL_FLASH == 0x210000) /** 2M device */
+    #define CM7_0_CODE_FLASH_RESERVE    0x00100000
+#elif (TOTAL_FLASH == 0x110000) /** 1M device */
+    #define CM7_0_CODE_FLASH_RESERVE    0x00090000
+#else
+    #error "Invalid device"
+#endif
+
 
 /* SRAM reservations */
-#define BASE_SRAM_CM0P                  SRAM_BASE_ADDRESS + SRAM_START_RESERVE + SRAM_PRIVATE_FOR_SROM
-#define SIZE_SRAM_CM0P                  CM0PLUS_SRAM_RESERVE - SRAM_START_RESERVE - SRAM_PRIVATE_FOR_SROM
-#define BASE_SRAM_CM7_0                 SRAM_BASE_ADDRESS + CM0PLUS_SRAM_RESERVE
-#define SIZE_SRAM_CM7_0                 CM7_0_SRAM_RESERVE
-#define BASE_SRAM_CM7_1                 SRAM_BASE_ADDRESS + CM0PLUS_SRAM_RESERVE + CM7_0_SRAM_RESERVE
+#define BASE_SRAM_CM0P                  (SRAM_BASE_ADDRESS + SRAM_START_RESERVE + SRAM_PRIVATE_FOR_SROM)
+#define SIZE_SRAM_CM0P                  (CM0PLUS_SRAM_RESERVE - SRAM_START_RESERVE - SRAM_PRIVATE_FOR_SROM)
+#define BASE_SRAM_CM7_0                 (SRAM_BASE_ADDRESS + CM0PLUS_SRAM_RESERVE)
+#define SIZE_SRAM_CM7_0                 TOTAL_RAM - CM0PLUS_SRAM_RESERVE - CM7_1_SRAM_RESERVE
+#define BASE_SRAM_CM7_1                 SRAM_BASE_ADDRESS + CM0PLUS_SRAM_RESERVE + SIZE_SRAM_CM7_0
 
 /* Code flash reservations */
 #define BASE_CODE_FLASH_CM0P            CODE_FLASH_BASE_ADDRESS
@@ -31,8 +51,6 @@
 #define SIZE_CODE_FLASH_CM7_0           CM7_0_CODE_FLASH_RESERVE
 #define BASE_CODE_FLASH_CM7_1           CODE_FLASH_BASE_ADDRESS + CM0PLUS_CODE_FLASH_RESERVE + CM7_0_CODE_FLASH_RESERVE
 
-
-
 #endif /* LAYOUT_CAT1C_H */
 
 
diff --git a/boot/cypress/platforms/CYW20829.mk b/boot/cypress/platforms/CYW20829.mk
index 54dad0f..f675610 100644
--- a/boot/cypress/platforms/CYW20829.mk
+++ b/boot/cypress/platforms/CYW20829.mk
@@ -75,6 +75,8 @@
 
 ifeq ($(APP_NAME), MCUBootApp)
 
+DEFINES += COMPONENT_CUSTOM_DESIGN_MODUS
+
 # Platform dependend utils files
 PLATFORM_APP_SOURCES := $(PRJ_DIR)/platforms/utils/$(FAMILY)/cyw_platform_utils.c
 PLATFORM_INCLUDE_DIRS_UTILS := $(PRJ_DIR)/platforms/utils/$(FAMILY)
