162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci# 362306a36Sopenharmony_ci# I2C subsystem configuration 462306a36Sopenharmony_ci# 562306a36Sopenharmony_ci 662306a36Sopenharmony_cimenu "I2C support" 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciconfig I2C 962306a36Sopenharmony_ci tristate "I2C support" 1062306a36Sopenharmony_ci select RT_MUTEXES 1162306a36Sopenharmony_ci select IRQ_DOMAIN 1262306a36Sopenharmony_ci help 1362306a36Sopenharmony_ci I2C (pronounce: I-squared-C) is a slow serial bus protocol used in 1462306a36Sopenharmony_ci many micro controller applications and developed by Philips. SMBus, 1562306a36Sopenharmony_ci or System Management Bus is a subset of the I2C protocol. More 1662306a36Sopenharmony_ci information is contained in the directory <file:Documentation/i2c/>, 1762306a36Sopenharmony_ci especially in the file called "summary" there. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci Both I2C and SMBus are supported here. You will need this for 2062306a36Sopenharmony_ci hardware sensors support, and also for Video For Linux support. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci If you want I2C support, you should say Y here and also to the 2362306a36Sopenharmony_ci specific driver for your bus adapter(s) below. 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci This I2C support can also be built as a module. If so, the module 2662306a36Sopenharmony_ci will be called i2c-core. 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciconfig ACPI_I2C_OPREGION 2962306a36Sopenharmony_ci bool "ACPI I2C Operation region support" 3062306a36Sopenharmony_ci depends on I2C=y && ACPI 3162306a36Sopenharmony_ci default y 3262306a36Sopenharmony_ci help 3362306a36Sopenharmony_ci Say Y here if you want to enable ACPI I2C operation region support. 3462306a36Sopenharmony_ci Operation Regions allow firmware (BIOS) code to access I2C slave devices, 3562306a36Sopenharmony_ci such as smart batteries through an I2C host controller driver. 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciif I2C 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciconfig I2C_BOARDINFO 4062306a36Sopenharmony_ci bool 4162306a36Sopenharmony_ci default y 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciconfig I2C_COMPAT 4462306a36Sopenharmony_ci bool "Enable compatibility bits for old user-space" 4562306a36Sopenharmony_ci default y 4662306a36Sopenharmony_ci help 4762306a36Sopenharmony_ci Say Y here if you intend to run lm-sensors 3.1.1 or older, or any 4862306a36Sopenharmony_ci other user-space package which expects i2c adapters to be class 4962306a36Sopenharmony_ci devices. If you don't know, say Y. 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciconfig I2C_CHARDEV 5262306a36Sopenharmony_ci tristate "I2C device interface" 5362306a36Sopenharmony_ci help 5462306a36Sopenharmony_ci Say Y here to use i2c-* device files, usually found in the /dev 5562306a36Sopenharmony_ci directory on your system. They make it possible to have user-space 5662306a36Sopenharmony_ci programs use the I2C bus. Information on how to do this is 5762306a36Sopenharmony_ci contained in the file <file:Documentation/i2c/dev-interface.rst>. 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci This support is also available as a module. If so, the module 6062306a36Sopenharmony_ci will be called i2c-dev. 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciconfig I2C_MUX 6362306a36Sopenharmony_ci tristate "I2C bus multiplexing support" 6462306a36Sopenharmony_ci help 6562306a36Sopenharmony_ci Say Y here if you want the I2C core to support the ability to 6662306a36Sopenharmony_ci handle multiplexed I2C bus topologies, by presenting each 6762306a36Sopenharmony_ci multiplexed segment as a I2C adapter. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci This support is also available as a module. If so, the module 7062306a36Sopenharmony_ci will be called i2c-mux. 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cisource "drivers/i2c/muxes/Kconfig" 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciconfig I2C_ATR 7562306a36Sopenharmony_ci tristate "I2C Address Translator (ATR) support" if COMPILE_TEST 7662306a36Sopenharmony_ci help 7762306a36Sopenharmony_ci Enable support for I2C Address Translator (ATR) chips. 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci An ATR allows accessing multiple I2C busses from a single 8062306a36Sopenharmony_ci physical bus via address translation instead of bus selection as 8162306a36Sopenharmony_ci i2c-muxes do. 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciconfig I2C_HELPER_AUTO 8462306a36Sopenharmony_ci bool "Autoselect pertinent helper modules" 8562306a36Sopenharmony_ci default y 8662306a36Sopenharmony_ci help 8762306a36Sopenharmony_ci Some I2C bus drivers require so-called "I2C algorithm" modules 8862306a36Sopenharmony_ci to work. These are basically software-only abstractions of generic 8962306a36Sopenharmony_ci I2C interfaces. This option will autoselect them so that you don't 9062306a36Sopenharmony_ci have to care. 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci Unselect this only if you need to enable additional helper 9362306a36Sopenharmony_ci modules, for example for use with external I2C bus drivers. 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci In doubt, say Y. 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciconfig I2C_SMBUS 9862306a36Sopenharmony_ci tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO 9962306a36Sopenharmony_ci help 10062306a36Sopenharmony_ci Say Y here if you want support for SMBus extensions to the I2C 10162306a36Sopenharmony_ci specification. At the moment, two extensions are supported: 10262306a36Sopenharmony_ci the SMBus Alert protocol and the SMBus Host Notify protocol. 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci This support is also available as a module. If so, the module 10562306a36Sopenharmony_ci will be called i2c-smbus. 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_cisource "drivers/i2c/algos/Kconfig" 10862306a36Sopenharmony_cisource "drivers/i2c/busses/Kconfig" 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciconfig I2C_STUB 11162306a36Sopenharmony_ci tristate "I2C/SMBus Test Stub" 11262306a36Sopenharmony_ci depends on m 11362306a36Sopenharmony_ci help 11462306a36Sopenharmony_ci This module may be useful to developers of SMBus client drivers, 11562306a36Sopenharmony_ci especially for certain kinds of sensor chips. 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci If you do build this module, be sure to read the notes and warnings 11862306a36Sopenharmony_ci in <file:Documentation/i2c/i2c-stub.rst>. 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci If you don't know what to do here, definitely say N. 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ciconfig I2C_SLAVE 12362306a36Sopenharmony_ci bool "I2C slave support" 12462306a36Sopenharmony_ci help 12562306a36Sopenharmony_ci This enables Linux to act as an I2C slave device. Note that your I2C 12662306a36Sopenharmony_ci bus master driver also needs to support this functionality. Please 12762306a36Sopenharmony_ci read Documentation/i2c/slave-interface.rst for further details. 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciif I2C_SLAVE 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ciconfig I2C_SLAVE_EEPROM 13262306a36Sopenharmony_ci tristate "I2C eeprom slave driver" 13362306a36Sopenharmony_ci help 13462306a36Sopenharmony_ci This backend makes Linux behave like an I2C EEPROM. Please read 13562306a36Sopenharmony_ci Documentation/i2c/slave-eeprom-backend.rst for further details. 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ciconfig I2C_SLAVE_TESTUNIT 13862306a36Sopenharmony_ci tristate "I2C eeprom testunit driver" 13962306a36Sopenharmony_ci help 14062306a36Sopenharmony_ci This backend can be used to trigger test cases for I2C bus masters 14162306a36Sopenharmony_ci which require a remote device with certain capabilities, e.g. 14262306a36Sopenharmony_ci multi-master, SMBus Host Notify, etc. Please read 14362306a36Sopenharmony_ci Documentation/i2c/slave-testunit-backend.rst for further details. 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ciendif 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ciconfig I2C_DEBUG_CORE 14862306a36Sopenharmony_ci bool "I2C Core debugging messages" 14962306a36Sopenharmony_ci help 15062306a36Sopenharmony_ci Say Y here if you want the I2C core to produce a bunch of debug 15162306a36Sopenharmony_ci messages to the system log. Select this if you are having a 15262306a36Sopenharmony_ci problem with I2C support and want to see more of what is going on. 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ciconfig I2C_DEBUG_ALGO 15562306a36Sopenharmony_ci bool "I2C Algorithm debugging messages" 15662306a36Sopenharmony_ci help 15762306a36Sopenharmony_ci Say Y here if you want the I2C algorithm drivers to produce a bunch 15862306a36Sopenharmony_ci of debug messages to the system log. Select this if you are having 15962306a36Sopenharmony_ci a problem with I2C support and want to see more of what is going 16062306a36Sopenharmony_ci on. 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ciconfig I2C_DEBUG_BUS 16362306a36Sopenharmony_ci bool "I2C Bus debugging messages" 16462306a36Sopenharmony_ci depends on HAS_IOMEM 16562306a36Sopenharmony_ci help 16662306a36Sopenharmony_ci Say Y here if you want the I2C bus drivers to produce a bunch of 16762306a36Sopenharmony_ci debug messages to the system log. Select this if you are having 16862306a36Sopenharmony_ci a problem with I2C support and want to see more of what is going 16962306a36Sopenharmony_ci on. 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ciendif # I2C 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ciendmenu 174