#
#   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
    int
    default 10240

config BOOT_SWAP_SAVE_ENCTLV
    bool
    default n

config BOOT_ENCRYPT_RSA
    bool
    default n

config BOOT_ENCRYPT_EC256
    bool
    default n

config BOOT_ENCRYPT_X25519
    bool
    default n

config BOOT_BOOTSTRAP
    bool
    default n

config PM
    bool
    default n

config FLASH
    bool
    default y

config FPROTECT
    bool
    default y

config NORDIC_QSPI_NOR
    bool
    default y

config NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE
    int
    default 4096

config NORDIC_QSPI_NOR_STACK_WRITE_BUFFER_SIZE
    int
    default 16

config BOOT_MAX_IMG_SECTORS
    int
    default 256

config LOG
    bool
    default n

config CONSOLE_HANDLER
    bool
    default n

config BOOT_BANNER
    bool
    default n

config TIMESLICING
    bool
    default n

config RESET_ON_FATAL_ERROR
    bool
    default n

config MULTITHREADING
    bool
    default n

config TICKLESS_KERNEL
    bool
    default n

config TIMEOUT_64BIT
    bool
    default n

config NRF_ENABLE_ICACHE
    bool
    default n

if SOC_SERIES_NRF53X

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

config UPDATEABLE_IMAGE_NUMBER
    int
    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
    bool
    default y

config FLASH_SIMULATOR_DOUBLE_WRITES
    bool
    default y

config FLASH_SIMULATOR_STATS
    bool
    default n

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

config BOOT_MGMT_CUSTOM_STORAGE_ERASE
    bool
    default y

endif # SOC_SERIES_NRF53X
