/linux/Documentation/i2c/ |
H A D | i2c-sysfs.rst | 1 .. SPDX-License-Identifier: GPL-2.0 4 Linux I2C Sysfs 10 I2C topology can be complex because of the existence of I2C MUX 11 (I2C Multiplexer). The Linux 12 kernel abstracts the MUX channels into logical I2C bus numbers. However, there 13 is a gap of knowledge to map from the I2C bus physical number and MUX topology 14 to logical I2C bus number. This doc is aimed to fill in this gap, so the 16 the concept of logical I2C buses in the kernel, by knowing the physical I2C 17 topology and navigating through the I2C sysfs in Linux shell. This knowledge is 18 useful and essential to use ``i2c-tools`` for the purpose of development and [all …]
|
H A D | i2c-topology.rst | 2 I2C muxes and complex topologies 5 There are a couple of reasons for building more complex I2C topologies 6 than a straight-forward I2C bus with one adapter and one or more devices. 10 1. A mux may be needed on the bus to prevent address collisions. 16 from the I2C bus, at least most of the time, and sits behind a gate 19 Several types of hardware components such as I2C muxes, I2C gates and I2C 22 These components are represented as I2C adapter trees by Linux, where 25 I2C transfers, and all adapters with a parent are part of an "i2c-mux" 28 Depending of the particular mux driver, something happens when there is 29 an I2C transfer on one of its child adapters. The mux driver can [all …]
|
/linux/Documentation/devicetree/bindings/i2c/ |
H A D | i2c-mux-gpmux.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mux-gpmux.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: General Purpose I2C Bus Mux 10 - Peter Rosin <peda@axentia.se> 13 This binding describes an I2C bus multiplexer that uses a mux controller 14 from the mux subsystem to route the I2C signals. 16 .-----. .-----. 18 .------------. '-----' '-----' [all …]
|
H A D | i2c-mux-reg.txt | 1 Register-based I2C Bus Mux 3 This binding describes an I2C bus multiplexer that uses a single register 4 to route the I2C signals. 7 - compatible: i2c-mux-reg 8 - i2c-parent: The phandle of the I2C bus that this multiplexer's master-side 10 * Standard I2C mux properties. See i2c-mux.yaml in this directory. 11 * I2C child bus nodes. See i2c-mux.yaml in this directory. 14 - reg: this pair of <offset size> specifies the register to control the mux. 15 The <offset size> depends on its parent node. It can be any memory-mapped 18 - little-endian: The existence indicates the register is in little endian. [all …]
|
H A D | i2c-mux-gpio.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mux-gpio.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: GPIO-based I2C Bus Mux 10 - Wolfram Sang <wsa@kernel.org> 13 This binding describes an I2C bus multiplexer that uses GPIOs to route the I2C signals. 15 +-----+ +-----+ 17 +------------+ +-----+ +-----+ 19 | | /--------+--------+ [all …]
|
H A D | i2c-mux.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mux.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Common i2c bus multiplexer/switch properties. 10 - Peter Rosin <peda@axentia.se> 13 An i2c bus multiplexer/switch will have several child busses that are numbered 14 uniquely in a device dependent manner. The nodes for an i2c bus 17 For i2c multiplexers/switches that have child nodes that are a mixture of both 18 i2c child busses and other child nodes, the 'i2c-mux' subnode can be used for [all …]
|
H A D | i2c-mux-ltc4306.txt | 1 * Linear Technology / Analog Devices I2C bus switch 5 - compatible: Must contain one of the following. 7 - reg: The I2C address of the device. 11 - Standard I2C mux properties. See i2c-mux.yaml in this directory. 12 - I2C child bus nodes. See i2c-mux.yaml in this directory. 16 - enable-gpios: Reference to the GPIO connected to the enable input. 17 - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all 19 multiplexers on the bus and the devices behind them use same I2C addresses. 20 - gpio-controller: Marks the device node as a GPIO Controller. 21 - #gpio-cells: Should be two. The first cell is the pin number and [all …]
|
H A D | tsd,mule-i2c-mux.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/i2c/tsd,mule-i2c-mux.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Theobroma Systems Mule I2C multiplexer 10 - Farouk Bouabid <farouk.bouabid@cherry.de> 11 - Quentin Schulz <quentin.schulz@cherry.de> 14 Theobroma Systems Mule is an MCU that emulates a set of I2C devices, among 15 which devices that are reachable through an I2C-mux. The devices on the mux 16 can be selected by writing the appropriate device number to an I2C config [all …]
|
H A D | i2c-mux-pca954x.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: NXP PCA954x I2C and compatible bus switches 10 - Laurent Pinchart <laurent.pinchart@ideasonboard.com> 13 The NXP PCA954x and compatible devices are I2C bus 23 - enum: 24 - maxim,max7356 25 - maxim,max7357 [all …]
|
/linux/drivers/i2c/muxes/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 3 # Multiplexer I2C chip drivers configuration 6 menu "Multiplexer I2C Chip support" 10 tristate "GPIO-based I2C arbitration" 15 I2C multimaster arbitration scheme using GPIOs and a challenge & 20 will be called i2c-arb-gpio-challenge. 23 tristate "GPIO-based I2C multiplexer" 27 GPIO based I2C multiplexer. This driver provides access to 28 I2C busses connected through a MUX, which is controlled 32 will be called i2c-mux-gpio. [all …]
|
H A D | i2c-mux-gpio.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * I2C multiplexer using GPIO API 12 #include <linux/i2c.h> 13 #include <linux/i2c-mux.h> 16 #include <linux/platform_data/i2c-mux-gpio.h> 26 static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned int val) in i2c_mux_gpio_set() argument 32 gpiod_set_array_value_cansleep(mux->ngpios, mux->gpios, NULL, values); in i2c_mux_gpio_set() 37 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_select() local 39 i2c_mux_gpio_set(mux, chan); in i2c_mux_gpio_select() 41 if (mux->data.settle_time) in i2c_mux_gpio_select() [all …]
|
H A D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0 3 # Makefile for multiplexer I2C chip drivers. 5 obj-$(CONFIG_I2C_ARB_GPIO_CHALLENGE) += i2c-arb-gpio-challenge.o 7 obj-$(CONFIG_I2C_DEMUX_PINCTRL) += i2c-demux-pinctrl.o 9 obj-$(CONFIG_I2C_MUX_GPIO) += i2c-mux-gpio.o 10 obj-$(CONFIG_I2C_MUX_GPMUX) += i2c-mux-gpmux.o 11 obj-$(CONFIG_I2C_MUX_LTC4306) += i2c-mux-ltc4306.o 12 obj-$(CONFIG_I2C_MUX_MLXCPLD) += i2c-mux-mlxcpld.o 13 obj-$(CONFIG_I2C_MUX_MULE) += i2c-mux-mule.o 14 obj-$(CONFIG_I2C_MUX_PCA9541) += i2c-mux-pca9541.o [all …]
|
/linux/arch/arm/boot/dts/aspeed/ |
H A D | aspeed-bmc-ampere-mtmitchell.dts | 1 // SPDX-License-Identifier: GPL-2.0-only 4 /dts-v1/; 6 #include "aspeed-g6.dtsi" 7 #include <dt-bindings/i2c/i2c.h> 8 #include <dt-bindings/gpio/aspeed-gpio.h> 12 compatible = "ampere,mtmitchell-bmc", "aspeed,ast2600"; 19 * I2C temperature alias port 27 * i2c bus 30-31 assigned to OCP slot 0-1 33 * i2c bus 32-33 assigned to Riser slot 0-1 39 * i2c bus 38-39 assigned to FRU on Riser slot 0-1 [all …]
|
H A D | aspeed-bmc-ampere-mtjade.dts | 1 // SPDX-License-Identifier: GPL-2.0+ 2 /dts-v1/; 3 #include "aspeed-g5.dtsi" 4 #include <dt-bindings/gpio/aspeed-gpio.h> 8 compatible = "ampere,mtjade-bmc", "aspeed,ast2500"; 12 * i2c bus 50-57 assigned to NVMe slot 0-7 24 * i2c bus 60-67 assigned to NVMe slot 8-15 36 * i2c bus 70-77 assigned to NVMe slot 16-23 48 * i2c bus 80-81 assigned to NVMe M2 slot 0-1 54 * i2c bus 82 assigned to OCP slot [all …]
|
H A D | aspeed-bmc-facebook-cmm.dts | 1 // SPDX-License-Identifier: GPL-2.0+ 3 /dts-v1/; 5 #include "ast2500-facebook-netbmc-common.dtsi" 9 compatible = "facebook,cmm-bmc", "aspeed,ast2500"; 22 * PCA9548 (1-0077) provides 8 channels for connecting to 35 * PCA9548 (2-0071) provides 8 channels for connecting to 48 * PCA9548 (8-0077) provides 8 channels and the first 4 61 * 2 PCA9548 (18-0070 & 18-0073), 16 channels connecting 82 * 2 PCA9548 (19-0070 & 19-0073), 16 channels connecting 103 * 2 PCA9548 (20-0070 & 20-0073), 16 channels connecting [all …]
|
H A D | aspeed-bmc-facebook-minipack.dts | 1 // SPDX-License-Identifier: GPL-2.0+ 3 /dts-v1/; 5 #include "ast2500-facebook-netbmc-common.dtsi" 9 compatible = "facebook,minipack-bmc", "aspeed,ast2500"; 23 * i2c switch 2-0070, pca9548, 8 child channels assigned 24 * with bus number 16-23. 36 * i2c switch 8-0070, pca9548, 8 child channels assigned 37 * with bus number 24-31. 49 * i2c switch 9-0070, pca9548, 8 child channels assigned 50 * with bus number 32-39. [all …]
|
H A D | aspeed-bmc-facebook-fuji.dts | 1 // SPDX-License-Identifier: GPL-2.0+ 4 /dts-v1/; 6 #include <dt-bindings/leds/common.h> 7 #include "ast2600-facebook-netbmc-common.dtsi" 11 compatible = "facebook,fuji-bmc", "aspeed,ast2600"; 15 * PCA9548 (2-0070) provides 8 channels connecting to 28 * PCA9548 (8-0070) provides 8 channels connecting to 41 * PCA9548 (11-0077) provides 8 channels connecting to 54 * PCA9548 (24-0071) provides 8 channels connecting to 55 * PDB-Left. [all …]
|
/linux/drivers/mux/ |
H A D | adg792a.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Multiplexer driver for Analog Devices ADG792A/G Triple 4:1 mux 11 #include <linux/i2c.h> 13 #include <linux/mux/driver.h> 18 #define ADG792A_DISABLE(mux) (0x50 | (mux)) argument 20 #define ADG792A_MUX(mux, state) (0xc0 | (((mux) + 1) << 2) | (state)) argument 23 static int adg792a_write_cmd(struct i2c_client *i2c, u8 cmd, int reset) in adg792a_write_cmd() argument 31 return i2c_smbus_write_byte_data(i2c, cmd, data); in adg792a_write_cmd() 34 static int adg792a_set(struct mux_control *mux, int state) in adg792a_set() argument 36 struct i2c_client *i2c = to_i2c_client(mux->chip->dev.parent); in adg792a_set() local [all …]
|
/linux/Documentation/i2c/muxes/ |
H A D | i2c-mux-gpio.rst | 2 Kernel driver i2c-mux-gpio 8 ----------- 10 i2c-mux-gpio is an i2c mux driver providing access to I2C bus segments 11 from a master I2C bus and a hardware MUX controlled through GPIO pins. 15 ---------- ---------- Bus segment 1 - - - - - 16 | | SCL/SDA | |-------------- | | 17 | |------------| | 19 | Linux | GPIO 1..N | MUX |--------------- Devices 20 | |------------| | | | 22 | | | |---------------| | [all …]
|
/linux/arch/arm/boot/dts/microchip/ |
H A D | at91-natte.dtsi | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * at91-natte.dts - Device Tree include file for the Natte board 11 mux: mux-controller { label 12 compatible = "gpio-mux"; 13 #mux-control-cells = <0>; 15 mux-gpios = <&ioexp 0 GPIO_ACTIVE_HIGH>, 20 batntc-mux { 21 compatible = "io-channel-mux"; 22 io-channels = <&adc 5>; 23 io-channel-names = "parent"; [all …]
|
/linux/Documentation/devicetree/bindings/mux/ |
H A D | gpio-mux.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/mux/gpio-mux.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: GPIO-based multiplexer controller 10 - Peter Rosin <peda@axentia.se> 22 const: gpio-mux 24 mux-gpios: 28 '#mux-control-cells': 31 '#mux-state-cells': [all …]
|
H A D | mux-controller.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/mux/mux-controller.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Peter Rosin <peda@axentia.se> 13 A multiplexer (or mux) controller will have one, or several, consumer devices 14 that uses the mux controller. Thus, a mux controller can possibly control 16 multiplexer needed by each consumer, but a single mux controller can of course 19 A mux controller provides a number of states to its consumers, and the state 20 space is a simple zero-based enumeration. I.e. 0-1 for a 2-way multiplexer, [all …]
|
/linux/Documentation/devicetree/bindings/ |
H A D | unittest.txt | 6 - compatible: must be "unittest" 15 2) OF unittest i2c adapter platform device 20 - compatible: must be unittest-i2c-bus 22 Children nodes contain unittest i2c devices. 25 unittest-i2c-bus { 26 compatible = "unittest-i2c-bus"; 29 3) OF unittest i2c device 31 ** I2C unittest device 34 - compatible: must be unittest-i2c-dev 39 unittest-i2c-dev { [all …]
|
/linux/Documentation/devicetree/bindings/board/ |
H A D | fsl,fpga-qixis-i2c.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/board/fsl,fpga-qixis-i2c.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Freescale on-board FPGA connected on I2C bus 10 - Frank Li <Frank.Li@nxp.com> 15 - items: 16 - enum: 17 - fsl,bsc9132qds-fpga 18 - const: fsl,fpga-qixis-i2c [all …]
|
/linux/arch/arm/boot/dts/nuvoton/ |
H A D | nuvoton-npcm730-gbs.dts | 1 // SPDX-License-Identifier: GPL-2.0 4 /dts-v1/; 5 #include "nuvoton-npcm730.dtsi" 6 #include <dt-bindings/gpio/gpio.h> 10 compatible = "quanta,gbs-bmc","nuvoton,npcm730"; 71 stdout-path = &serial0; 78 gpio-keys { 79 compatible = "gpio-keys"; 80 sas-cable0 { 81 label = "sas-cable0"; [all …]
|