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

DT_COMPAT_ST_STM32_I2C_V1 := st,stm32-i2c-v1
DT_COMPAT_ST_STM32_I2C_V2 := st,stm32-i2c-v2

menuconfig I2C_STM32
	bool "STM32 I2C driver"
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V1)) || $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V2))
	depends on SOC_FAMILY_STM32
	help
	  Enable I2C support on the STM32 SoCs

if I2C_STM32

config I2C_STM32_V1
	bool
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V1))
	select USE_STM32_LL_I2C
	select I2C_STM32_INTERRUPT if I2C_TARGET
	help
	  Driver variant matching `st,stm32-i2c-v1` compatible.

config I2C_STM32_V2
	bool
	default $(dt_compat_enabled,$(DT_COMPAT_ST_STM32_I2C_V2))
	select USE_STM32_LL_I2C
	select USE_STM32_LL_RCC if SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X
	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_STM32F0X || SOC_SERIES_STM32G0X || SOC_SERIES_STM32L0X

endif # I2C_STM32
