| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/i2c/ |
| D | i2c-mux-gpmux.txt | 1 General Purpose I2C Bus Mux 3 This binding describes an I2C bus multiplexer that uses a mux controller 4 from the mux subsystem to route the I2C signals. 6 .-----. .-----. 8 .------------. '-----' '-----' 10 | | .--------+--------' 11 | .------. | .------+ child bus A, on MUX value set to 0 12 | | I2C |-|--| Mux | 13 | '------' | '--+---+ child bus B, on MUX value set to 1 14 | .------. | | '----------+--------+--------. [all …]
|
| D | i2c-mux-pca954x.txt | 1 * NXP PCA954x I2C bus switch 3 The driver supports NXP PCA954x and PCA984x I2C mux/switch devices. 7 - compatible: Must contain one of the following. 18 - reg: The I2C address of the device. 22 - Standard I2C mux properties. See i2c-mux.txt in this directory. 23 - I2C child bus nodes. See i2c-mux.txt in this directory. 27 - reset-gpios: Reference to the GPIO connected to the reset input. 28 - idle-state: if present, overrides i2c-mux-idle-disconnect, 29 Please refer to Documentation/devicetree/bindings/mux/mux-controller.txt 30 - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all [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.txt in this directory. 11 * I2C child bus nodes. See i2c-mux.txt 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.txt | 1 Common i2c bus multiplexer/switch properties. 3 An i2c bus multiplexer/switch will have several child busses that are 4 numbered uniquely in a device dependent manner. The nodes for an i2c bus 8 - #address-cells = <1>; 9 This property is required if the i2c-mux child node does not exist. 11 - #size-cells = <0>; 12 This property is required if the i2c-mux child node does not exist. 14 - i2c-mux 15 For i2c multiplexers/switches that have child nodes that are a mixture 16 of both i2c child busses and other child nodes, the 'i2c-mux' subnode [all …]
|
| D | i2c-mux-gpio.txt | 1 GPIO-based I2C Bus Mux 3 This binding describes an I2C bus multiplexer that uses GPIOs to 4 route the I2C signals. 6 +-----+ +-----+ 8 +------------+ +-----+ +-----+ 10 | | /--------+--------+ 11 | +------+ | +------+ child bus A, on GPIO value set to 0 12 | | I2C |-|--| Mux | 13 | +------+ | +--+---+ child bus B, on GPIO value set to 1 14 | | | \----------+--------+--------+ [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.txt in this directory. 12 - I2C child bus nodes. See i2c-mux.txt 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 …]
|
| D | i2c-mux-pinctrl.txt | 1 Pinctrl-based I2C Bus Mux 3 This binding describes an I2C bus multiplexer that uses pin multiplexing to 4 route the I2C signals, and represents the pin multiplexing configuration 7 +-----+ +-----+ 9 +------------------------+ +-----+ +-----+ 11 | /----|------+--------+ 12 | +---+ +------+ | child bus A, on first set of pins 13 | |I2C|---|Pinmux| | 14 | +---+ +------+ | child bus B, on second set of pins 15 | \----|------+--------+--------+ [all …]
|
| /kernel/linux/linux-5.10/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> 10 #include <linux/platform_data/i2c-mux-gpio.h> 25 static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val) in i2c_mux_gpio_set() argument 31 gpiod_set_array_value_cansleep(mux->ngpios, mux->gpios, NULL, values); in i2c_mux_gpio_set() 36 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_select() local 38 i2c_mux_gpio_set(mux, chan); in i2c_mux_gpio_select() 45 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_deselect() local [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() local 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 | 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-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 | 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 …]
|
| D | i2c-mux-mlxcpld.c | 2 * drivers/i2c/muxes/i2c-mux-mlxcpld.c 36 #include <linux/i2c.h> 37 #include <linux/i2c-mux.h> 47 /* mlxcpld_mux - mux control structure: 48 * @last_chan - last register value 49 * @client - I2C device client 56 /* MUX logic description. 57 * Driver can support different mux control logic, according to CPLD 62 * i2c-mlxcpld Digital Analog 64 * *--------* * -> mux1 (virt bus2) -> mux -> | [all …]
|
| /kernel/linux/linux-5.10/Documentation/i2c/ |
| 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. 8 1. A mux may be needed on the bus to prevent address collisions. 14 from the I2C bus, at least most of the time, and sits behind a gate 20 These constructs are represented as I2C adapter trees by Linux, where 23 I2C transfers, and all adapters with a parent are part of an "i2c-mux" 26 Depending of the particular mux driver, something happens when there is 27 an I2C transfer on one of its child adapters. The mux driver can 28 obviously operate a mux, but it can also do arbitration with an external [all …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/arch/arm/boot/dts/ |
| 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 | 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 …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/mux/ |
| D | gpio-mux.txt | 1 GPIO-based multiplexer controller bindings 7 - compatible : "gpio-mux" 8 - mux-gpios : list of gpios used to control the multiplexer, least 10 - #mux-control-cells : <0> 11 * Standard mux-controller bindings as decribed in mux-controller.txt 14 - idle-state : if present, the state the mux will have when idle. The 23 mux: mux-controller { 24 compatible = "gpio-mux"; 25 #mux-control-cells = <0>; 27 mux-gpios = <&pioA 0 GPIO_ACTIVE_HIGH>, [all …]
|
| D | mux-controller.txt | 4 A multiplexer (or mux) controller will have one, or several, consumer devices 5 that uses the mux controller. Thus, a mux controller can possibly control 7 multiplexer needed by each consumer, but a single mux controller can of course 10 A mux controller provides a number of states to its consumers, and the state 11 space is a simple zero-based enumeration. I.e. 0-1 for a 2-way multiplexer, 12 0-7 for an 8-way multiplexer, etc. 16 --------- 18 Mux controller consumers should specify a list of mux controllers that they 19 want to use with a property containing a 'mux-ctrl-list': 21 mux-ctrl-list ::= <single-mux-ctrl> [mux-ctrl-list] [all …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/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 …]
|
| /kernel/linux/linux-5.10/sound/soc/codecs/ |
| D | max98925.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * max98925.c -- ALSA SoC Stereo MAX98925 driver 4 * Copyright 2013-15 Maxim Integrated Products 7 #include <linux/i2c.h> 92 SOC_DAPM_ENUM("Rc Filter MUX Mux", max98925_hpf_enum); 95 SOC_DAPM_ENUM("DAI IN MUX Mux", max98925_dai_enum); 105 regmap_update_bits(max98925->regmap, in max98925_dac_event() 113 regmap_update_bits(max98925->regmap, in max98925_dac_event() 125 SND_SOC_DAPM_MUX("DAI IN MUX", SND_SOC_NOPM, 0, 0, 127 SND_SOC_DAPM_MUX("Rc Filter MUX", SND_SOC_NOPM, 0, 0, [all …]
|