#
# Copyright (c) 2018 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig I2C_STM32
	bool "STM32 I2C driver"
	depends on SOC_FAMILY_STM32
	help
	  Enable I2C support on the STM32 SoCs

if I2C_STM32

config I2C_STM32_V1
	bool "STM32 V1 Driver (F1/F4X)"
	depends on SOC_SERIES_STM32F1X || SOC_SERIES_STM32F4X
	select HAS_DTS_I2C
	select USE_STM32_LL_I2C
	help
	  Enable I2C support on the STM32 F1 and F4X family of processors. This
	  driver also supports the F2 and L1 series.

config I2C_STM32_V2
	bool "STM32 V2 Driver (F0/F3/F7/L0/L4X)"
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X
	select HAS_DTS_I2C
	select USE_STM32_LL_I2C
	select USE_STM32_LL_RCC if SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X
	select I2C_STM32_INTERRUPT if I2C_SLAVE
	help
	  Enable I2C support on the STM32 F0, F3, F7 and L4X family of processors.
	  This driver also supports the L0 series.
	  If I2C_SLAVE is enabled it selects I2C_STM32_INTERRUPT, since slave mode
	  is only supported by this driver with interrupts enabled.

config I2C_STM32_INTERRUPT
	bool "STM32 MCU I2C Interrupt Support"
	depends on I2C_STM32_V1 || I2C_STM32_V2
	help
	  Enable Interrupt support for the I2C Driver

config I2C_STM32_COMBINED_INTERRUPT
	bool
	depends on I2C_STM32_INTERRUPT
	default y if SOC_SERIES_STM32F0X || SOC_SERIES_STM32L0X

endif # I2C_STM32
