xref: /openbmc/linux/drivers/i2c/Kconfig (revision a076a860)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
21da177e4SLinus Torvalds#
3be53f9b2SArthur Othieno# I2C subsystem configuration
41da177e4SLinus Torvalds#
51da177e4SLinus Torvalds
6da3c6647SLan Tianyumenu "I2C support"
7da3c6647SLan Tianyu
8da3c6647SLan Tianyuconfig I2C
91da177e4SLinus Torvalds	tristate "I2C support"
10194684e5SMika Kuoppala	select RT_MUTEXES
114d5538f5SBenjamin Tissoires	select IRQ_DOMAIN
12a7f7f624SMasahiro Yamada	help
13622e040dSMichael Witten	  I2C (pronounce: I-squared-C) is a slow serial bus protocol used in
141da177e4SLinus Torvalds	  many micro controller applications and developed by Philips.  SMBus,
151da177e4SLinus Torvalds	  or System Management Bus is a subset of the I2C protocol.  More
161da177e4SLinus Torvalds	  information is contained in the directory <file:Documentation/i2c/>,
171da177e4SLinus Torvalds	  especially in the file called "summary" there.
181da177e4SLinus Torvalds
191da177e4SLinus Torvalds	  Both I2C and SMBus are supported here. You will need this for
201da177e4SLinus Torvalds	  hardware sensors support, and also for Video For Linux support.
211da177e4SLinus Torvalds
221da177e4SLinus Torvalds	  If you want I2C support, you should say Y here and also to the
231da177e4SLinus Torvalds	  specific driver for your bus adapter(s) below.
241da177e4SLinus Torvalds
251da177e4SLinus Torvalds	  This I2C support can also be built as a module.  If so, the module
261da177e4SLinus Torvalds	  will be called i2c-core.
271da177e4SLinus Torvalds
2836604751SLan Tianyuconfig ACPI_I2C_OPREGION
2936604751SLan Tianyu	bool "ACPI I2C Operation region support"
3036604751SLan Tianyu	depends on I2C=y && ACPI
31da3c6647SLan Tianyu	default y
32da3c6647SLan Tianyu	help
3336604751SLan Tianyu	  Say Y here if you want to enable ACPI I2C operation region support.
3436604751SLan Tianyu	  Operation Regions allow firmware (BIOS) code to access I2C slave devices,
3536604751SLan Tianyu	  such as smart batteries through an I2C host controller driver.
36da3c6647SLan Tianyu
3716538e6bSJan Engelhardtif I2C
3816538e6bSJan Engelhardt
399c1600edSDavid Brownellconfig I2C_BOARDINFO
406341e62bSChristoph Jaeger	bool
419c1600edSDavid Brownell	default y
429c1600edSDavid Brownell
432bb5095aSJean Delvareconfig I2C_COMPAT
446341e62bSChristoph Jaeger	bool "Enable compatibility bits for old user-space"
452bb5095aSJean Delvare	default y
462bb5095aSJean Delvare	help
472bb5095aSJean Delvare	  Say Y here if you intend to run lm-sensors 3.1.1 or older, or any
482bb5095aSJean Delvare	  other user-space package which expects i2c adapters to be class
492bb5095aSJean Delvare	  devices. If you don't know, say Y.
502bb5095aSJean Delvare
511da177e4SLinus Torvaldsconfig I2C_CHARDEV
521da177e4SLinus Torvalds	tristate "I2C device interface"
531da177e4SLinus Torvalds	help
541da177e4SLinus Torvalds	  Say Y here to use i2c-* device files, usually found in the /dev
551da177e4SLinus Torvalds	  directory on your system.  They make it possible to have user-space
561da177e4SLinus Torvalds	  programs use the I2C bus.  Information on how to do this is
57ccf988b6SMauro Carvalho Chehab	  contained in the file <file:Documentation/i2c/dev-interface.rst>.
581da177e4SLinus Torvalds
591da177e4SLinus Torvalds	  This support is also available as a module.  If so, the module
601da177e4SLinus Torvalds	  will be called i2c-dev.
611da177e4SLinus Torvalds
620826374bSMichael Lawnickconfig I2C_MUX
630826374bSMichael Lawnick	tristate "I2C bus multiplexing support"
640826374bSMichael Lawnick	help
650826374bSMichael Lawnick	  Say Y here if you want the I2C core to support the ability to
660826374bSMichael Lawnick	  handle multiplexed I2C bus topologies, by presenting each
670826374bSMichael Lawnick	  multiplexed segment as a I2C adapter.
680826374bSMichael Lawnick
690826374bSMichael Lawnick	  This support is also available as a module.  If so, the module
700826374bSMichael Lawnick	  will be called i2c-mux.
710826374bSMichael Lawnick
728636a1f9SMasahiro Yamadasource "drivers/i2c/muxes/Kconfig"
737f528135SMichael Lawnick
74*a076a860SLuca Ceresoliconfig I2C_ATR
75*a076a860SLuca Ceresoli	tristate "I2C Address Translator (ATR) support"
76*a076a860SLuca Ceresoli	help
77*a076a860SLuca Ceresoli	  Enable support for I2C Address Translator (ATR) chips.
78*a076a860SLuca Ceresoli
79*a076a860SLuca Ceresoli	  An ATR allows accessing multiple I2C busses from a single
80*a076a860SLuca Ceresoli	  physical bus via address translation instead of bus selection as
81*a076a860SLuca Ceresoli	  i2c-muxes do.
82*a076a860SLuca Ceresoli
838d24f8dcSJean Delvareconfig I2C_HELPER_AUTO
848d24f8dcSJean Delvare	bool "Autoselect pertinent helper modules"
858d24f8dcSJean Delvare	default y
868d24f8dcSJean Delvare	help
878d24f8dcSJean Delvare	  Some I2C bus drivers require so-called "I2C algorithm" modules
888d24f8dcSJean Delvare	  to work. These are basically software-only abstractions of generic
898d24f8dcSJean Delvare	  I2C interfaces. This option will autoselect them so that you don't
908d24f8dcSJean Delvare	  have to care.
918d24f8dcSJean Delvare
928d24f8dcSJean Delvare	  Unselect this only if you need to enable additional helper
938d24f8dcSJean Delvare	  modules, for example for use with external I2C bus drivers.
948d24f8dcSJean Delvare
958d24f8dcSJean Delvare	  In doubt, say Y.
968d24f8dcSJean Delvare
97e2ca3074SJean Delvareconfig I2C_SMBUS
98dfc518ddSArnaud Lacombe	tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO
99e2ca3074SJean Delvare	help
100e2ca3074SJean Delvare	  Say Y here if you want support for SMBus extensions to the I2C
101d380a204SJean Delvare	  specification. At the moment, two extensions are supported:
102d380a204SJean Delvare	  the SMBus Alert protocol and the SMBus Host Notify protocol.
103e2ca3074SJean Delvare
104e2ca3074SJean Delvare	  This support is also available as a module.  If so, the module
105e2ca3074SJean Delvare	  will be called i2c-smbus.
106e2ca3074SJean Delvare
1078636a1f9SMasahiro Yamadasource "drivers/i2c/algos/Kconfig"
1088636a1f9SMasahiro Yamadasource "drivers/i2c/busses/Kconfig"
1091da177e4SLinus Torvalds
1103ddb59d4SPeter Hueweconfig I2C_STUB
1113ddb59d4SPeter Huewe	tristate "I2C/SMBus Test Stub"
112417e86ceSKees Cook	depends on m
1133ddb59d4SPeter Huewe	help
1143ddb59d4SPeter Huewe	  This module may be useful to developers of SMBus client drivers,
1153ddb59d4SPeter Huewe	  especially for certain kinds of sensor chips.
1163ddb59d4SPeter Huewe
1173ddb59d4SPeter Huewe	  If you do build this module, be sure to read the notes and warnings
118ccf988b6SMauro Carvalho Chehab	  in <file:Documentation/i2c/i2c-stub.rst>.
1193ddb59d4SPeter Huewe
1203ddb59d4SPeter Huewe	  If you don't know what to do here, definitely say N.
1213ddb59d4SPeter Huewe
122389be323SWolfram Sangconfig I2C_SLAVE
123389be323SWolfram Sang	bool "I2C slave support"
12458e64b05SWolfram Sang	help
12558e64b05SWolfram Sang	  This enables Linux to act as an I2C slave device. Note that your I2C
12658e64b05SWolfram Sang	  bus master driver also needs to support this functionality. Please
12758e64b05SWolfram Sang	  read Documentation/i2c/slave-interface.rst for further details.
128389be323SWolfram Sang
129389be323SWolfram Sangif I2C_SLAVE
130389be323SWolfram Sang
131389be323SWolfram Sangconfig I2C_SLAVE_EEPROM
132389be323SWolfram Sang	tristate "I2C eeprom slave driver"
13359d3d604SWolfram Sang	help
13459d3d604SWolfram Sang	  This backend makes Linux behave like an I2C EEPROM. Please read
13559d3d604SWolfram Sang	  Documentation/i2c/slave-eeprom-backend.rst for further details.
136389be323SWolfram Sang
137a8335c64SWolfram Sangconfig I2C_SLAVE_TESTUNIT
138a8335c64SWolfram Sang	tristate "I2C eeprom testunit driver"
139a8335c64SWolfram Sang	help
140a8335c64SWolfram Sang	  This backend can be used to trigger test cases for I2C bus masters
141a8335c64SWolfram Sang	  which require a remote device with certain capabilities, e.g.
142a8335c64SWolfram Sang	  multi-master, SMBus Host Notify, etc. Please read
143a8335c64SWolfram Sang	  Documentation/i2c/slave-testunit-backend.rst for further details.
144a8335c64SWolfram Sang
145389be323SWolfram Sangendif
146389be323SWolfram Sang
1471da177e4SLinus Torvaldsconfig I2C_DEBUG_CORE
1481da177e4SLinus Torvalds	bool "I2C Core debugging messages"
1491da177e4SLinus Torvalds	help
1501da177e4SLinus Torvalds	  Say Y here if you want the I2C core to produce a bunch of debug
1511da177e4SLinus Torvalds	  messages to the system log.  Select this if you are having a
1521da177e4SLinus Torvalds	  problem with I2C support and want to see more of what is going on.
1531da177e4SLinus Torvalds
1541da177e4SLinus Torvaldsconfig I2C_DEBUG_ALGO
1551da177e4SLinus Torvalds	bool "I2C Algorithm debugging messages"
1561da177e4SLinus Torvalds	help
1571da177e4SLinus Torvalds	  Say Y here if you want the I2C algorithm drivers to produce a bunch
1581da177e4SLinus Torvalds	  of debug messages to the system log.  Select this if you are having
1591da177e4SLinus Torvalds	  a problem with I2C support and want to see more of what is going
1601da177e4SLinus Torvalds	  on.
1611da177e4SLinus Torvalds
1621da177e4SLinus Torvaldsconfig I2C_DEBUG_BUS
1631da177e4SLinus Torvalds	bool "I2C Bus debugging messages"
1643ddb59d4SPeter Huewe	depends on HAS_IOMEM
1651da177e4SLinus Torvalds	help
1661da177e4SLinus Torvalds	  Say Y here if you want the I2C bus drivers to produce a bunch of
1671da177e4SLinus Torvalds	  debug messages to the system log.  Select this if you are having
1681da177e4SLinus Torvalds	  a problem with I2C support and want to see more of what is going
1691da177e4SLinus Torvalds	  on.
1701da177e4SLinus Torvalds
17116538e6bSJan Engelhardtendif # I2C
172da3c6647SLan Tianyu
173da3c6647SLan Tianyuendmenu
174