# 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 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 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
