| /kernel/linux/linux-6.6/Documentation/i2c/ |
| D | i2c-topology.rst | 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. 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 30 obviously operate a mux, but it can also do arbitration with an external 31 bus master or open a gate. The mux driver has two operations for this, 40 mux-locked or parent-locked muxes. 43 Mux-locked muxes 44 ---------------- [all …]
|
| /kernel/linux/linux-5.10/Documentation/i2c/ |
| D | i2c-topology.rst | 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. 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 29 bus master or open a gate. The mux driver has two operations for this, 38 mux-locked or parent-locked muxes. As is evident from below, it can be 39 useful to know if a mux is mux-locked or if it is parent-locked. The 45 i2c-arb-gpio-challenge Parent-locked [all …]
|
| /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 …]
|
| /kernel/linux/linux-6.6/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 …]
|
| /kernel/linux/linux-5.10/drivers/i2c/ |
| D | i2c-mux.c | 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> 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> 24 #include <linux/i2c-mux.h> 42 struct i2c_mux_priv *priv = adap->algo_data; in __i2c_mux_master_xfer() 43 struct i2c_mux_core *muxc = priv->muxc; in __i2c_mux_master_xfer() [all …]
|
| /kernel/linux/linux-6.6/drivers/i2c/ |
| D | i2c-mux.c | 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> 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> 24 #include <linux/i2c-mux.h> 42 struct i2c_mux_priv *priv = adap->algo_data; in __i2c_mux_master_xfer() 43 struct i2c_mux_core *muxc = priv->muxc; in __i2c_mux_master_xfer() [all …]
|
| /kernel/linux/linux-6.6/drivers/mux/ |
| D | core.c | 1 // SPDX-License-Identifier: GPL-2.0 10 #define pr_fmt(fmt) "mux-core: " fmt 19 #include <linux/mux/consumer.h> 20 #include <linux/mux/driver.h> 25 * The idle-as-is "state" is not an actual state that may be selected, it 32 * struct mux_state - Represents a mux controller state specific to a given 34 * @mux: Pointer to a mux controller. 35 * @state: State of the mux to be selected. 41 struct mux_control *mux; member 46 .name = "mux", [all …]
|
| /kernel/linux/linux-6.6/drivers/i2c/muxes/ |
| D | i2c-mux-gpmux.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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 38 if (mux->do_not_deselect) in i2c_mux_deselect() 41 return mux_control_deselect(mux->control); in i2c_mux_deselect() [all …]
|
| D | i2c-mux-pinctrl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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() 60 parent_np = of_parse_phandle(np, "i2c-parent", 0); in i2c_mux_pinctrl_parent_adapter() 62 dev_err(dev, "Cannot parse i2c-parent\n"); in i2c_mux_pinctrl_parent_adapter() [all …]
|
| D | i2c-mux-gpio.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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 48 i2c_mux_gpio_set(mux, mux->data.idle); in i2c_mux_gpio_deselect() 53 static int i2c_mux_gpio_probe_fw(struct gpiomux *mux, in i2c_mux_gpio_probe_fw() argument [all …]
|
| /kernel/linux/linux-5.10/drivers/i2c/muxes/ |
| D | i2c-mux-gpmux.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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 38 if (mux->do_not_deselect) in i2c_mux_deselect() 41 return mux_control_deselect(mux->control); in i2c_mux_deselect() [all …]
|
| D | i2c-mux-pinctrl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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() 60 parent_np = of_parse_phandle(np, "i2c-parent", 0); in i2c_mux_pinctrl_parent_adapter() 62 dev_err(dev, "Cannot parse i2c-parent\n"); in i2c_mux_pinctrl_parent_adapter() [all …]
|
| D | i2c-mux-gpio.c | 1 // SPDX-License-Identifier: GPL-2.0-only 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 47 i2c_mux_gpio_set(mux, mux->data.idle); in i2c_mux_gpio_deselect() 53 static int i2c_mux_gpio_probe_dt(struct gpiomux *mux, in i2c_mux_gpio_probe_dt() argument [all …]
|
| /kernel/linux/linux-5.10/drivers/mux/ |
| D | core.c | 1 // SPDX-License-Identifier: GPL-2.0 10 #define pr_fmt(fmt) "mux-core: " fmt 18 #include <linux/mux/consumer.h> 19 #include <linux/mux/driver.h> 25 * The idle-as-is "state" is not an actual state that may be selected, it 32 .name = "mux", 54 ida_simple_remove(&mux_ida, mux_chip->id); in mux_chip_release() 59 .name = "mux-chip", 64 * mux_chip_alloc() - Allocate a mux-chip. 65 * @dev: The parent device implementing the mux interface. [all …]
|
| /kernel/linux/linux-6.6/arch/arm/boot/dts/microchip/ |
| 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 …]
|
| /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 …]
|
| /kernel/liteos_m/kernel/include/ |
| D | los_mux.h | 2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. 3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. 90 * Mutex error code: The mutex fails to be locked in non-blocking mode because it is locked by anoth… 100 * Mutex error code: The mutex is being locked during an interrupt. 104 * Solution: Check whether the mutex is being locked during an interrupt. 126 * Solution: Increase the waiting time or set the waiting time to LOS_WAIT_FOREVER (forever-blocking… 140 * Mutex error code: The mutex to be deleted is being locked. 177 * Mutex error code: The API is called in a system-level task, which is forbidden. 180 * Solution: Do not call the API in system-level tasks. 193 …* <li>The total number of mutexes is pre-configured. If there are no available mutexes, the mutex … [all …]
|
| /kernel/linux/linux-5.10/drivers/media/i2c/ |
| D | max9286.c | 1 // SPDX-License-Identifier: GPL-2.0+ 5 * Copyright (C) 2017-2019 Jacopo Mondi 6 * Copyright (C) 2017-2019 Kieran Bingham 7 * Copyright (C) 2017-2019 Laurent Pinchart 8 * Copyright (C) 2017-2019 Niklas Söderlund 19 #include <linux/i2c-mux.h> 26 #include <media/v4l2-async.h> 27 #include <media/v4l2-ctrls.h> 28 #include <media/v4l2-device.h> 29 #include <media/v4l2-fwnode.h> [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/clock/ |
| D | qoriq-clock.txt | 5 multiple phase locked loops (PLL) to create a variety of frequencies 14 --------------- ------------- 21 - compatible: Should contain a chip-specific clock block compatible 22 string and (if applicable) may contain a chassis-version clock 25 Chip-specific strings are of the form "fsl,<chip>-clockgen", such as: 26 * "fsl,p2041-clockgen" 27 * "fsl,p3041-clockgen" 28 * "fsl,p4080-clockgen" 29 * "fsl,p5020-clockgen" 30 * "fsl,p5040-clockgen" [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/clock/ |
| D | qoriq-clock.txt | 5 multiple phase locked loops (PLL) to create a variety of frequencies 14 --------------- ------------- 21 - compatible: Should contain a chip-specific clock block compatible 22 string and (if applicable) may contain a chassis-version clock 25 Chip-specific strings are of the form "fsl,<chip>-clockgen", such as: 26 * "fsl,p2041-clockgen" 27 * "fsl,p3041-clockgen" 28 * "fsl,p4080-clockgen" 29 * "fsl,p5020-clockgen" 30 * "fsl,p5040-clockgen" [all …]
|
| /kernel/linux/linux-5.10/drivers/spi/ |
| D | spi-dw-bt1.c | 1 // SPDX-License-Identifier: GPL-2.0-only 9 // Baikal-T1 DW APB SPI and System Boot SPI driver 17 #include <linux/mux/consumer.h> 24 #include <linux/spi/spi-mem.h> 27 #include "spi-dw.h" 35 struct mux_control *mux; member 52 struct dw_spi_bt1 *dwsbt1 = to_dw_spi_bt1(desc->mem->spi->controller); in dw_spi_bt1_dirmap_create() 54 if (!dwsbt1->map || in dw_spi_bt1_dirmap_create() 55 !dwsbt1->dws.mem_ops.supports_op(desc->mem, &desc->info.op_tmpl)) in dw_spi_bt1_dirmap_create() 56 return -EOPNOTSUPP; in dw_spi_bt1_dirmap_create() [all …]
|
| /kernel/linux/linux-6.6/drivers/spi/ |
| D | spi-dw-bt1.c | 1 // SPDX-License-Identifier: GPL-2.0-only 9 // Baikal-T1 DW APB SPI and System Boot SPI driver 17 #include <linux/mux/consumer.h> 24 #include <linux/spi/spi-mem.h> 27 #include "spi-dw.h" 35 struct mux_control *mux; member 52 struct dw_spi_bt1 *dwsbt1 = to_dw_spi_bt1(desc->mem->spi->controller); in dw_spi_bt1_dirmap_create() 54 if (!dwsbt1->map || in dw_spi_bt1_dirmap_create() 55 !dwsbt1->dws.mem_ops.supports_op(desc->mem, &desc->info.op_tmpl)) in dw_spi_bt1_dirmap_create() 56 return -EOPNOTSUPP; in dw_spi_bt1_dirmap_create() [all …]
|
| /kernel/linux/linux-5.10/drivers/mtd/nand/onenand/ |
| D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 46 a One-Time Programmable Block memory area. 49 The OTP block can be read, programmed and locked using the same 53 OTP block is fully-guaranteed to be a valid block. 59 Since the device is equipped with two DataRAMs, and two-plane NAND 67 Mux: KFM2G16Q2M, KFN4G16Q2M,
|
| /kernel/linux/linux-6.6/drivers/mtd/nand/onenand/ |
| D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 48 a One-Time Programmable Block memory area. 51 The OTP block can be read, programmed and locked using the same 55 OTP block is fully-guaranteed to be a valid block. 61 Since the device is equipped with two DataRAMs, and two-plane NAND 69 Mux: KFM2G16Q2M, KFN4G16Q2M,
|
| /kernel/linux/linux-6.6/drivers/media/i2c/ |
| D | max9286.c | 1 // SPDX-License-Identifier: GPL-2.0+ 5 * Copyright (C) 2017-2019 Jacopo Mondi 6 * Copyright (C) 2017-2019 Kieran Bingham 7 * Copyright (C) 2017-2019 Laurent Pinchart 8 * Copyright (C) 2017-2019 Niklas Söderlund 20 #include <linux/i2c-mux.h> 27 #include <media/v4l2-async.h> 28 #include <media/v4l2-ctrls.h> 29 #include <media/v4l2-device.h> 30 #include <media/v4l2-fwnode.h> [all …]
|