/Linux-v6.1/Documentation/devicetree/bindings/i2c/ |
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 …]
|
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 bus switch 10 - Laurent Pinchart <laurent.pinchart@ideasonboard.com> 13 The binding supports NXP PCA954x and PCA984x I2C mux/switch devices. 16 - $ref: /schemas/i2c/i2c-mux.yaml# 21 - enum: 22 - nxp,pca9540 [all …]
|
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 …]
|
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 …]
|
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 …]
|
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 …]
|
/Linux-v6.1/Documentation/i2c/ |
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 …]
|
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-v6.1/drivers/i2c/muxes/ |
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 …]
|
D | i2c-mux-gpio.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * I2C multiplexer using GPIO API 8 #include <linux/i2c.h> 9 #include <linux/i2c-mux.h> 11 #include <linux/platform_data/i2c-mux-gpio.h> 26 static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned 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() 46 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_deselect() local [all …]
|
D | i2c-mux-mlxcpld.c | 1 // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 3 * Mellanox i2c mux driver 5 * Copyright (C) 2016-2020 Mellanox Technologies 9 #include <linux/i2c.h> 10 #include <linux/i2c-mux.h> 18 /* mlxcpld_mux - mux control structure: 19 * @last_val - last selected register value or -1 if mux deselected 20 * @client - I2C device client 29 /* MUX logic description. 30 * Driver can support different mux control logic, according to CPLD [all …]
|
D | i2c-mux-gpmux.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * General Purpose I2C multiplexer 10 #include <linux/i2c.h> 11 #include <linux/i2c-mux.h> 13 #include <linux/mux/consumer.h> 17 struct mux { struct 25 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_select() argument 28 ret = mux_control_select(mux->control, chan); in i2c_mux_select() 29 mux->do_not_deselect = ret < 0; in i2c_mux_select() 36 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_deselect() local [all …]
|
D | i2c-mux-reg.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * I2C multiplexer using a single register 9 #include <linux/i2c.h> 10 #include <linux/i2c-mux.h> 15 #include <linux/platform_data/i2c-mux-reg.h> 23 static int i2c_mux_reg_set(const struct regmux *mux, unsigned int chan_id) in i2c_mux_reg_set() argument 25 if (!mux->data.reg) in i2c_mux_reg_set() 26 return -EINVAL; in i2c_mux_reg_set() 34 switch (mux->data.reg_size) { in i2c_mux_reg_set() 36 if (mux->data.little_endian) in i2c_mux_reg_set() [all …]
|
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_PCA9541) += i2c-mux-pca9541.o 14 obj-$(CONFIG_I2C_MUX_PCA954x) += i2c-mux-pca954x.o [all …]
|
D | i2c-mux-pinctrl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * I2C multiplexer using pinctrl API 8 #include <linux/i2c.h> 9 #include <linux/i2c-mux.h> 24 struct i2c_mux_pinctrl *mux = i2c_mux_priv(muxc); in i2c_mux_pinctrl_select() local 26 return pinctrl_select_state(mux->pinctrl, mux->states[chan]); in i2c_mux_pinctrl_select() 31 return i2c_mux_pinctrl_select(muxc, muxc->num_adapters); in i2c_mux_pinctrl_deselect() 41 list_for_each_entry(setting, &state->settings, node) { in i2c_mux_pinctrl_root_adapter() 42 pin_root = i2c_root_adapter(setting->pctldev->dev); in i2c_mux_pinctrl_root_adapter() 56 struct device_node *np = dev->of_node; in i2c_mux_pinctrl_parent_adapter() [all …]
|
/Linux-v6.1/arch/arm/boot/dts/ |
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 55 stdout-path = &uart5; [all …]
|
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 …]
|
D | lan966x-pcb8309.dts | 1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT) 3 * lan966x_pcb8309.dts - Device Tree file for PCB8309 5 /dts-v1/; 7 #include "dt-bindings/phy/phy-lan966x-serdes.h" 10 model = "Microchip EVB - LAN9662"; 11 compatible = "microchip,lan9662-pcb8309", "microchip,lan9662", "microchip,lan966"; 20 stdout-path = "serial0:115200n8"; 23 gpio-restart { 24 compatible = "gpio-restart"; 29 i2c-mux { [all …]
|
/Linux-v6.1/drivers/mux/ |
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-v6.1/Documentation/i2c/muxes/ |
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-v6.1/Documentation/devicetree/bindings/mux/ |
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 bindings 10 - Peter Rosin <peda@axentia.se> 22 const: gpio-mux 24 mux-gpios: 28 '#mux-control-cells': 31 '#mux-state-cells': [all …]
|
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-v6.1/Documentation/devicetree/bindings/ |
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-v6.1/drivers/i2c/ |
D | i2c-mux.c | 2 * Multiplexed I2C bus driver. 4 * Copyright (c) 2008-2009 Rodolfo Giometti <giometti@linux.it> 5 * Copyright (c) 2008-2009 Eurotech S.p.A. <info@eurotech.it> 6 * Copyright (c) 2009-2010 NSN GmbH & Co KG <michael.lawnick.ext@nsn.com> 8 * Simplifies access to complex multiplexed I2C bus topologies, by presenting 9 * each multiplexed bus segment as an additional I2C adapter. 10 * Supports multi-level mux'ing (mux behind a mux). 13 * i2c-virt.c from Kumar Gala <galak@kernel.crashing.org> 14 * i2c-virtual.c from Ken Harrenstien, Copyright (c) 2004 Google, Inc. 15 * i2c-virtual.c from Brian Kuschak <bkuschak@yahoo.com> [all …]
|
/Linux-v6.1/drivers/iio/gyro/ |
D | mpu3050-i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 #include <linux/i2c.h> 4 #include <linux/i2c-mux.h> 17 static int mpu3050_i2c_bypass_select(struct i2c_mux_core *mux, u32 chan_id) in mpu3050_i2c_bypass_select() argument 19 struct mpu3050 *mpu3050 = i2c_mux_priv(mux); in mpu3050_i2c_bypass_select() 22 pm_runtime_get_sync(mpu3050->dev); in mpu3050_i2c_bypass_select() 26 static int mpu3050_i2c_bypass_deselect(struct i2c_mux_core *mux, u32 chan_id) in mpu3050_i2c_bypass_deselect() argument 28 struct mpu3050 *mpu3050 = i2c_mux_priv(mux); in mpu3050_i2c_bypass_deselect() 30 pm_runtime_mark_last_busy(mpu3050->dev); in mpu3050_i2c_bypass_deselect() 31 pm_runtime_put_autosuspend(mpu3050->dev); in mpu3050_i2c_bypass_deselect() [all …]
|