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

config SOC_SERIES_ESP32
	bool "ESP32 Series"
	select XTENSA
	select SOC_FAMILY_ESP32
	select CLOCK_CONTROL
	select DYNAMIC_INTERRUPTS
	select ARCH_HAS_GDBSTUB
	select ARCH_SUPPORTS_COREDUMP
	select PINCTRL
	select XIP if !MCUBOOT
	select HAS_ESPRESSIF_HAL
	select CPU_HAS_FPU
	select HAS_PM
	select HAS_POWEROFF
	help
	  Enable support for Espressif ESP32

config SOC_ESP32_PROCPU
	bool "Application runs in ESP32 PROCPU (core 0)"
	depends on SOC_SERIES_ESP32
	help
	  When this SOC is enabled, it will run application on PROCPU (core 0). It will automatically
	  enable AMP support by building, flashing and loading APPCPU (core 1) image if exists.

config SOC_ESP32_APPCPU
	bool "Application runs in ESP32 APPCPU (core 1)"
	depends on SOC_SERIES_ESP32
	help
	  When this SOC is enabled, it will run application on APPCPU (core 1). It is expected that
	  there is another image running on PROCPU (core 0) to trigger the AMP support.
