| # I2C configuration options |
| |
| # Copyright (c) 2015 Intel Corporation |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| # |
| # I2C options |
| # |
| menuconfig I2C |
| bool "Inter-Integrated Circuit (I2C) bus drivers" |
| help |
| Enable I2C Driver Configuration |
| |
| if I2C |
| |
| config I2C_SHELL |
| bool "I2C Shell" |
| depends on SHELL |
| help |
| Enable I2C Shell. |
| |
| The I2C shell supports scanning, bus recovery, I2C read and write |
| operations. |
| |
| config I2C_STATS |
| bool "I2C device Stats" |
| depends on STATS |
| help |
| Enable I2C Stats. |
| |
| config I2C_DUMP_MESSAGES |
| bool "Log I2C transactions" |
| depends on LOG |
| depends on I2C_LOG_LEVEL_DBG |
| help |
| Dump every I2C transaction to the system log as debug level log messages. |
| |
| config I2C_DUMP_MESSAGES_ALLOWLIST |
| bool "Use allowlist for logging of I2C transactions" |
| depends on I2C_DUMP_MESSAGES |
| depends on DT_HAS_ZEPHYR_I2C_DUMP_ALLOWLIST_ENABLED |
| help |
| Use allowlist to specify which devices transactions should be logged. |
| The allowlist is defined in the devicetree using the compatible string of |
| "zephyr,i2c-dump-allowlist" and phandles to the devices that need to be traced. |
| Example of devicetree node: |
| i2c-dump-allowlist { |
| compatible = "zephyr,i2c-dump-allowlist"; |
| devices = < &display0 >, < &sensor3 >; |
| }; |
| |
| config I2C_CALLBACK |
| bool "I2C asynchronous callback API" |
| help |
| API and implementations of i2c_transfer_cb. |
| |
| config I2C_ALLOW_NO_STOP_TRANSACTIONS |
| bool "Allows I2C transfers with no STOP on the last transaction [DEPRECATED]" |
| depends on !I2C_NRFX_TWI |
| depends on !I2C_NRFX_TWIM |
| depends on !I2C_STM32 |
| depends on !I2C_GD32 |
| depends on !I2C_ESP32 |
| depends on !I2C_DW |
| select DEPRECATED |
| help |
| Allow I2C transactions with no STOP on the last message. This is |
| unsupported and can leave the bus in an unexpected state. The option |
| will be removed in Zephyr 4.1. |
| |
| config I2C_RTIO |
| bool "I2C RTIO API" |
| select EXPERIMENTAL |
| select RTIO |
| select RTIO_WORKQ |
| help |
| API and implementations of I2C for RTIO |
| |
| if I2C_RTIO |
| config I2C_RTIO_SQ_SIZE |
| int "Submission queue size for blocking calls" |
| default 4 |
| help |
| Blocking i2c calls when I2C_RTIO is enabled are copied into a per driver |
| submission queue. The queue depth determines the number of possible i2c_msg |
| structs that may be in the array given to i2c_transfer. A sensible default |
| is going to be 4 given the device address, register address, and a value |
| to be read or written. |
| |
| config I2C_RTIO_CQ_SIZE |
| int "Completion queue size for blocking calls" |
| default 4 |
| help |
| Blocking i2c calls when I2C_RTIO is enabled are copied into a per driver |
| submission queue. The queue depth determines the number of possible i2c_msg |
| structs that may be in the array given to i2c_transfer. A sensible default |
| is going to be 4 given the device address, register address, and a value |
| to be read or written. |
| |
| config I2C_RTIO_FALLBACK_MSGS |
| int "Number of available i2c_msg structs for the default handler to use" |
| default 4 |
| help |
| When RTIO is used with a driver that does not yet implement the submit API |
| natively the submissions are converted back to struct i2c_msg values that |
| are given to i2c_transfer. This requires some number of msgs be available to convert |
| the submissions into on the stack. MISRA rules dictate we must know this in |
| advance. |
| |
| In all likelihood 4 is going to work for everyone, but in case you do end up with |
| an issue where you are using RTIO, your driver does not implement submit natively, |
| and get an error relating to not enough i2c msgs this is the Kconfig to manipulate. |
| |
| endif # I2C_RTIO |
| |
| |
| # Include these first so that any properties (e.g. defaults) below can be |
| # overridden (by defining symbols in multiple locations) |
| source "drivers/i2c/Kconfig.b91" |
| source "drivers/i2c/Kconfig.bcm_iproc" |
| source "drivers/i2c/Kconfig.cc13xx_cc26xx" |
| source "drivers/i2c/Kconfig.dw" |
| source "drivers/i2c/Kconfig.esp32" |
| source "drivers/i2c/target/Kconfig" |
| source "drivers/i2c/Kconfig.gpio" |
| source "drivers/i2c/Kconfig.xec" |
| source "drivers/i2c/Kconfig.nrfx" |
| source "drivers/i2c/Kconfig.i2c_emul" |
| source "drivers/i2c/Kconfig.it8xxx2" |
| source "drivers/i2c/Kconfig.sbcon" |
| source "drivers/i2c/Kconfig.sifive" |
| source "drivers/i2c/Kconfig.stm32" |
| source "drivers/i2c/Kconfig.sam0" |
| source "drivers/i2c/Kconfig.sam_twihs" |
| source "drivers/i2c/Kconfig.litex" |
| source "drivers/i2c/Kconfig.lpc11u6x" |
| source "drivers/i2c/Kconfig.npcx" |
| source "drivers/i2c/Kconfig.test" |
| source "drivers/i2c/Kconfig.rcar" |
| source "drivers/i2c/Kconfig.renesas_ra" |
| source "drivers/i2c/Kconfig.tca954x" |
| source "drivers/i2c/Kconfig.gd32" |
| source "drivers/i2c/Kconfig.ifx_cat1" |
| source "drivers/i2c/Kconfig.ifx_xmc4" |
| source "drivers/i2c/Kconfig.andes_atciic100" |
| source "drivers/i2c/Kconfig.sc18im704" |
| source "drivers/i2c/Kconfig.smartbond" |
| source "drivers/i2c/Kconfig.xilinx_axi" |
| source "drivers/i2c/Kconfig.mchp_mss" |
| source "drivers/i2c/Kconfig.sedi" |
| source "drivers/i2c/Kconfig.ambiq" |
| source "drivers/i2c/Kconfig.numaker" |
| source "drivers/i2c/Kconfig.mcux" |
| source "drivers/i2c/Kconfig.ene" |
| source "drivers/i2c/Kconfig.max32" |
| |
| config I2C_INIT_PRIORITY |
| int "Init priority" |
| default KERNEL_INIT_PRIORITY_DEVICE |
| help |
| I2C device driver initialization priority. |
| |
| |
| module = I2C |
| module-str = i2c |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| config I2C_GECKO |
| bool "Gecko I2C driver" |
| default y |
| depends on DT_HAS_SILABS_GECKO_I2C_ENABLED |
| select SOC_GECKO_I2C |
| help |
| Enable the SiLabs Gecko I2C bus driver. |
| |
| config I2C_SAM_TWIM |
| bool "Atmel SAM (TWIM) I2C driver" |
| default y |
| depends on DT_HAS_ATMEL_SAM_I2C_TWIM_ENABLED |
| select PINCTRL |
| help |
| Enable Atmel SAM MCU Family (TWIM) I2C bus driver. |
| |
| config I2C_SAM_TWI |
| bool "Atmel SAM (TWI) I2C driver" |
| default y |
| depends on DT_HAS_ATMEL_SAM_I2C_TWI_ENABLED |
| select PINCTRL |
| help |
| Enable Atmel SAM MCU Family (TWI) I2C bus driver. |
| |
| config I2C_MCUX |
| bool "MCUX I2C driver" |
| default y |
| depends on DT_HAS_NXP_KINETIS_I2C_ENABLED |
| select PINCTRL |
| help |
| Enable the mcux I2C driver. |
| |
| config I2C_MCUX_LPI2C |
| bool "MCUX LPI2C driver" |
| default y |
| depends on DT_HAS_NXP_IMX_LPI2C_ENABLED |
| depends on CLOCK_CONTROL |
| select PINCTRL |
| help |
| Enable the mcux LPI2C driver. |
| |
| config I2C_MCUX_LPI2C_BUS_RECOVERY |
| bool "Bus recovery support" |
| depends on I2C_MCUX_LPI2C && PINCTRL |
| select I2C_BITBANG |
| help |
| Enable LPI2C driver bus recovery support via GPIO bitbanging. |
| |
| config I2C_IMX |
| bool "i.MX I2C driver" |
| default y |
| depends on DT_HAS_FSL_IMX21_I2C_ENABLED |
| select PINCTRL |
| help |
| Enable the i.MX I2C driver. |
| |
| config I2C_CC32XX |
| bool "CC32XX I2C driver" |
| default y |
| depends on DT_HAS_TI_CC32XX_I2C_ENABLED |
| select PINCTRL |
| 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" |
| default y |
| depends on DT_HAS_ALTR_NIOS2_I2C_ENABLED |
| help |
| Enable the Nios-II I2C driver. |
| |
| config I2C_RV32M1_LPI2C |
| bool "RV32M1 LPI2C driver" |
| default y |
| depends on DT_HAS_OPENISA_RV32M1_LPI2C_ENABLED |
| depends on CLOCK_CONTROL |
| select PINCTRL |
| help |
| Enable the RV32M1 LPI2C driver. |
| |
| config GPIO_I2C_SWITCH |
| bool "GPIO controlled I2C bus switch" |
| default y |
| depends on DT_HAS_GPIO_I2C_SWITCH_ENABLED |
| help |
| Enable GPIO controlled I2C bus switch driver. |
| |
| endif # I2C |