Home
last modified time | relevance | path

Searched +full:i2c +full:- +full:mux (Results 1 – 25 of 982) sorted by relevance

12345678910>>...40

/kernel/linux/linux-5.10/Documentation/devicetree/bindings/i2c/
Di2c-mux-gpmux.txt1 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 …]
Di2c-mux-pca954x.txt1 * 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 …]
Di2c-mux-reg.txt1 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 …]
/kernel/linux/linux-4.19/Documentation/devicetree/bindings/i2c/
Di2c-mux-gpmux.txt1 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 …]
Di2c-mux-reg.txt1 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 …]
/kernel/linux/linux-4.19/Documentation/i2c/
Di2c-topology1 I2C topology
4 There are a couple of reasons for building more complex i2c topologies
5 than a straight-forward i2c bus with one adapter and one or more devices.
7 1. A mux may be needed on the bus to prevent address collisions.
13 from the i2c bus, at least most of the time, and sits behind a gate
18 These constructs are represented as i2c adapter trees by Linux, where
21 i2c transfers, and all adapters with a parent are part of an "i2c-mux"
24 Depending of the particular mux driver, something happens when there is
25 an i2c transfer on one of its child adapters. The mux driver can
26 obviously operate a mux, but it can also do arbitration with an external
[all …]
/kernel/linux/linux-5.10/drivers/i2c/muxes/
DKconfig1 # 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 …]
Di2c-mux-gpio.c1 // 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 …]
Di2c-mux-gpmux.c1 // 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 …]
DMakefile1 # 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 …]
Di2c-mux-reg.c1 // 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 …]
Di2c-mux-pinctrl.c1 // 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 …]
/kernel/linux/linux-4.19/drivers/i2c/muxes/
DKconfig2 # Multiplexer I2C chip drivers configuration
5 menu "Multiplexer I2C Chip support"
9 tristate "GPIO-based I2C arbitration"
14 I2C multimaster arbitration scheme using GPIOs and a challenge &
19 will be called i2c-arb-gpio-challenge.
22 tristate "GPIO-based I2C multiplexer"
26 GPIO based I2C multiplexer. This driver provides access to
27 I2C busses connected through a MUX, which is controlled
31 will be called i2c-mux-gpio.
34 tristate "General Purpose I2C multiplexer"
[all …]
Di2c-mux-gpio.c2 * I2C multiplexer using GPIO API
11 #include <linux/i2c.h>
12 #include <linux/i2c-mux.h>
13 #include <linux/platform_data/i2c-mux-gpio.h>
28 static void i2c_mux_gpio_set(const struct gpiomux *mux, unsigned val) in i2c_mux_gpio_set() argument
32 for (i = 0; i < mux->data.n_gpios; i++) in i2c_mux_gpio_set()
33 mux->values[i] = (val >> i) & 1; in i2c_mux_gpio_set()
35 gpiod_set_array_value_cansleep(mux->data.n_gpios, in i2c_mux_gpio_set()
36 mux->gpios, mux->values); in i2c_mux_gpio_set()
41 struct gpiomux *mux = i2c_mux_priv(muxc); in i2c_mux_gpio_select() local
[all …]
Di2c-mux-gpmux.c2 * General Purpose I2C multiplexer
13 #include <linux/i2c.h>
14 #include <linux/i2c-mux.h>
16 #include <linux/mux/consumer.h>
20 struct mux { struct
28 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_select() local
31 ret = mux_control_select(mux->control, chan); in i2c_mux_select()
32 mux->do_not_deselect = ret < 0; in i2c_mux_select()
39 struct mux *mux = i2c_mux_priv(muxc); in i2c_mux_deselect() local
41 if (mux->do_not_deselect) in i2c_mux_deselect()
[all …]
DMakefile1 # 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 …]
Di2c-mux-reg.c2 * I2C multiplexer using a single register
13 #include <linux/i2c.h>
14 #include <linux/i2c-mux.h>
19 #include <linux/platform_data/i2c-mux-reg.h>
27 static int i2c_mux_reg_set(const struct regmux *mux, unsigned int chan_id) in i2c_mux_reg_set() argument
29 if (!mux->data.reg) in i2c_mux_reg_set()
30 return -EINVAL; in i2c_mux_reg_set()
38 switch (mux->data.reg_size) { in i2c_mux_reg_set()
40 if (mux->data.little_endian) in i2c_mux_reg_set()
41 iowrite32(chan_id, mux->data.reg); in i2c_mux_reg_set()
[all …]
Di2c-mux-pinctrl.c2 * I2C multiplexer using pinctrl API
19 #include <linux/i2c.h>
20 #include <linux/i2c-mux.h>
35 struct i2c_mux_pinctrl *mux = i2c_mux_priv(muxc); in i2c_mux_pinctrl_select() local
37 return pinctrl_select_state(mux->pinctrl, mux->states[chan]); in i2c_mux_pinctrl_select()
42 return i2c_mux_pinctrl_select(muxc, muxc->num_adapters); in i2c_mux_pinctrl_deselect()
52 list_for_each_entry(setting, &state->settings, node) { in i2c_mux_pinctrl_root_adapter()
53 pin_root = i2c_root_adapter(setting->pctldev->dev); in i2c_mux_pinctrl_root_adapter()
67 struct device_node *np = dev->of_node; in i2c_mux_pinctrl_parent_adapter()
71 parent_np = of_parse_phandle(np, "i2c-parent", 0); in i2c_mux_pinctrl_parent_adapter()
[all …]
/kernel/linux/linux-5.10/Documentation/i2c/
Di2c-topology.rst2 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-4.19/Documentation/i2c/muxes/
Di2c-mux-gpio1 Kernel driver i2c-mux-gpio
6 -----------
8 i2c-mux-gpio is an i2c mux driver providing access to I2C bus segments
9 from a master I2C bus and a hardware MUX controlled through GPIO pins.
13 ---------- ---------- Bus segment 1 - - - - -
14 | | SCL/SDA | |-------------- | |
15 | |------------| |
17 | Linux | GPIO 1..N | MUX |--------------- Devices
18 | |------------| | | |
20 | | | |---------------| |
[all …]
/kernel/linux/linux-4.19/drivers/mux/
Dadg792a.c1 // 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/drivers/mux/
Dadg792a.c1 // 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/
Di2c-mux-gpio.rst2 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/
Dat91-natte.dtsi1 // 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 …]
/kernel/linux/linux-4.19/arch/arm/boot/dts/
Dat91-natte.dtsi1 // 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 …]

12345678910>>...40