#
# 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
	depends on SOC_SERIES_STM32F1X || SOC_SERIES_STM32F4X || SOC_SERIES_STM32L1X
	select HAS_DTS_I2C
	select USE_STM32_LL_I2C
	select I2C_STM32_INTERRUPT if I2C_SLAVE
	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
	depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX || SOC_SERIES_STM32MP1X || SOC_SERIES_STM32G4X
	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, L4, WBX, MP1 and G4 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
