# STM32 EXTI configuration

# Copyright (c) 2016 Open-RnD Sp. z o.o.
# SPDX-License-Identifier: Apache-2.0

if SOC_FAMILY_STM32

config EXTI_STM32
	bool "External Interrupt/Event Controller (EXTI) Driver for STM32 family of MCUs"
	default y if SOC_FAMILY_STM32
	help
	  Enable EXTI driver for STM32 line of MCUs

config EXTI_STM32_EXTI1_0_IRQ_PRI
	int "EXTI1:0 IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
	default 0
	help
	  IRQ priority of EXTI1:0 interrupt

config EXTI_STM32_EXTI3_2_IRQ_PRI
	int "EXTI3:2 IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
	default 0
	help
	  IRQ priority of EXTI3:2 interrupt

config EXTI_STM32_EXTI15_4_IRQ_PRI
	int "EXTI15:4 IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32G0X
	default 0
	help
	  IRQ priority of EXTI15:4 interrupt

if SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y && SOC_SERIES_STM32G0X!=y

config EXTI_STM32_EXTI0_IRQ_PRI
	int "EXTI0 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI0 interrupt

config EXTI_STM32_EXTI1_IRQ_PRI
	int "EXTI1 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI1 interrupt

config EXTI_STM32_EXTI2_IRQ_PRI
	int "EXTI2 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI2 interrupt

config EXTI_STM32_EXTI3_IRQ_PRI
	int "EXTI3 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI3 interrupt

config EXTI_STM32_EXTI4_IRQ_PRI
	int "EXTI4 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI4 interrupt

if SOC_SERIES_STM32MP1X
config EXTI_STM32_EXTI5_IRQ_PRI
	int "EXTI5 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI5 interrupt

config EXTI_STM32_EXTI6_IRQ_PRI
	int "EXTI6 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI6 interrupt

config EXTI_STM32_EXTI7_IRQ_PRI
	int "EXTI7 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI7 interrupt

config EXTI_STM32_EXTI8_IRQ_PRI
	int "EXTI8 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI8 interrupt

config EXTI_STM32_EXTI9_IRQ_PRI
	int "EXTI9 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI9 interrupt

config EXTI_STM32_EXTI10_IRQ_PRI
	int "EXTI10 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI10 interrupt

config EXTI_STM32_EXTI11_IRQ_PRI
	int "EXTI11 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI11 interrupt

config EXTI_STM32_EXTI12_IRQ_PRI
	int "EXTI12 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI12 interrupt

config EXTI_STM32_EXTI13_IRQ_PRI
	int "EXTI13 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI13 interrupt

config EXTI_STM32_EXTI14_IRQ_PRI
	int "EXTI14 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI14 interrupt

config EXTI_STM32_EXTI15_IRQ_PRI
	int "EXTI15 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI15 interrupt

endif # SOC_SERIES_STM32MP1X

if SOC_SERIES_STM32MP1X!=y
config EXTI_STM32_EXTI9_5_IRQ_PRI
	int "EXTI9:5 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI9:5 interrupt

config EXTI_STM32_EXTI15_10_IRQ_PRI
	int "EXTI15:10 IRQ priority"
	depends on EXTI_STM32
	default 0
	help
	  IRQ priority of EXTI15:10 interrupt
endif # SOC_SERIES_STM32MP1X!=y

endif # SOC_SERIES_STM32F0X!=y && SOC_SERIES_STM32L0X!=y && SOC_SERIES_STM32G0X!=y

config EXTI_STM32_PVD_IRQ_PRI
	int "RVD Through IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X || SOC_SERIES_STM32G0X
	default 0
	help
	  IRQ priority of RVD Through interrupt

config EXTI_STM32_OTG_FS_WKUP_IRQ_PRI
	int "USB OTG FS Wake Up IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X
	default 0
	help
	  IRQ priority of USB OTG FS Wake interrupt

config EXTI_STM32_TAMP_STAMP_IRQ_PRI
	int "Tamper and Timestamp IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X
	default 0
	help
	  IRQ priority of Tamper and Timestamp interrupt

config EXTI_STM32_RTC_WKUP_IRQ_PRI
	int "RTC Wake Up IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F4X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32F2X
	default 0
	help
	  IRQ priority of RTC Wake Up interrupt

config EXTI_STM32_LPTIM1_IRQ_PRI
	int "LPTIM1 IRQ priority"
	depends on EXTI_STM32
	depends on SOC_SERIES_STM32F7X
	default 0
	help
	  IRQ priority of LPTIM1 interrupt

endif # SOC_FAMILY_STM32
