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