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