1# I2C configuration options
2
3# Copyright (c) 2015 Intel Corporation
4# SPDX-License-Identifier: Apache-2.0
5
6#
7# I2C options
8#
9menuconfig I2C
10	bool "Inter-Integrated Circuit (I2C) bus drivers"
11	help
12	  Enable I2C Driver Configuration
13
14if I2C
15
16config I2C_SHELL
17	bool "I2C Shell"
18	depends on SHELL
19	help
20	  Enable I2C Shell.
21
22	  The I2C shell supports scanning, bus recovery, I2C read and write
23	  operations.
24
25config I2C_STATS
26	bool "I2C device Stats"
27	depends on STATS
28	help
29	  Enable I2C Stats.
30
31config I2C_DUMP_MESSAGES
32	bool "Log I2C transactions"
33	depends on LOG
34	depends on I2C_LOG_LEVEL_DBG
35	help
36	  Dump every I2C transaction to the system log as debug level log messages.
37
38config I2C_DUMP_MESSAGES_ALLOWLIST
39	bool "Use allowlist for logging of I2C transactions"
40	depends on I2C_DUMP_MESSAGES
41	depends on DT_HAS_ZEPHYR_I2C_DUMP_ALLOWLIST_ENABLED
42	help
43	  Use allowlist to specify which devices transactions should be logged.
44	  The allowlist is defined in the devicetree using the compatible string of
45	  "zephyr,i2c-dump-allowlist" and phandles to the devices that need to be traced.
46	  Example of devicetree node:
47	  i2c-dump-allowlist {
48	    compatible = "zephyr,i2c-dump-allowlist";
49	    devices = < &display0 >, < &sensor3 >;
50	  };
51
52config I2C_CALLBACK
53	bool "I2C asynchronous callback API"
54	help
55	  API and implementations of i2c_transfer_cb.
56
57config I2C_RTIO
58	bool "I2C RTIO API"
59	help
60	  API and implementations of I2C for RTIO
61
62# Include these first so that any properties (e.g. defaults) below can be
63# overridden (by defining symbols in multiple locations)
64source "drivers/i2c/Kconfig.b91"
65source "drivers/i2c/Kconfig.cc13xx_cc26xx"
66source "drivers/i2c/Kconfig.dw"
67source "drivers/i2c/Kconfig.esp32"
68source "drivers/i2c/target/Kconfig"
69source "drivers/i2c/Kconfig.gpio"
70source "drivers/i2c/Kconfig.xec"
71source "drivers/i2c/Kconfig.nrfx"
72source "drivers/i2c/Kconfig.i2c_emul"
73source "drivers/i2c/Kconfig.it8xxx2"
74source "drivers/i2c/Kconfig.sbcon"
75source "drivers/i2c/Kconfig.sifive"
76source "drivers/i2c/Kconfig.stm32"
77source "drivers/i2c/Kconfig.sam0"
78source "drivers/i2c/Kconfig.sam_twihs"
79source "drivers/i2c/Kconfig.litex"
80source "drivers/i2c/Kconfig.lpc11u6x"
81source "drivers/i2c/Kconfig.npcx"
82source "drivers/i2c/Kconfig.test"
83source "drivers/i2c/Kconfig.rcar"
84source "drivers/i2c/Kconfig.tca954x"
85source "drivers/i2c/Kconfig.gd32"
86source "drivers/i2c/Kconfig.ifx_cat1"
87source "drivers/i2c/Kconfig.ifx_xmc4"
88source "drivers/i2c/Kconfig.andes_atciic100"
89source "drivers/i2c/Kconfig.sc18im704"
90source "drivers/i2c/Kconfig.smartbond"
91source "drivers/i2c/Kconfig.xilinx_axi"
92source "drivers/i2c/Kconfig.mchp_mss"
93source "drivers/i2c/Kconfig.sedi"
94source "drivers/i2c/Kconfig.ambiq"
95source "drivers/i2c/Kconfig.numaker"
96source "drivers/i2c/Kconfig.mcux"
97
98config I2C_INIT_PRIORITY
99	int "Init priority"
100	default KERNEL_INIT_PRIORITY_DEVICE
101	help
102	  I2C device driver initialization priority.
103
104
105module = I2C
106module-str = i2c
107source "subsys/logging/Kconfig.template.log_config"
108
109config I2C_GECKO
110	bool "Gecko I2C driver"
111	default y
112	depends on DT_HAS_SILABS_GECKO_I2C_ENABLED
113	select SOC_GECKO_I2C
114	help
115	  Enable the SiLabs Gecko I2C bus driver.
116
117config I2C_SAM_TWIM
118	bool "Atmel SAM (TWIM) I2C driver"
119	default y
120	depends on DT_HAS_ATMEL_SAM_I2C_TWIM_ENABLED
121	help
122	  Enable Atmel SAM MCU Family (TWIM) I2C bus driver.
123
124config I2C_SAM_TWI
125	bool "Atmel SAM (TWI) I2C driver"
126	default y
127	depends on DT_HAS_ATMEL_SAM_I2C_TWI_ENABLED
128	help
129	  Enable Atmel SAM MCU Family (TWI) I2C bus driver.
130
131config I2C_MCUX
132	bool "MCUX I2C driver"
133	default y
134	depends on DT_HAS_NXP_KINETIS_I2C_ENABLED
135	select PINCTRL
136	help
137	  Enable the mcux I2C driver.
138
139config I2C_MCUX_FLEXCOMM
140	bool "MCUX FLEXCOMM I2C driver"
141	default y
142	depends on DT_HAS_NXP_LPC_I2C_ENABLED
143	select PINCTRL
144	help
145	  Enable the mcux flexcomm i2c driver.
146
147config I2C_MCUX_LPI2C
148	bool "MCUX LPI2C driver"
149	default y
150	depends on DT_HAS_NXP_IMX_LPI2C_ENABLED
151	depends on CLOCK_CONTROL
152	select PINCTRL
153	help
154	  Enable the mcux LPI2C driver.
155
156config I2C_MCUX_LPI2C_BUS_RECOVERY
157	bool "Bus recovery support"
158	depends on I2C_MCUX_LPI2C && PINCTRL
159	select I2C_BITBANG
160	help
161	  Enable LPI2C driver bus recovery support via GPIO bitbanging.
162
163config I2C_IMX
164	bool "i.MX I2C driver"
165	default y
166	depends on DT_HAS_FSL_IMX21_I2C_ENABLED
167	help
168	  Enable the i.MX I2C driver.
169
170config I2C_CC32XX
171	bool "CC32XX I2C driver"
172	default y
173	depends on DT_HAS_TI_CC32XX_I2C_ENABLED
174	select PINCTRL
175	help
176	  Enable the CC32XX I2C driver.
177
178config I2C_BITBANG
179	bool
180	help
181	  Enable library used for software driven (bit banging) I2C support
182
183config I2C_NIOS2
184	bool "Nios-II I2C driver"
185	default y
186	depends on DT_HAS_ALTR_NIOS2_I2C_ENABLED
187	help
188	  Enable the Nios-II I2C driver.
189
190config I2C_RV32M1_LPI2C
191	bool "RV32M1 LPI2C driver"
192	default y
193	depends on DT_HAS_OPENISA_RV32M1_LPI2C_ENABLED
194	depends on CLOCK_CONTROL
195	select PINCTRL
196	help
197	  Enable the RV32M1 LPI2C driver.
198
199config GPIO_I2C_SWITCH
200	bool "GPIO controlled I2C bus switch"
201	default y
202	depends on DT_HAS_GPIO_I2C_SWITCH_ENABLED
203	help
204	  Enable GPIO controlled I2C bus switch driver.
205
206endif # I2C
207