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 74a076a860SLuca Ceresoliconfig I2C_ATR 75*24dc13f9SGeert Uytterhoeven tristate "I2C Address Translator (ATR) support" if COMPILE_TEST 76a076a860SLuca Ceresoli help 77a076a860SLuca Ceresoli Enable support for I2C Address Translator (ATR) chips. 78a076a860SLuca Ceresoli 79a076a860SLuca Ceresoli An ATR allows accessing multiple I2C busses from a single 80a076a860SLuca Ceresoli physical bus via address translation instead of bus selection as 81a076a860SLuca Ceresoli i2c-muxes do. 82a076a860SLuca 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