# Espressif's Interrupt Allocator driver for Xtensa SoCs

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

config INTC_ESP32
	bool "Interrupt allocator for Xtensa-based Espressif SoCs"
	default y if SOC_ESP32 || SOC_ESP32S2 || SOC_ESP32_NET
	help
	  Enable custom interrupt allocator for Espressif SoCs based on Xtensa
	  architecture.

config INTC_ESP32_DECISIONS_LOG
	bool "Espressif's interrupt allocator logging"
	depends on INTC_ESP32
	select LOG
	help
	  Enable this option to visualize information on decisions made by the
	  interrupt allocator. This has no impact on the interrupt allocator usage
	  but may be valuable for debugging purposes. When enabled, messages are
	  print to the serial console.
