Home
last modified time | relevance | path

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

12345678910>>...42

/linux/Documentation/i2c/
H A Di2c-sysfs.rst1 .. 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 …]
H A Dinstantiating-devices.rst2 How to instantiate I2C devices
5 Unlike PCI or USB devices, I2C devices are not enumerated at the hardware
7 I2C bus segment, and what address these devices are using. For this
8 reason, the kernel code must instantiate I2C devices explicitly. There are
12 Method 1: Declare the I2C devices statically
13 --------------------------------------------
15 This method is appropriate when the I2C bus is a system bus as is the case
16 for many embedded systems. On such systems, each I2C bus has a number which
17 is known in advance. It is thus possible to pre-declare the I2C devices
18 which live on this bus.
[all …]
H A Dslave-interface.rst2 Linux I2C slave interface description
5 by Wolfram Sang <wsa@sang-engineering.com> in 2014-15
7 Linux can also be an I2C slave if the I2C controller in use has slave
8 functionality. For that to work, one needs slave support in the bus driver plus
10 example for the latter is the slave-eeprom driver, which acts as a dual memory
11 driver. While another I2C master on the bus can access it like a regular
12 EEPROM, the Linux I2C slave can access the content via sysfs and handle data as
13 needed. The backend driver and the I2C bus driver communicate via events. Here
16 use a character device, be in-kernel only, or something completely different::
19 e.g. sysfs I2C slave events I/O registers
[all …]
H A Dsummary.rst2 Introduction to I2C and SMBus
5 I²C (pronounce: I squared C and written I2C in the kernel documentation) is
6 a protocol developed by Philips. It is a two-wire protocol with variable
8 an inexpensive bus for connecting many types of devices with infrequent or
9 low bandwidth communications needs. I2C is widely used with embedded
11 and so are not advertised as being I2C but come under different names,
14 The latest official I2C specification is the `"I²C-bus specification and user
15 manual" (UM10204) <https://www.nxp.com/docs/en/user-guide/UM10204.pdf>`_
18 SMBus (System Management Bus) is based on the I2C protocol, and is mostly
19 a subset of I2C protocols and signaling. Many I2C devices will work on an
[all …]
H A Dgpio-fault-injection.rst2 Linux I2C fault injection
5 The GPIO based I2C bus master driver can be configured to provide fault
6 injection capabilities. It is then meant to be connected to another I2C bus
7 which is driven by the I2C bus master driver under test. The GPIO fault
8 injection driver can create special states on the bus which the other I2C bus
12 'i2c-fault-injector' subdirectory in the Kernel debugfs filesystem, usually
14 driven I2C bus. Each subdirectory will contain files to trigger the fault
15 injection. They will be described now along with their intended use-cases.
21 -----
26 because the bus master under test will not be able to clock. It should detect
[all …]
/linux/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/
H A Dbase.c26 #include "bus.h"
32 #include <subdev/bios/i2c.h>
35 nvkm_i2c_pad_find(struct nvkm_i2c *i2c, int id) in nvkm_i2c_pad_find() argument
39 list_for_each_entry(pad, &i2c->pad, head) { in nvkm_i2c_pad_find()
40 if (pad->id == id) in nvkm_i2c_pad_find()
48 nvkm_i2c_bus_find(struct nvkm_i2c *i2c, int id) in nvkm_i2c_bus_find() argument
50 struct nvkm_bios *bios = i2c->subdev.device->bios; in nvkm_i2c_bus_find()
51 struct nvkm_i2c_bus *bus; in nvkm_i2c_bus_find() local
55 u16 i2c = dcb_i2c_table(bios, &ver, &hdr, &cnt, &len); in nvkm_i2c_bus_find() local
56 if (i2c && ver >= 0x30) { in nvkm_i2c_bus_find()
[all …]
H A Dbus.c24 #include "bus.h"
30 * i2c-algo-bit
35 struct nvkm_i2c_bus *bus = container_of(adap, typeof(*bus), i2c); in nvkm_i2c_bus_pre_xfer() local
36 return nvkm_i2c_bus_acquire(bus); in nvkm_i2c_bus_pre_xfer()
42 struct nvkm_i2c_bus *bus = container_of(adap, typeof(*bus), i2c); in nvkm_i2c_bus_post_xfer() local
43 return nvkm_i2c_bus_release(bus); in nvkm_i2c_bus_post_xfer()
49 struct nvkm_i2c_bus *bus = data; in nvkm_i2c_bus_setscl() local
50 bus->func->drive_scl(bus, state); in nvkm_i2c_bus_setscl()
56 struct nvkm_i2c_bus *bus = data; in nvkm_i2c_bus_setsda() local
57 bus->func->drive_sda(bus, state); in nvkm_i2c_bus_setsda()
[all …]
/linux/arch/arm/boot/dts/aspeed/
H A Dibm-power9-dual.dtsi1 // SPDX-License-Identifier: GPL-2.0+
7 #address-cells = <1>;
8 #size-cells = <1>;
9 chip-id = <0>;
16 i2c@1800 {
17 compatible = "ibm,fsi-i2c-master";
19 #address-cells = <1>;
20 #size-cells = <0>;
22 cfam0_i2c0: i2c-bus@0 {
26 cfam0_i2c1: i2c-bus@1 {
[all …]
/linux/drivers/i2c/
H A DKconfig1 # SPDX-License-Identifier: GPL-2.0-only
3 # I2C subsystem configuration
6 menu "I2C support"
8 config I2C config
9 tristate "I2C support"
13 I2C (pronounce: I-squared-C) is a slow serial bus protocol used in
15 or System Management Bus is a subset of the I2C protocol. More
16 information is contained in the directory <file:Documentation/i2c/>,
19 Both I2C and SMBus are supported here. You will need this for
22 If you want I2C support, you should say Y here and also to the
[all …]
/linux/Documentation/devicetree/bindings/i2c/
H A Di2c-demux-pinctrl.yaml1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 ---
4 $id: http://devicetree.org/schemas/i2c/i2c-demux-pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Pinctrl-based I2C Bus Demultiplexer
10 - Wolfram Sang <wsa+renesas@sang-engineering.com>
13 This binding describes an I2C bus demultiplexer that uses pin multiplexing to
14 route the I2C signals, and represents the pin multiplexing configuration
15 using the pinctrl device tree bindings. This may be used to select one I2C
17 another I2C IP core on the SoC. The most simple example is to fall back to
[all …]
H A Di2c-arb-gpio-challenge.yaml1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
3 ---
4 $id: http://devicetree.org/schemas/i2c/i2c-arb-gpio-challenge.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: GPIO-based I2C Arbitration Using a Challenge & Response Mechanism
10 - Doug Anderson <dianders@chromium.org>
11 - Peter Rosin <peda@axentia.se>
15 the master of an I2C bus in a multimaster situation.
18 standard I2C multi-master rules. Using GPIOs is generally useful in the case
19 where there is a device on the bus that has errata and/or bugs that makes
[all …]
H A Di2c-mux-pinctrl.yaml1 # SPDX-License-Identifier: GPL-2.0-only
3 ---
4 $id: http://devicetree.org/schemas/i2c/i2c-mux-pinctrl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Pinctrl-based I2C Bus Mux
10 - Wolfram Sang <wsa@kernel.org>
13 This binding describes an I2C bus multiplexer that uses pin multiplexing to route the I2C
17 +-----+ +-----+
19 +------------------------+ +-----+ +-----+
21 | /----|------+--------+
[all …]
H A Daspeed,i2c.yaml1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 ---
4 $id: http://devicetree.org/schemas/i2c/aspeed,i2c.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: ASPEED I2C on the AST24XX, AST25XX, and AST26XX SoCs
10 - Rayn Chen <rayn_chen@aspeedtech.com>
13 - $ref: /schemas/i2c/i2c-controller.yaml#
18 - aspeed,ast2400-i2c-bus
19 - aspeed,ast2500-i2c-bus
20 - aspeed,ast2600-i2c-bus
[all …]
/linux/drivers/base/regmap/
H A Dregmap-i2c.c1 // SPDX-License-Identifier: GPL-2.0
3 // Register map access API - I2C support
10 #include <linux/i2c.h>
19 struct i2c_client *i2c = to_i2c_client(dev); in regmap_smbus_byte_reg_read() local
23 return -EINVAL; in regmap_smbus_byte_reg_read()
25 ret = i2c_smbus_read_byte_data(i2c, reg); in regmap_smbus_byte_reg_read()
38 struct i2c_client *i2c = to_i2c_client(dev); in regmap_smbus_byte_reg_write() local
41 return -EINVAL; in regmap_smbus_byte_reg_write()
43 return i2c_smbus_write_byte_data(i2c, reg, val); in regmap_smbus_byte_reg_write()
55 struct i2c_client *i2c = to_i2c_client(dev); in regmap_smbus_word_reg_read() local
[all …]
/linux/drivers/i2c/busses/
H A DKconfig1 # SPDX-License-Identifier: GPL-2.0-only
6 menu "I2C Hardware Bus support"
16 for Cypress CCGx Type-C controller. Individual bus drivers
25 controller is part of the 7101 device, which is an ACPI-compliant
29 will be called i2c-ali1535.
37 controller is part of the 7101 device, which is an ACPI-compliant
41 will be called i2c-ali1563.
48 Acer Labs Inc. (ALI) M1514 and M1543 motherboard I2C interfaces.
51 will be called i2c-ali15x3.
58 756/766/768 mainboard I2C interfaces. The driver also includes
[all …]
H A Di2c-s3c2410.c1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* linux/drivers/i2c/busses/i2c-s3c2410.c
7 * S3C2410 I2C Controller
13 #include <linux/i2c.h>
34 #include <linux/platform_data/i2c-s3c2410.h>
81 /* Max time to wait for bus to become idle after a xfer (in us) */
87 /* i2c controller state */
125 .name = "s3c2410-i2c",
128 .name = "s3c2440-i2c",
131 .name = "s3c2440-hdmiphy-i2c",
[all …]
H A Di2c-cros-ec-tunnel.c1 // SPDX-License-Identifier: GPL-2.0+
2 // Expose an I2C passthrough to the ChromeOS EC.
8 #include <linux/i2c.h>
17 * struct ec_i2c_device - Driver data for I2C tunnel
20 * @adap: I2C adapter
22 * @remote_bus: The EC bus number we tunnel to on the other side.
39 * ec_i2c_count_message - Count bytes needed for ec_i2c_construct_message
41 * @i2c_msgs: The i2c messages to read
42 * @num: The number of i2c messages.
61 * ec_i2c_construct_message - construct a message to go to the EC
[all …]
H A Di2c-powermac.c1 // SPDX-License-Identifier: GPL-2.0-or-later
3 i2c Support for Apple SMU Controller
14 #include <linux/i2c.h>
22 MODULE_DESCRIPTION("I2C driver for Apple PowerMac");
26 * SMBUS-type transfer entrypoint
36 struct pmac_i2c_bus *bus = i2c_get_adapdata(adap); in i2c_powermac_smbus_xfer() local
62 buf = &data->byte; in i2c_powermac_smbus_xfer()
67 local[0] = data->word & 0xff; in i2c_powermac_smbus_xfer()
68 local[1] = (data->word >> 8) & 0xff; in i2c_powermac_smbus_xfer()
78 * anywhere near a pmac i2c bus anyway ... in i2c_powermac_smbus_xfer()
[all …]
/linux/include/linux/i3c/
H A Dmaster.h1 /* SPDX-License-Identifier: GPL-2.0 */
14 #include <linux/i2c.h>
39 * struct i3c_i2c_dev_desc - Common part of the I3C/I2C device descriptor
40 * @node: node element used to insert the slot into the I2C or I3C device
43 * I2C/I3C transfers
47 * This structure is describing common I3C/I2C dev information.
62 * struct i2c_dev_boardinfo - I2C device board information
63 * @node: used to insert the boardinfo object in the I2C boardinfo list
64 * @base: regular I2C board information
66 * the I2C device limitations
[all …]
/linux/Documentation/devicetree/bindings/rtc/
H A Dtrivial-rtc.yaml1 # SPDX-License-Identifier: GPL-2.0
3 ---
4 $id: http://devicetree.org/schemas/rtc/trivial-rtc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
10 - Alexandre Belloni <alexandre.belloni@bootlin.com>
18 - $ref: rtc.yaml#
23 # AB-RTCMC-32.768kHz-B5ZE-S3: Real Time Clock/Calendar Module with I2C Interface
24 - abracon,abb5zes3
25 # AB-RTCMC-32.768kHz-EOZ9: Real Time Clock/Calendar Module with I2C Interface
26 - abracon,abeoz9
[all …]
/linux/Documentation/driver-api/
H A Di2c.rst4 I\ :sup:`2`\ C (or without fancy typography, "I2C") is an acronym for
5 the "Inter-IC" bus, a simple bus protocol which is widely used where low
7 some vendors use another name (such as "Two-Wire Interface", TWI) for
8 the same bus. I2C only needs two signals (SCL for clock, SDA for data),
10 I2C devices use seven bit addresses, and bus speeds of up to 400 kHz;
12 I2C is a multi-master bus; open drain signaling is used to arbitrate
16 The Linux I2C programming interfaces support the master side of bus
18 structured around two kinds of driver, and two kinds of device. An I2C
22 I2C bus segment it manages. On each I2C bus segment will be I2C devices
26 are functions to perform various I2C protocol operations; at this writing
[all …]
/linux/drivers/net/mdio/
H A Dmdio-i2c.c1 // SPDX-License-Identifier: GPL-2.0
3 * MDIO I2C bridge
5 * Copyright (C) 2015-2016 Russell King
8 * Network PHYs can appear on I2C buses when they are part of SFP module.
13 #include <linux/i2c.h>
14 #include <linux/mdio/mdio-i2c.h>
19 * I2C bus addresses 0x50 and 0x51 are normally an EEPROM, which is
33 static int i2c_mii_read_default_c45(struct mii_bus *bus, int phy_id, int devad, in i2c_mii_read_default_c45() argument
36 struct i2c_adapter *i2c = bus->priv; in i2c_mii_read_default_c45() local
54 msgs[0].len = p - addr; in i2c_mii_read_default_c45()
[all …]
/linux/Documentation/driver-api/i3c/
H A Dprotocol.rst1 .. SPDX-License-Identifier: GPL-2.0
11 everything hardware related (like how things are transmitted on the bus, how
17 https://resources.mipi.org/mipi-i3c-v1-download).
22 The I3C (pronounced 'eye-three-see') is a MIPI standardized protocol designed
23 to overcome I2C limitations (limited speed, external signals needed for
24 interrupts, no automatic detection of the devices connected to the bus, ...)
25 while remaining power-efficient.
27 I3C Bus
30 An I3C bus is made of several I3C devices and possibly some I2C devices as
33 An I3C device on the I3C bus can have one of the following roles:
[all …]
/linux/arch/powerpc/include/asm/
H A Dpmac_low_i2c.h1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * include/asm-ppc/pmac_low_i2c.h
11 /* i2c mode (based on the platform functions format) */
25 /* i2c bus type */
32 /* i2c bus features */
37 /* multibus : device node holds multiple busses, bus number is
43 /* i2c busses in the system */
50 /* Lookup an i2c bus for a device-node. The node can be either the bus
51 * node itself or a device below it. In the case of a multibus, the bus
57 /* Get the address for an i2c device. This strips the bus number if
[all …]
/linux/Documentation/w1/slaves/
H A Dw1_ds28e17.rst7 * Maxim DS28E17 1-Wire-to-I2C Master Bridge
19 -----------
20 The DS28E17 is a Onewire slave device which acts as an I2C bus master.
22 This driver creates a new I2C bus for any DS28E17 device detected. I2C buses
23 come and go as the DS28E17 devices come and go. I2C slave devices connected to
25 connected to a "native" I2C bus master.
30 SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{name}=="w1-19-*", \
31 SYMLINK+="i2c-$attr{name}"
33 may be used to create stable /dev/i2c- entries based on the unique id of the
40 This sets up the default I2C speed a DS28E17 get configured for as soon
[all …]

12345678910>>...42