18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# I2C subsystem configuration 48c2ecf20Sopenharmony_ci# 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_cimenu "I2C support" 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ciconfig I2C 98c2ecf20Sopenharmony_ci tristate "I2C support" 108c2ecf20Sopenharmony_ci select RT_MUTEXES 118c2ecf20Sopenharmony_ci select IRQ_DOMAIN 128c2ecf20Sopenharmony_ci help 138c2ecf20Sopenharmony_ci I2C (pronounce: I-squared-C) is a slow serial bus protocol used in 148c2ecf20Sopenharmony_ci many micro controller applications and developed by Philips. SMBus, 158c2ecf20Sopenharmony_ci or System Management Bus is a subset of the I2C protocol. More 168c2ecf20Sopenharmony_ci information is contained in the directory <file:Documentation/i2c/>, 178c2ecf20Sopenharmony_ci especially in the file called "summary" there. 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci Both I2C and SMBus are supported here. You will need this for 208c2ecf20Sopenharmony_ci hardware sensors support, and also for Video For Linux support. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci If you want I2C support, you should say Y here and also to the 238c2ecf20Sopenharmony_ci specific driver for your bus adapter(s) below. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci This I2C support can also be built as a module. If so, the module 268c2ecf20Sopenharmony_ci will be called i2c-core. 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciconfig ACPI_I2C_OPREGION 298c2ecf20Sopenharmony_ci bool "ACPI I2C Operation region support" 308c2ecf20Sopenharmony_ci depends on I2C=y && ACPI 318c2ecf20Sopenharmony_ci default y 328c2ecf20Sopenharmony_ci help 338c2ecf20Sopenharmony_ci Say Y here if you want to enable ACPI I2C operation region support. 348c2ecf20Sopenharmony_ci Operation Regions allow firmware (BIOS) code to access I2C slave devices, 358c2ecf20Sopenharmony_ci such as smart batteries through an I2C host controller driver. 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ciif I2C 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciconfig I2C_BOARDINFO 408c2ecf20Sopenharmony_ci bool 418c2ecf20Sopenharmony_ci default y 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciconfig I2C_COMPAT 448c2ecf20Sopenharmony_ci bool "Enable compatibility bits for old user-space" 458c2ecf20Sopenharmony_ci default y 468c2ecf20Sopenharmony_ci help 478c2ecf20Sopenharmony_ci Say Y here if you intend to run lm-sensors 3.1.1 or older, or any 488c2ecf20Sopenharmony_ci other user-space package which expects i2c adapters to be class 498c2ecf20Sopenharmony_ci devices. If you don't know, say Y. 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ciconfig I2C_CHARDEV 528c2ecf20Sopenharmony_ci tristate "I2C device interface" 538c2ecf20Sopenharmony_ci help 548c2ecf20Sopenharmony_ci Say Y here to use i2c-* device files, usually found in the /dev 558c2ecf20Sopenharmony_ci directory on your system. They make it possible to have user-space 568c2ecf20Sopenharmony_ci programs use the I2C bus. Information on how to do this is 578c2ecf20Sopenharmony_ci contained in the file <file:Documentation/i2c/dev-interface.rst>. 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci This support is also available as a module. If so, the module 608c2ecf20Sopenharmony_ci will be called i2c-dev. 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciconfig I2C_MUX 638c2ecf20Sopenharmony_ci tristate "I2C bus multiplexing support" 648c2ecf20Sopenharmony_ci help 658c2ecf20Sopenharmony_ci Say Y here if you want the I2C core to support the ability to 668c2ecf20Sopenharmony_ci handle multiplexed I2C bus topologies, by presenting each 678c2ecf20Sopenharmony_ci multiplexed segment as a I2C adapter. 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci This support is also available as a module. If so, the module 708c2ecf20Sopenharmony_ci will be called i2c-mux. 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_cisource "drivers/i2c/muxes/Kconfig" 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ciconfig I2C_HELPER_AUTO 758c2ecf20Sopenharmony_ci bool "Autoselect pertinent helper modules" 768c2ecf20Sopenharmony_ci default y 778c2ecf20Sopenharmony_ci help 788c2ecf20Sopenharmony_ci Some I2C bus drivers require so-called "I2C algorithm" modules 798c2ecf20Sopenharmony_ci to work. These are basically software-only abstractions of generic 808c2ecf20Sopenharmony_ci I2C interfaces. This option will autoselect them so that you don't 818c2ecf20Sopenharmony_ci have to care. 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ci Unselect this only if you need to enable additional helper 848c2ecf20Sopenharmony_ci modules, for example for use with external I2C bus drivers. 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci In doubt, say Y. 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ciconfig I2C_SMBUS 898c2ecf20Sopenharmony_ci tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO 908c2ecf20Sopenharmony_ci help 918c2ecf20Sopenharmony_ci Say Y here if you want support for SMBus extensions to the I2C 928c2ecf20Sopenharmony_ci specification. At the moment, two extensions are supported: 938c2ecf20Sopenharmony_ci the SMBus Alert protocol and the SMBus Host Notify protocol. 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci This support is also available as a module. If so, the module 968c2ecf20Sopenharmony_ci will be called i2c-smbus. 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_cisource "drivers/i2c/algos/Kconfig" 998c2ecf20Sopenharmony_cisource "drivers/i2c/busses/Kconfig" 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ciconfig I2C_STUB 1028c2ecf20Sopenharmony_ci tristate "I2C/SMBus Test Stub" 1038c2ecf20Sopenharmony_ci depends on m 1048c2ecf20Sopenharmony_ci help 1058c2ecf20Sopenharmony_ci This module may be useful to developers of SMBus client drivers, 1068c2ecf20Sopenharmony_ci especially for certain kinds of sensor chips. 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci If you do build this module, be sure to read the notes and warnings 1098c2ecf20Sopenharmony_ci in <file:Documentation/i2c/i2c-stub.rst>. 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci If you don't know what to do here, definitely say N. 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ciconfig I2C_SLAVE 1148c2ecf20Sopenharmony_ci bool "I2C slave support" 1158c2ecf20Sopenharmony_ci help 1168c2ecf20Sopenharmony_ci This enables Linux to act as an I2C slave device. Note that your I2C 1178c2ecf20Sopenharmony_ci bus master driver also needs to support this functionality. Please 1188c2ecf20Sopenharmony_ci read Documentation/i2c/slave-interface.rst for further details. 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ciif I2C_SLAVE 1218c2ecf20Sopenharmony_ci 1228c2ecf20Sopenharmony_ciconfig I2C_SLAVE_EEPROM 1238c2ecf20Sopenharmony_ci tristate "I2C eeprom slave driver" 1248c2ecf20Sopenharmony_ci help 1258c2ecf20Sopenharmony_ci This backend makes Linux behave like an I2C EEPROM. Please read 1268c2ecf20Sopenharmony_ci Documentation/i2c/slave-eeprom-backend.rst for further details. 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ciconfig I2C_SLAVE_TESTUNIT 1298c2ecf20Sopenharmony_ci tristate "I2C eeprom testunit driver" 1308c2ecf20Sopenharmony_ci help 1318c2ecf20Sopenharmony_ci This backend can be used to trigger test cases for I2C bus masters 1328c2ecf20Sopenharmony_ci which require a remote device with certain capabilities, e.g. 1338c2ecf20Sopenharmony_ci multi-master, SMBus Host Notify, etc. Please read 1348c2ecf20Sopenharmony_ci Documentation/i2c/slave-testunit-backend.rst for further details. 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciendif 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ciconfig I2C_DEBUG_CORE 1398c2ecf20Sopenharmony_ci bool "I2C Core debugging messages" 1408c2ecf20Sopenharmony_ci help 1418c2ecf20Sopenharmony_ci Say Y here if you want the I2C core to produce a bunch of debug 1428c2ecf20Sopenharmony_ci messages to the system log. Select this if you are having a 1438c2ecf20Sopenharmony_ci problem with I2C support and want to see more of what is going on. 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_ciconfig I2C_DEBUG_ALGO 1468c2ecf20Sopenharmony_ci bool "I2C Algorithm debugging messages" 1478c2ecf20Sopenharmony_ci help 1488c2ecf20Sopenharmony_ci Say Y here if you want the I2C algorithm drivers to produce a bunch 1498c2ecf20Sopenharmony_ci of debug messages to the system log. Select this if you are having 1508c2ecf20Sopenharmony_ci a problem with I2C support and want to see more of what is going 1518c2ecf20Sopenharmony_ci on. 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ciconfig I2C_DEBUG_BUS 1548c2ecf20Sopenharmony_ci bool "I2C Bus debugging messages" 1558c2ecf20Sopenharmony_ci depends on HAS_IOMEM 1568c2ecf20Sopenharmony_ci help 1578c2ecf20Sopenharmony_ci Say Y here if you want the I2C bus drivers to produce a bunch of 1588c2ecf20Sopenharmony_ci debug messages to the system log. Select this if you are having 1598c2ecf20Sopenharmony_ci a problem with I2C support and want to see more of what is going 1608c2ecf20Sopenharmony_ci on. 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ciendif # I2C 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ciendmenu 165