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

config SOC_SERIES_ESP32C2
	select RISCV
	select RISCV_GP
	select DYNAMIC_INTERRUPTS
	select CLOCK_CONTROL
	select PINCTRL
	select RISCV_ISA_RV32I
	select RISCV_ISA_EXT_M
	select RISCV_ISA_EXT_C
	select RISCV_ISA_EXT_ZICSR
	select HAS_ESPRESSIF_HAL

if SOC_SERIES_ESP32C2

config MAC_BB_PD
	bool "Power down MAC and baseband of Wi-Fi and Bluetooth when PHY is disabled"
	depends on SOC_SERIES_ESP32C2 && TICKLESS_KERNEL
	help
	  If enabled, the MAC and baseband of Wi-Fi and Bluetooth will be powered
	  down when PHY is disabled. Enabling this setting reduces power consumption
	  by a small amount but increases RAM use by approximately 4 KB(Wi-Fi only),
	  2 KB(Bluetooth only) or 5.3 KB(Wi-Fi + Bluetooth).

endif # SOC_SERIES_ESP32C2
