/linux-6.12.1/Documentation/i2c/ |
D | i2c-sysfs.rst | 1 .. 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 …]
|
D | slave-eeprom-backend.rst | 2 Linux I2C slave EEPROM backend 5 by Wolfram Sang <wsa@sang-engineering.com> in 2014-20 7 This backend simulates an EEPROM on the connected I2C bus. Its memory contents 10 /sys/bus/i2c/devices/<device-directory>/slave-eeprom 12 The following types are available: 24c02, 24c32, 24c64, and 24c512. Read-only 13 variants are also supported. The name needed for instantiating has the form 14 'slave-<type>[ro]'. Examples follow: 17 # echo slave-24c02 0x1064 > /sys/bus/i2c/devices/i2c-1/new_device 19 24c512, read-only, address 0x42: 20 # echo slave-24c512ro 0x1042 > /sys/bus/i2c/devices/i2c-1/new_device [all …]
|
/linux-6.12.1/Documentation/devicetree/bindings/i2c/ |
D | i2c-demux-pinctrl.yaml | 1 # 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 …]
|
D | i2c-opal.txt | 1 Device-tree bindings for I2C OPAL driver 2 ---------------------------------------- 6 perspective, the properties of use are "ibm,port-name" and "ibm,opal-id". 10 - reg: Port-id within a given master 11 - compatible: must be "ibm,opal-i2c" 12 - ibm,opal-id: Refers to a specific bus and used to identify it when calling 14 - bus-frequency: Operating frequency of the i2c bus (in HZ). Informational for 18 - ibm,port-name: Firmware provides this name that uniquely identifies the i2c 23 a P8 on-chip bus. 27 i2c-bus@0 { [all …]
|
/linux-6.12.1/drivers/i2c/busses/ |
D | i2c-powermac.c | 1 // 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 …]
|
D | i2c-cros-ec-tunnel.c | 1 // 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 …]
|
D | i2c-s3c2410.c | 1 // 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 …]
|
/linux-6.12.1/Documentation/driver-api/ |
D | ipmb.rst | 5 The Intelligent Platform Management Bus or IPMB, is an 6 I2C bus that provides a standardized interconnection between 10 IPMB bus. 15 hot-swapping disk drivers in the system chassis, etc... 27 ---------------------------- 29 ipmb-dev-int - This is the driver needed on a Satellite MC to 31 This driver works with the I2C driver and a userspace 34 1) It is an I2C slave backend driver. So, it defines a callback 35 function to set the Satellite MC as an I2C slave. 43 -------------------- [all …]
|
D | i2c.rst | 4 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-6.12.1/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 | |------------| | 18 | | | | Bus segment 2 | | 19 | Linux | GPIO 1..N | MUX |--------------- Devices 20 | |------------| | | | [all …]
|
/linux-6.12.1/arch/arm64/boot/dts/nvidia/ |
D | tegra194-p3668.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 4 #include <dt-bindings/mfd/max77620.h> 8 ethernet0 = "/bus@0/ethernet@2490000"; 9 i2c0 = "/bpmp/i2c"; 10 i2c1 = "/bus@0/i2c@3160000"; 11 i2c2 = "/bus@0/i2c@c240000"; 12 i2c3 = "/bus@0/i2c@3180000"; 13 i2c4 = "/bus@0/i2c@3190000"; 14 i2c5 = "/bus@0/i2c@31c0000"; 15 i2c6 = "/bus@0/i2c@c250000"; [all …]
|
D | tegra194-p2888.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 4 #include <dt-bindings/mfd/max77620.h> 11 ethernet0 = "/bus@0/ethernet@2490000"; 12 i2c0 = "/bpmp/i2c"; 13 i2c1 = "/bus@0/i2c@3160000"; 14 i2c2 = "/bus@0/i2c@c240000"; 15 i2c3 = "/bus@0/i2c@3180000"; 16 i2c4 = "/bus@0/i2c@3190000"; 17 i2c5 = "/bus@0/i2c@31c0000"; 18 i2c6 = "/bus@0/i2c@c250000"; [all …]
|
/linux-6.12.1/Documentation/w1/slaves/ |
D | w1_ds28e17.rst | 7 * 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 …]
|
/linux-6.12.1/drivers/media/pci/cx23885/ |
D | cx23885-i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 15 #include <media/v4l2-common.h> 19 MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]"); 23 MODULE_PARM_DESC(i2c_scan, "scan i2c bus at insmod time"); 27 printk(KERN_DEBUG pr_fmt("%s: i2c:" fmt), \ 39 struct cx23885_i2c *bus = i2c_adap->algo_data; in i2c_slave_did_ack() local 40 struct cx23885_dev *dev = bus->dev; in i2c_slave_did_ack() 41 return cx_read(bus->reg_stat) & 0x01; in i2c_slave_did_ack() 46 struct cx23885_i2c *bus = i2c_adap->algo_data; in i2c_is_busy() local 47 struct cx23885_dev *dev = bus->dev; in i2c_is_busy() [all …]
|
/linux-6.12.1/arch/arm/mach-omap1/ |
D | i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Helper module for board specific I2C bus registration 8 #include <linux/i2c.h> 9 #include <linux/platform_data/i2c-omap.h> 13 #include "i2c.h" 18 static const char name[] = "omap_i2c"; variable 39 return -EINVAL; in omap_i2c_add_bus() 43 pdev = &omap_i2c_devices[bus_id - 1]; in omap_i2c_add_bus() 44 pdev->id = bus_id; in omap_i2c_add_bus() 45 pdev->name = name; in omap_i2c_add_bus() [all …]
|
/linux-6.12.1/arch/arm/boot/dts/samsung/ |
D | exynos5250-snow-common.dtsi | 1 // SPDX-License-Identifier: GPL-2.0 8 #include <dt-bindings/gpio/gpio.h> 9 #include <dt-bindings/clock/maxim,max77686.h> 10 #include <dt-bindings/interrupt-controller/irq.h> 11 #include <dt-bindings/input/input.h> 12 #include <dt-bindings/sound/samsung-i2s.h> 30 stdout-path = "serial3:115200n8"; 33 gpio-keys { 34 compatible = "gpio-keys"; 35 pinctrl-names = "default"; [all …]
|
D | exynos5250-spring.dts | 1 // SPDX-License-Identifier: GPL-2.0 9 /dts-v1/; 10 #include <dt-bindings/clock/samsung,s2mps11.h> 11 #include <dt-bindings/gpio/gpio.h> 12 #include <dt-bindings/interrupt-controller/irq.h> 13 #include <dt-bindings/input/input.h> 19 chassis-type = "laptop"; 33 stdout-path = "serial3:115200n8"; 36 gpio-keys { 37 compatible = "gpio-keys"; [all …]
|
/linux-6.12.1/drivers/i2c/ |
D | i2c-core-of.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * Linux I2C core OF support code 11 #include <dt-bindings/i2c/i2c.h> 14 #include <linux/i2c.h> 20 #include "i2c-core.h" 30 if (of_alias_from_compatible(node, info->type, sizeof(info->type)) < 0) { in of_i2c_get_board_info() 32 return -EINVAL; in of_i2c_get_board_info() 43 info->flags |= I2C_CLIENT_TEN; in of_i2c_get_board_info() 48 info->flags |= I2C_CLIENT_SLAVE; in of_i2c_get_board_info() 51 info->addr = addr; in of_i2c_get_board_info() [all …]
|
/linux-6.12.1/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/ |
D | bus.c | 24 #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-6.12.1/drivers/video/fbdev/via/ |
D | via_aux.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 6 * infrastructure for devices connected via I2C 14 #include <linux/i2c.h> 19 struct i2c_adapter *adap; /* the I2C device to access the bus */ 20 struct list_head drivers; /* drivers for devices on this bus */ 26 struct via_aux_bus *bus; /* the I2C bus used */ member 27 u8 addr; /* the I2C target address */ 29 const char *name; /* human readable name of the driver */ member 39 void via_aux_free(struct via_aux_bus *bus); 40 const struct fb_videomode *via_aux_get_preferred_mode(struct via_aux_bus *bus); [all …]
|
/linux-6.12.1/drivers/iio/imu/inv_mpu6050/ |
D | inv_mpu_i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-only 8 #include <linux/i2c.h> 30 switch (st->chip_type) { in inv_mpu_i2c_aux_bus() 38 /* no i2c auxiliary bus on the chip */ in inv_mpu_i2c_aux_bus() 43 if (st->magn_disabled) in inv_mpu_i2c_aux_bus() 55 struct device *dev = indio_dev->dev.parent; in inv_mpu_i2c_aux_setup() 60 * MPU9xxx magnetometer support requires to disable i2c auxiliary bus. in inv_mpu_i2c_aux_setup() 62 * i2c auxiliary bus if it used. in inv_mpu_i2c_aux_setup() 63 * Check for i2c-gate node in devicetree and set magnetometer disabled. in inv_mpu_i2c_aux_setup() 66 switch (st->chip_type) { in inv_mpu_i2c_aux_setup() [all …]
|
/linux-6.12.1/include/linux/ |
D | i2c.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 3 * i2c.h - definitions for the Linux i2c bus interface 4 * Copyright (C) 1995-2000 Simon G. Vogl 5 * Copyright (C) 2013-2019 Wolfram Sang <wsa@kernel.org> 24 #include <uapi/linux/i2c.h> 30 /* --- General options ------------------------------------------------ */ 43 /* I2C Frequency Modes */ 55 /* Return the Frequency mode string based on the bus frequency */ 60 * on a bus (or read from them). Apart from two basic transfer functions to 69 * i2c_master_recv - issue a single I2C message in master receive mode [all …]
|
/linux-6.12.1/drivers/gpu/drm/nouveau/nvkm/engine/device/ |
D | base.c | 40 if (device->handle == handle) in nvkm_device_find_locked() 58 .name = "NV04", 60 .bus = { 0x00000001, nv04_bus_new }, 64 .i2c = { 0x00000001, nv04_i2c_new }, 79 .name = "NV05", 81 .bus = { 0x00000001, nv04_bus_new }, 85 .i2c = { 0x00000001, nv04_i2c_new }, 100 .name = "NV10", 102 .bus = { 0x00000001, nv04_bus_new }, 107 .i2c = { 0x00000001, nv04_i2c_new }, [all …]
|
/linux-6.12.1/include/sound/ |
D | i2c.h | 1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 8 #define SND_I2C_DEVICE_ADDRTEN (1<<0) /* 10-bit I2C address */ 12 struct snd_i2c_bus *bus; /* I2C bus */ member 13 char name[32]; /* some useful device name */ member 15 unsigned short addr; /* device address (might be 10-bit) */ 24 void (*start)(struct snd_i2c_bus *bus); /* transfer start */ 25 void (*stop)(struct snd_i2c_bus *bus); /* transfer stop */ 26 …void (*direction)(struct snd_i2c_bus *bus, int clock, int data); /* set line direction (0 = write… 27 void (*setlines)(struct snd_i2c_bus *bus, int clock, int data); 28 int (*getclock)(struct snd_i2c_bus *bus); [all …]
|
/linux-6.12.1/arch/arm/boot/dts/renesas/ |
D | r8a7790-lager.dts | 1 // SPDX-License-Identifier: GPL-2.0 5 * Copyright (C) 2013-2014 Renesas Solutions Corp. 7 * Copyright (C) 2015-2016 Renesas Electronics Corporation 11 * SSI-AK4643 38 /dts-v1/; 40 #include <dt-bindings/gpio/gpio.h> 41 #include <dt-bindings/input/input.h> 63 stdout-path = "serial0:115200n8"; 77 compatible = "gpio-keys"; 79 pinctrl-0 = <&keyboard_pins>; [all …]
|