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

menuconfig I2C_STM32
	bool "STM32 I2C driver"
	default y
	depends on DT_HAS_ST_STM32_I2C_V1_ENABLED || DT_HAS_ST_STM32_I2C_V2_ENABLED
	select PINCTRL
	help
	  Enable I2C support on the STM32 SoCs

if I2C_STM32

config I2C_STM32_V1
	bool
	default y
	depends on DT_HAS_ST_STM32_I2C_V1_ENABLED
	select I2C_STM32_INTERRUPT if I2C_TARGET
	help
	  Driver variant matching `st,stm32-i2c-v1` compatible.

config I2C_STM32_V2
	bool
	default y
	depends on DT_HAS_ST_STM32_I2C_V2_ENABLED
	select I2C_STM32_INTERRUPT if I2C_TARGET
	help
	  Driver variant matching `st,stm32-i2c-v2` compatible.
	  If I2C_TARGET is enabled it selects I2C_STM32_INTERRUPT, since target 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
	default y
	help
	  Enable Interrupt support for the I2C Driver

config I2C_STM32_COMBINED_INTERRUPT
	bool
	depends on I2C_STM32_INTERRUPT
	default y if SOC_SERIES_STM32C0X || SOC_SERIES_STM32F0X || \
		     SOC_SERIES_STM32G0X || SOC_SERIES_STM32L0X || \
		     SOC_SERIES_STM32U0X || SOC_SERIES_STM32WB0X

config I2C_STM32_BUS_RECOVERY
	bool "Bus recovery support"
	select I2C_BITBANG
	help
	  Enable STM32 driver bus recovery support via GPIO bitbanging.

config I2C_STM32_V2_TIMING
	bool "compute the I2C V2 bus timing"
	depends on I2C_STM32_V2
	help
	  Enable STM32 driver bus to calculate the Timing.

endif # I2C_STM32
