/Linux-v5.15/drivers/media/pci/netup_unidvb/ |
D | netup_unidvb_i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 5 * Internal I2C bus driver for NetUP Universal Dual DVB-CI 65 irqreturn_t netup_i2c_interrupt(struct netup_i2c *i2c) in netup_i2c_interrupt() argument 71 spin_lock_irqsave(&i2c->lock, flags); in netup_i2c_interrupt() 72 reg = readw(&i2c->regs->twi_ctrl0_stat); in netup_i2c_interrupt() 73 writew(reg & ~TWI_IRQEN, &i2c->regs->twi_ctrl0_stat); in netup_i2c_interrupt() 74 dev_dbg(i2c->adap.dev.parent, in netup_i2c_interrupt() 77 dev_dbg(i2c->adap.dev.parent, in netup_i2c_interrupt() 79 i2c->state = STATE_DONE; in netup_i2c_interrupt() 83 dev_dbg(i2c->adap.dev.parent, in netup_i2c_interrupt() [all …]
|
/Linux-v5.15/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-v5.15/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. 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 21 each adapter has a parent adapter (except the root adapter) and zero or 23 I2C transfers, and all adapters with a parent are part of an "i2c-mux" 27 an I2C transfer on one of its child adapters. The mux driver can 37 There are two variants of locking available to I2C muxes, they can be 38 mux-locked or parent-locked muxes. As is evident from below, it can be [all …]
|
/Linux-v5.15/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-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-demux-pinctrl.txt | 1 Pinctrl-based I2C Bus DeMux 3 This binding describes an I2C bus demultiplexer that uses pin multiplexing to 4 route the I2C signals, and represents the pin multiplexing configuration using 5 the pinctrl device tree bindings. This may be used to select one I2C IP core at 6 runtime which may have a better feature set for a given task than another I2C 10 +-------------------------------+ 12 | | +-----+ +-----+ 13 | +------------+ | | dev | | dev | 14 | |I2C IP Core1|--\ | +-----+ +-----+ 15 | +------------+ \-------+ | | | [all …]
|
D | i2c-mpc.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/i2c/i2c-mpc.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: I2C-Bus adapter for MPC824x/83xx/85xx/86xx/512x/52xx SoCs 10 - Chris Packham <chris.packham@alliedtelesis.co.nz> 13 - $ref: /schemas/i2c/i2c-controller.yaml# 18 - items: 19 - enum: 20 - mpc5200-i2c [all …]
|
/Linux-v5.15/drivers/i2c/muxes/ |
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> 28 ret = mux_control_select(mux->control, chan); in i2c_mux_select() 29 mux->do_not_deselect = ret < 0; in i2c_mux_select() 38 if (mux->do_not_deselect) in i2c_mux_deselect() 41 return mux_control_deselect(mux->control); in i2c_mux_deselect() 46 struct device_node *np = dev->of_node; in mux_parent_adapter() 48 struct i2c_adapter *parent; in mux_parent_adapter() local [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> 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() 58 struct i2c_adapter *parent; in i2c_mux_pinctrl_parent_adapter() local [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> 31 gpiod_set_array_value_cansleep(mux->ngpios, mux->gpios, NULL, values); in i2c_mux_gpio_set() 47 i2c_mux_gpio_set(mux, mux->data.idle); in i2c_mux_gpio_deselect() 68 return -EINVAL; in i2c_mux_gpio_get_acpi_adr() 74 return -ERANGE; in i2c_mux_gpio_get_acpi_adr() 86 return -EINVAL; in i2c_mux_gpio_get_acpi_adr() [all …]
|
D | i2c-arb-gpio-challenge.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * GPIO-based I2C Arbitration Using a Challenge & Response Mechanism 11 #include <linux/i2c.h> 12 #include <linux/i2c-mux.h> 19 * struct i2c_arbitrator_data - Driver data for I2C arbitrator 38 * i2c_arbitrator_select - claim the I2C bus 40 * Use the GPIO-based signalling protocol; return -EBUSY if we fail. 48 stop_time = jiffies + usecs_to_jiffies(arb->wait_free_us) + 1; in i2c_arbitrator_select() 51 gpiod_set_value(arb->our_gpio, 1); in i2c_arbitrator_select() 52 udelay(arb->slew_delay_us); in i2c_arbitrator_select() [all …]
|
D | i2c-demux-pinctrl.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Pinctrl based I2C DeMultiplexer 5 * Copyright (C) 2015-16 by Wolfram Sang, Sang Engineering <wsa@sang-engineering.com> 6 * Copyright (C) 2015-16 by Renesas Electronics Corporation 9 * (look for filenames containing 'i2c-demux-pinctrl' in Documentation/) 12 #include <linux/i2c.h> 40 struct i2c_demux_pinctrl_priv *priv = adap->algo_data; in i2c_demux_master_xfer() 41 struct i2c_adapter *parent = priv->chan[priv->cur_chan].parent_adap; in i2c_demux_master_xfer() local 43 return __i2c_transfer(parent, msgs, num); in i2c_demux_master_xfer() 48 struct i2c_demux_pinctrl_priv *priv = adap->algo_data; in i2c_demux_functionality() [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> 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() 37 iowrite32(chan_id, mux->data.reg); in i2c_mux_reg_set() [all …]
|
/Linux-v5.15/drivers/i2c/busses/ |
D | i2c-xiic.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * i2c-xiic.c 4 * Copyright (c) 2002-2007 Xilinx Inc. 5 * Copyright (c) 2009-2010 Intel Corporation 24 #include <linux/i2c.h> 27 #include <linux/platform_data/i2c-xiic.h> 34 #define DRIVER_NAME "xiic-i2c" 48 * struct xiic_i2c - Internal representation of the XIIC I2C bus 59 * @endianness: big/little-endian byte order 60 * @clk: Pointer to AXI4-lite input clock [all …]
|
D | i2c-img-scb.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * I2C adapter for the IMG Serial Control Bus (SCB) IP block. 7 * There are three ways that this I2C controller can be driven: 9 * - Raw control of the SDA and SCK signals. 15 * - Atomic commands. A low level I2C symbol (such as generate 20 * This mode of operation is used by MODE_ATOMIC, which uses an I2C 21 * state machine in the interrupt handler to compose/react to I2C 26 * in suboptimal use of the bus, with gaps between the I2C symbols while 29 * - Automatic mode. A bus address, and whether to read/write is 30 * specified, and the hardware takes care of the I2C state machine, [all …]
|
D | i2c-stm32f4.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Driver for STMicroelectronics STM32 I2C controller 5 * This I2C controller is described in the STM32F429/439 Soc reference manual. 13 * This driver is based on i2c-st.c 20 #include <linux/i2c.h> 31 #include "i2c-stm32.h" 33 /* STM32F4 I2C offset registers */ 43 /* STM32F4 I2C control 1*/ 50 /* STM32F4 I2C control 2 */ 60 /* STM32F4 I2C Status 1 */ [all …]
|
/Linux-v5.15/arch/arc/boot/dts/ |
D | abilis_tb10x.dtsi | 1 // SPDX-License-Identifier: GPL-2.0-only 12 compatible = "abilis,arc-tb10x"; 13 #address-cells = <1>; 14 #size-cells = <1>; 17 #address-cells = <1>; 18 #size-cells = <0>; 28 compatible = "snps,arc-timer"; 30 interrupt-parent = <&intc>; 36 compatible = "snps,arc-timer"; 41 #address-cells = <1>; [all …]
|
/Linux-v5.15/arch/mips/boot/dts/ingenic/ |
D | jz4780.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 2 #include <dt-bindings/clock/jz4780-cgu.h> 3 #include <dt-bindings/clock/ingenic,tcu.h> 4 #include <dt-bindings/dma/jz4780-dma.h> 7 #address-cells = <1>; 8 #size-cells = <1>; 12 #address-cells = <1>; 13 #size-cells = <0>; 17 compatible = "ingenic,xburst-fpu1.0-mxu1.1"; 21 clock-names = "cpu"; [all …]
|
D | x1830.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 2 #include <dt-bindings/clock/ingenic,tcu.h> 3 #include <dt-bindings/clock/x1830-cgu.h> 4 #include <dt-bindings/dma/x1830-dma.h> 7 #address-cells = <1>; 8 #size-cells = <1>; 12 #address-cells = <1>; 13 #size-cells = <0>; 17 compatible = "ingenic,xburst-fpu2.0-mxu2.0"; 21 clock-names = "cpu"; [all …]
|
/Linux-v5.15/arch/mips/boot/dts/brcm/ |
D | bcm7420.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 3 #address-cells = <1>; 4 #size-cells = <1>; 8 #address-cells = <1>; 9 #size-cells = <0>; 11 mips-hpt-frequency = <93750000>; 30 cpu_intc: interrupt-controller { 31 #address-cells = <0>; 32 compatible = "mti,cpu-interrupt-controller"; 34 interrupt-controller; [all …]
|
D | bcm7125.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 3 #address-cells = <1>; 4 #size-cells = <1>; 8 #address-cells = <1>; 9 #size-cells = <0>; 11 mips-hpt-frequency = <202500000>; 30 cpu_intc: interrupt-controller { 31 #address-cells = <0>; 32 compatible = "mti,cpu-interrupt-controller"; 34 interrupt-controller; [all …]
|
D | bcm7358.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 3 #address-cells = <1>; 4 #size-cells = <1>; 8 #address-cells = <1>; 9 #size-cells = <0>; 11 mips-hpt-frequency = <375000000>; 24 cpu_intc: interrupt-controller { 25 #address-cells = <0>; 26 compatible = "mti,cpu-interrupt-controller"; 28 interrupt-controller; [all …]
|
D | bcm7346.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 3 #address-cells = <1>; 4 #size-cells = <1>; 8 #address-cells = <1>; 9 #size-cells = <0>; 11 mips-hpt-frequency = <163125000>; 30 cpu_intc: interrupt-controller { 31 #address-cells = <0>; 32 compatible = "mti,cpu-interrupt-controller"; 34 interrupt-controller; [all …]
|
D | bcm7425.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 3 #address-cells = <1>; 4 #size-cells = <1>; 8 #address-cells = <1>; 9 #size-cells = <0>; 11 mips-hpt-frequency = <163125000>; 30 cpu_intc: interrupt-controller { 31 #address-cells = <0>; 32 compatible = "mti,cpu-interrupt-controller"; 34 interrupt-controller; [all …]
|
/Linux-v5.15/drivers/net/mdio/ |
D | mdio-i2c.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * MDIO I2C bridge 5 * Copyright (C) 2015-2016 Russell King 7 * Network PHYs can appear on I2C buses when they are part of SFP module. 12 #include <linux/i2c.h> 13 #include <linux/mdio/mdio-i2c.h> 17 * I2C bus addresses 0x50 and 0x51 are normally an EEPROM, which is 33 struct i2c_adapter *i2c = bus->priv; in i2c_mii_read() local 51 msgs[0].len = p - addr; in i2c_mii_read() 58 ret = i2c_transfer(i2c, msgs, ARRAY_SIZE(msgs)); in i2c_mii_read() [all …]
|