162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Multiplexer I2C chip drivers configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenu "Multiplexer I2C Chip support"
762306a36Sopenharmony_ci	depends on I2C_MUX
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciconfig I2C_ARB_GPIO_CHALLENGE
1062306a36Sopenharmony_ci	tristate "GPIO-based I2C arbitration"
1162306a36Sopenharmony_ci	depends on GPIOLIB || COMPILE_TEST
1262306a36Sopenharmony_ci	depends on OF
1362306a36Sopenharmony_ci	help
1462306a36Sopenharmony_ci	  If you say yes to this option, support will be included for an
1562306a36Sopenharmony_ci	  I2C multimaster arbitration scheme using GPIOs and a challenge &
1662306a36Sopenharmony_ci	  response mechanism where masters have to claim the bus by asserting
1762306a36Sopenharmony_ci	  a GPIO.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
2062306a36Sopenharmony_ci	  will be called i2c-arb-gpio-challenge.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciconfig I2C_MUX_GPIO
2362306a36Sopenharmony_ci	tristate "GPIO-based I2C multiplexer"
2462306a36Sopenharmony_ci	depends on GPIOLIB
2562306a36Sopenharmony_ci	help
2662306a36Sopenharmony_ci	  If you say yes to this option, support will be included for a
2762306a36Sopenharmony_ci	  GPIO based I2C multiplexer. This driver provides access to
2862306a36Sopenharmony_ci	  I2C busses connected through a MUX, which is controlled
2962306a36Sopenharmony_ci	  through GPIO pins.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
3262306a36Sopenharmony_ci	  will be called i2c-mux-gpio.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciconfig I2C_MUX_GPMUX
3562306a36Sopenharmony_ci	tristate "General Purpose I2C multiplexer"
3662306a36Sopenharmony_ci	select MULTIPLEXER
3762306a36Sopenharmony_ci	depends on OF
3862306a36Sopenharmony_ci	help
3962306a36Sopenharmony_ci	  If you say yes to this option, support will be included for a
4062306a36Sopenharmony_ci	  general purpose I2C multiplexer. This driver provides access to
4162306a36Sopenharmony_ci	  I2C busses connected through a MUX, which in turn is controlled
4262306a36Sopenharmony_ci	  by a MUX-controller from the MUX subsystem.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
4562306a36Sopenharmony_ci	  will be called i2c-mux-gpmux.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciconfig I2C_MUX_LTC4306
4862306a36Sopenharmony_ci	tristate "LTC LTC4306/5 I2C multiplexer"
4962306a36Sopenharmony_ci	select GPIOLIB
5062306a36Sopenharmony_ci	select REGMAP_I2C
5162306a36Sopenharmony_ci	help
5262306a36Sopenharmony_ci	  If you say yes here you get support for the Analog Devices
5362306a36Sopenharmony_ci	  LTC4306 or LTC4305 I2C mux/switch devices.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
5662306a36Sopenharmony_ci	  will be called i2c-mux-ltc4306.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciconfig I2C_MUX_PCA9541
5962306a36Sopenharmony_ci	tristate "NXP PCA9541 I2C Master Selector"
6062306a36Sopenharmony_ci	help
6162306a36Sopenharmony_ci	  If you say yes here you get support for the NXP PCA9541
6262306a36Sopenharmony_ci	  I2C Master Selector.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
6562306a36Sopenharmony_ci	  will be called i2c-mux-pca9541.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciconfig I2C_MUX_PCA954x
6862306a36Sopenharmony_ci	tristate "NXP PCA954x/PCA984x and Maxim MAX735x/MAX736x I2C Mux/switches"
6962306a36Sopenharmony_ci	depends on GPIOLIB || COMPILE_TEST
7062306a36Sopenharmony_ci	help
7162306a36Sopenharmony_ci	  If you say yes here you get support for NXP PCA954x/PCA984x
7262306a36Sopenharmony_ci	  and Maxim MAX735x/MAX736x I2C mux/switch devices.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
7562306a36Sopenharmony_ci	  will be called i2c-mux-pca954x.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciconfig I2C_MUX_PINCTRL
7862306a36Sopenharmony_ci	tristate "pinctrl-based I2C multiplexer"
7962306a36Sopenharmony_ci	depends on PINCTRL
8062306a36Sopenharmony_ci	depends on OF
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  If you say yes to this option, support will be included for an I2C
8362306a36Sopenharmony_ci	  multiplexer that uses the pinctrl subsystem, i.e. pin multiplexing.
8462306a36Sopenharmony_ci	  This is useful for SoCs whose I2C module's signals can be routed to
8562306a36Sopenharmony_ci	  different sets of pins at run-time.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	  This driver can also be built as a module. If so, the module will be
8862306a36Sopenharmony_ci	  called i2c-mux-pinctrl.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciconfig I2C_MUX_REG
9162306a36Sopenharmony_ci	tristate "Register-based I2C multiplexer"
9262306a36Sopenharmony_ci	depends on HAS_IOMEM
9362306a36Sopenharmony_ci	help
9462306a36Sopenharmony_ci	  If you say yes to this option, support will be included for a
9562306a36Sopenharmony_ci	  register based I2C multiplexer. This driver provides access to
9662306a36Sopenharmony_ci	  I2C busses connected through a MUX, which is controlled
9762306a36Sopenharmony_ci	  by a single register.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
10062306a36Sopenharmony_ci	  will be called i2c-mux-reg.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciconfig I2C_DEMUX_PINCTRL
10362306a36Sopenharmony_ci	tristate "pinctrl-based I2C demultiplexer"
10462306a36Sopenharmony_ci	depends on PINCTRL && OF
10562306a36Sopenharmony_ci	select OF_DYNAMIC
10662306a36Sopenharmony_ci	help
10762306a36Sopenharmony_ci	  If you say yes to this option, support will be included for an I2C
10862306a36Sopenharmony_ci	  demultiplexer that uses the pinctrl subsystem. This is useful if you
10962306a36Sopenharmony_ci	  want to change the I2C master at run-time depending on features.
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciconfig I2C_MUX_MLXCPLD
11262306a36Sopenharmony_ci	tristate "Mellanox CPLD based I2C multiplexer"
11362306a36Sopenharmony_ci	help
11462306a36Sopenharmony_ci	  If you say yes to this option, support will be included for a
11562306a36Sopenharmony_ci	  CPLD based I2C multiplexer. This driver provides access to
11662306a36Sopenharmony_ci	  I2C busses connected through a MUX, which is controlled
11762306a36Sopenharmony_ci	  by a CPLD register.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	  This driver can also be built as a module.  If so, the module
12062306a36Sopenharmony_ci	  will be called i2c-mux-mlxcpld.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciendmenu
123