# Kconfig - I2C configuration options

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

#
# I2C options
#
menuconfig I2C
	bool "I2C Drivers"
	help
	  Enable I2C Driver Configuration

if I2C

# Include these first so that any properties (e.g. defaults) below can be
# overridden (by defining symbols in multiple locations)
source "drivers/i2c/Kconfig.cc13xx_cc26xx"
source "drivers/i2c/Kconfig.dw"
source "drivers/i2c/Kconfig.esp32"
source "drivers/i2c/slave/Kconfig"
source "drivers/i2c/Kconfig.gpio"
source "drivers/i2c/Kconfig.xec"
source "drivers/i2c/Kconfig.nrfx"
source "drivers/i2c/Kconfig.sbcon"
source "drivers/i2c/Kconfig.sifive"
source "drivers/i2c/Kconfig.stm32"
source "drivers/i2c/Kconfig.sam0"


config I2C_INIT_PRIORITY
	int "Init priority"
	default 60
	help
	  I2C device driver initialization priority.


module = I2C
module-str = i2c
source "subsys/logging/Kconfig.template.log_config"

config I2C_0
	bool "Enable I2C Port 0"

config I2C_0_NAME
	string "Port 0 device name"
	depends on I2C_0 && !HAS_DTS_I2C
	default "I2C_0"

config I2C_0_DEFAULT_CFG
	hex "Port 0 default configuration"
	depends on I2C_0 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_0_IRQ_PRI
	int "Port 0 interrupt priority"
	depends on I2C_0 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_1
	bool "Enable I2C Port 1"

config I2C_1_NAME
	string "Port 1 device name"
	default "I2C_1"
	depends on I2C_1 && !HAS_DTS_I2C

config I2C_1_DEFAULT_CFG
	hex "Port 1 default configuration"
	depends on I2C_1 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_1_IRQ_PRI
	int "Port 1 interrupt priority"
	depends on I2C_1 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_2
	bool "Enable I2C Port 2"

config I2C_2_NAME
	string "Port 2 device name"
	default "I2C_2"
	depends on I2C_2 && !HAS_DTS_I2C

config I2C_2_DEFAULT_CFG
	hex "Port 2 default configuration"
	depends on I2C_2 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_2_IRQ_PRI
	int "Port 2 interrupt priority"
	depends on I2C_2 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_3
	bool "Enable I2C Port 3"

config I2C_3_NAME
	string "Port 3 device name"
	depends on I2C_3 && !HAS_DTS_I2C
	default "I2C_3"

config I2C_3_DEFAULT_CFG
	hex "Port 3 default configuration"
	depends on I2C_3 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_3_IRQ_PRI
	int "Port 3 interrupt priority"
	depends on I2C_3 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_4
	bool "Enable I2C Port 4"

config I2C_4_NAME
	string "Port 4 device name"
	depends on I2C_4 && !HAS_DTS_I2C
	default "I2C_4"

config I2C_4_DEFAULT_CFG
	hex "Port 4 default configuration"
	depends on I2C_4 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_4_IRQ_PRI
	int "Port 4 interrupt priority"
	depends on I2C_4 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_5
	bool "Enable I2C Port 5"

config I2C_5_NAME
	string "Port 5 device name"
	depends on I2C_5 && !HAS_DTS_I2C
	default "I2C_5"

config I2C_5_DEFAULT_CFG
	hex "Port 5 default configuration"
	depends on I2C_5 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_5_IRQ_PRI
	int "Port 5 interrupt priority"
	depends on I2C_5 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_6
	bool "Enable I2C Port 6"

config I2C_6_NAME
	string "Port 6 device name"
	depends on I2C_6 && !HAS_DTS_I2C
	default "I2C_6"

config I2C_6_DEFAULT_CFG
	hex "Port 6 default configuration"
	depends on I2C_6 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_6_IRQ_PRI
	int "Port 6 interrupt priority"
	depends on I2C_6 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_7
	bool "Enable I2C Port 7"

config I2C_7_NAME
	string "Port 7 device name"
	depends on I2C_7 && !HAS_DTS_I2C
	default "I2C_7"

config I2C_7_DEFAULT_CFG
	hex "Port 7 default configuration"
	depends on I2C_7 && !HAS_DTS_I2C
	default 0x0
	help
	  Allows the I2C port to be brought up with a default configuration.
	  This is useful to set if other drivers depend upon using the I2C bus
	  before the application has a chance to custom configure the port.
	  Setting this value does not prohibit the application from customizing
	  the values later.  Refer to include/i2c.h file for proper values.

config I2C_7_IRQ_PRI
	int "Port 7 interrupt priority"
	depends on I2C_7 && !HAS_DTS_I2C
	help
	  IRQ priority.

config I2C_GECKO
	bool "Gecko I2C driver"
	depends on HAS_SILABS_GECKO
	select SOC_GECKO_I2C
	help
	  Enable the SiLabs Gecko I2C bus driver.

config I2C_SAM_TWIHS
	bool "Atmel SAM (TWIHS) I2C driver"
	depends on SOC_FAMILY_SAM
	select HAS_DTS_I2C
	help
	  Enable Atmel SAM MCU Family (TWIHS) I2C bus driver.

config I2C_SAM_TWI
	bool "Atmel SAM (TWI) I2C driver"
	depends on SOC_FAMILY_SAM
	select HAS_DTS_I2C
	help
	  Enable Atmel SAM MCU Family (TWI) I2C bus driver.

config I2C_MCUX
	bool "MCUX I2C driver"
	depends on HAS_MCUX
	select HAS_DTS_I2C
	help
	  Enable the mcux I2C driver.

config I2C_MCUX_LPI2C
	bool "MCUX LPI2C driver"
	depends on HAS_MCUX_LPI2C && CLOCK_CONTROL
	select HAS_DTS_I2C
	help
	  Enable the mcux LPI2C driver.

config I2C_IMX
	bool "i.MX I2C driver"
	depends on HAS_IMX_I2C
	select HAS_DTS_I2C
	help
	  Enable the i.MX I2C driver.

config I2C_CC32XX
	bool "CC32XX I2C driver"
	depends on SOC_SERIES_CC32XX
	select HAS_DTS_I2C
	help
	  Enable the CC32XX I2C driver.

config I2C_BITBANG
	bool
	help
	  Enable library used for software driven (bit banging) I2C support

config I2C_NIOS2
	bool "Nios-II I2C driver"
	depends on HAS_ALTERA_HAL
	select HAS_DTS_I2C
	help
	  Enable the Nios-II I2C driver.

config I2C_RV32M1_LPI2C
	bool "RV32M1 LPI2C driver"
	depends on HAS_RV32M1_LPI2C && CLOCK_CONTROL
	select HAS_DTS_I2C
	help
	  Enable the RV32M1 LPI2C driver.

endif # I2C
