#
#   Copyright (c) 2022 Project CHIP Authors
#
#   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.
#

# The purpose of this file is to define new default values of settings used when building mcuboot child image for Matter samples.

config MAIN_STACK_SIZE
    default 10240

config BOOT_SWAP_SAVE_ENCTLV
    default n

config BOOT_ENCRYPT_RSA
    default n

config BOOT_ENCRYPT_EC256
    default n

config BOOT_ENCRYPT_X25519
    default n

config BOOT_BOOTSTRAP
    default n

config PM
    default n

config FLASH
    default y

config FPROTECT
    default y

# nRF7002DK uses SPI NOR external flash
if BOARD_NRF7002DK_NRF5340_CPUAPP

config SPI
    default y

config SPI_NOR
    default y

choice SPI_NOR_SFDP
	default SPI_NOR_SFDP_DEVICETREE
endchoice

config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE
    default 4096

config MULTITHREADING
    default y

config PM_OVERRIDE_EXTERNAL_DRIVER_CHECK
    default y

endif

# All boards beside nRF7002DK use QSPI NOR external flash
if BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF52840DK_NRF52840

config NORDIC_QSPI_NOR
    default y

config NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE
    default 4096

config NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE
    default 16

endif

config BOOT_MAX_IMG_SECTORS
    default 256

config LOG
    default n

config CONSOLE_HANDLER
    default n

config BOOT_BANNER
    default n

config TIMESLICING
    default n

config RESET_ON_FATAL_ERROR
    default n

config MULTITHREADING
    default n

config TICKLESS_KERNEL
    default n

config TIMEOUT_64BIT
    default n

config NRF_ENABLE_ICACHE
    default n

if SOC_SERIES_NRF53X

# The following configurations are required to support simultaneous multi image update
config PCD_APP
    default y

config UPDATEABLE_IMAGE_NUMBER
    default 2

# Multi-image updates do not support image swapping yet.
choice BOOT_IMAGE_UPGRADE_MODE
    default BOOT_UPGRADE_ONLY
endchoice

# The network core cannot access external flash directly. The flash simulator must be used to
# provide a memory region that is used to forward the new firmware to the network core.
config FLASH_SIMULATOR
    default y

config FLASH_SIMULATOR_DOUBLE_WRITES
    default y

config FLASH_SIMULATOR_STATS
    default n

# Enable custom command to erase settings partition.
config ENABLE_MGMT_PERUSER
    default y

config BOOT_MGMT_CUSTOM_STORAGE_ERASE
    default y

endif # SOC_SERIES_NRF53X
