# Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd.
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_ESP32C2 || SOC_SERIES_ESP32C3 || SOC_SERIES_ESP32C6

config GEN_ISR_TABLES
	default y

config GEN_SW_ISR_TABLE
	default y

config GEN_IRQ_VECTOR_TABLE
	default n

config DYNAMIC_INTERRUPTS
	default y

config ISR_STACK_SIZE
	default 2048

config ATOMIC_OPERATIONS_C
	default y

config XTAL_FREQ_HZ
	int
	default $(dt_node_int_prop_int,/cpus/cpu@0,xtal-freq)

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 10400000 if XTAL_FREQ_HZ = 26000000
	default 16000000 if XTAL_FREQ_HZ = 40000000

config SYS_CLOCK_TICKS_PER_SEC
	default 1000

config MINIMAL_LIBC_OPTIMIZE_STRING_FOR_SIZE
	default n

config SOC_FLASH_ESP32
	default y

if BOOTLOADER_MCUBOOT

config HAS_FLASH_LOAD_OFFSET
	default y

config MCUBOOT_GENERATE_UNSIGNED_IMAGE
	default y

config MCUBOOT_GENERATE_CONFIRMED_IMAGE
	default y

config ROM_START_OFFSET
	default 0x20

endif # BOOTLOADER_MCUBOOT

endif # SOC_SERIES_ESP32C2 || SOC_SERIES_ESP32C3 || SOC_SERIES_ESP32C6

if SOC_SERIES_ESP32 || SOC_SERIES_ESP32S2 || SOC_SERIES_ESP32S3

# Xtensa default options for ESP32 family
config XTENSA_RESET_VECTOR
	default n

config XTENSA_USE_CORE_CRT1
	default n

config GEN_ISR_TABLES
	default y

config GEN_IRQ_VECTOR_TABLE
	default n

config CLOCK_CONTROL
	default y

config SOC_FLASH_ESP32
	default y

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)

config XTENSA_CCOUNT_HZ
	default SYS_CLOCK_HW_CYCLES_PER_SEC

config MINIMAL_LIBC_OPTIMIZE_STRING_FOR_SIZE
	default n

if BOOTLOADER_MCUBOOT

config HAS_FLASH_LOAD_OFFSET
	default y

config MCUBOOT_GENERATE_UNSIGNED_IMAGE
	default y

config MCUBOOT_GENERATE_CONFIRMED_IMAGE
	default y

config ROM_START_OFFSET
	default 0x20

endif # BOOTLOADER_MCUBOOT

endif # SOC_SERIES_ESP32 || SOC_SERIES_ESP32S2 || SOC_SERIES_ESP32S3
