/Linux-v6.1/include/linux/i3c/ |
D | master.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 15 #include <linux/i3c/ccc.h> 16 #include <linux/i3c/device.h> 31 * struct i3c_i2c_dev_desc - Common part of the I3C/I2C device descriptor 32 * @node: node element used to insert the slot into the I2C or I3C device 34 * @master: I3C master that instantiated this device. Will be used to do 35 * I2C/I3C transfers 36 * @master_priv: master private data assigned to the device. Can be used to 37 * add master specific information 39 * This structure is describing common I3C/I2C dev information. [all …]
|
D | ccc.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 12 #include <linux/i3c/device.h> 14 /* I3C CCC (Common Command Codes) related definitions */ 30 /* Broadcast-only commands */ 36 /* Unicast-only commands */ 56 * struct i3c_ccc_events - payload passed to ENEC/DISEC CCC 69 * struct i3c_ccc_mwl - payload passed to SETMWL/GETMWL CCC 81 * struct i3c_ccc_mrl - payload passed to SETMRL/GETMRL CCC 88 * The IBI length is only valid if the I3C slave is IBI capable 97 * struct i3c_ccc_dev_desc - I3C/I2C device descriptor used for DEFSLVS [all …]
|
D | device.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 19 * enum i3c_error_code - I3C error codes 21 * These are the standard error codes as defined by the I3C specification. 22 * When -EIO is returned by the i3c_device_do_priv_xfers() or 27 * @I3C_ERROR_UNKNOWN: unknown error, usually means the error is not I3C 41 * enum i3c_hdr_mode - HDR mode ids 53 * struct i3c_priv_xfer - I3C SDR private transfer 57 * @data.in: input buffer. Must point to a DMA-able buffer 58 * @data.out: output buffer. Must point to a DMA-able buffer 59 * @err: I3C error code [all …]
|
/Linux-v6.1/Documentation/ABI/testing/ |
D | sysfs-bus-i3c | 1 What: /sys/bus/i3c/devices/i3c-<bus-id> 3 Contact: linux-i3c@vger.kernel.org 5 An I3C bus. This directory will contain one sub-directory per 6 I3C device present on the bus. 8 What: /sys/bus/i3c/devices/i3c-<bus-id>/current_master 10 Contact: linux-i3c@vger.kernel.org 12 Expose the master that owns the bus (<bus-id>-<master-pid>) at 17 What: /sys/bus/i3c/devices/i3c-<bus-id>/mode 19 Contact: linux-i3c@vger.kernel.org 21 I3C bus mode. Can be "pure", "mixed-fast" or "mixed-slow". See [all …]
|
/Linux-v6.1/drivers/i3c/master/ |
D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 3 tristate "Cadence I3C master driver" 4 depends on I3C 8 Enable this driver if you want to support Cadence I3C master block. 11 tristate "Synospsys DesignWare I3C master driver" 12 depends on I3C 17 Support for Synopsys DesignWare MIPI I3C Controller. 23 will be called dw-i3c-master. 26 tristate "Silvaco I3C Dual-Role Master driver" 27 depends on I3C [all …]
|
D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0-only 2 obj-$(CONFIG_CDNS_I3C_MASTER) += i3c-master-cdns.o 3 obj-$(CONFIG_DW_I3C_MASTER) += dw-i3c-master.o 4 obj-$(CONFIG_SVC_I3C_MASTER) += svc-i3c-master.o 5 obj-$(CONFIG_MIPI_I3C_HCI) += mipi-i3c-hci/
|
D | i3c-master-cdns.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include <linux/i3c/master.h> 422 to_cdns_i3c_master(struct i3c_master_controller *master) in to_cdns_i3c_master() argument 424 return container_of(master, struct cdns_i3c_master, base); in to_cdns_i3c_master() 427 static void cdns_i3c_master_wr_to_tx_fifo(struct cdns_i3c_master *master, in cdns_i3c_master_wr_to_tx_fifo() argument 430 writesl(master->regs + TX_FIFO, bytes, nbytes / 4); in cdns_i3c_master_wr_to_tx_fifo() 435 writesl(master->regs + TX_FIFO, &tmp, 1); in cdns_i3c_master_wr_to_tx_fifo() 439 static void cdns_i3c_master_rd_from_rx_fifo(struct cdns_i3c_master *master, in cdns_i3c_master_rd_from_rx_fifo() argument 442 readsl(master->regs + RX_FIFO, bytes, nbytes / 4); in cdns_i3c_master_rd_from_rx_fifo() 446 readsl(master->regs + RX_FIFO, &tmp, 1); in cdns_i3c_master_rd_from_rx_fifo() [all …]
|
D | svc-i3c-master.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Silvaco dual-role I3C master driver 14 #include <linux/i3c/master.h> 24 /* Master Mode Registers */ 149 * struct svc_i3c_master - Silvaco I3C Master structure 150 * @base: I3C master controller 156 * @hj_work: Hot-join work 201 * struct svc_i3c_i2c_dev_data - Device specific data 202 * @index: Index in the master tables corresponding to this device 203 * @ibi: IBI slot index in the master structure [all …]
|
/Linux-v6.1/Documentation/driver-api/i3c/ |
D | protocol.rst | 1 .. SPDX-License-Identifier: GPL-2.0 4 I3C protocol 12 collisions are prevented, ...) please have a look at the I3C specification. 14 This document is just a brief introduction to the I3C protocol and the concepts 16 I3C specification (can be downloaded here 17 https://resources.mipi.org/mipi-i3c-v1-download). 22 The I3C (pronounced 'eye-three-see') is a MIPI standardized protocol designed 25 while remaining power-efficient. 27 I3C Bus 30 An I3C bus is made of several I3C devices and possibly some I2C devices as [all …]
|
D | master-driver-api.rst | 1 .. SPDX-License-Identifier: GPL-2.0 4 I3C master controller driver API 7 .. kernel-doc:: drivers/i3c/master.c 9 .. kernel-doc:: include/linux/i3c/master.h
|
/Linux-v6.1/drivers/i3c/ |
D | master.c | 1 // SPDX-License-Identifier: GPL-2.0 26 * i3c_bus_maintenance_lock - Lock the bus for a maintenance operation 27 * @bus: I3C bus to take the lock on 31 * - enabling/disabling slave events 32 * - re-triggering DAA 33 * - changing the dynamic address of a device 34 * - relinquishing mastership 35 * - ... 38 * logic to rely on I3C device information that could be changed behind their 43 down_write(&bus->lock); in i3c_bus_maintenance_lock() [all …]
|
D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0 3 menuconfig I3C config 4 tristate "I3C support" 7 I3C is a serial protocol standardized by the MIPI alliance. 13 The I3C protocol also standardizes the slave device types and is 16 If you want I3C support, you should say Y here and also to the 19 This I3C support can also be built as a module. If so, the module 20 will be called i3c. 22 if I3C 23 source "drivers/i3c/master/Kconfig" [all …]
|
D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0 2 i3c-y := device.o master.o 3 obj-$(CONFIG_I3C) += i3c.o 4 obj-$(CONFIG_I3C) += master/
|
/Linux-v6.1/Documentation/devicetree/bindings/i3c/ |
D | snps,dw-i3c-master.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/i3c/snps,dw-i3c-master.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Synopsys DesignWare I3C master block 10 - Alexandre Belloni <alexandre.belloni@bootlin.com> 13 - $ref: i3c.yaml# 17 const: snps,dw-i3c-master-1.00a 29 - compatible 30 - reg [all …]
|
D | cdns,i3c-master.yaml | 1 # SPDX-License-Identifier: GPL-2.0 3 --- 4 $id: http://devicetree.org/schemas/i3c/cdns,i3c-master.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Cadence I3C master block 10 - Boris Brezillon <bbrezillon@kernel.org> 13 - $ref: i3c.yaml# 17 const: cdns,i3c-master 25 clock-names: 27 - const: pclk [all …]
|
D | silvaco,i3c-master.yaml | 1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/i3c/silvaco,i3c-master.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: Silvaco I3C master 10 - Conor Culhane <conor.culhane@silvaco.com> 13 - $ref: "i3c.yaml#" 17 const: silvaco,i3c-master-v1 27 - description: system clock 28 - description: bus clock [all …]
|
D | i3c.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/i3c/i3c.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: I3C bus binding 10 - Alexandre Belloni <alexandre.belloni@bootlin.com> 11 - Miquel Raynal <miquel.raynal@bootlin.com> 14 I3C busses can be described with a node for the primary I3C controller device 15 and a set of child nodes for each I2C or I3C slave on the bus. Each of them 20 pattern: "^i3c-master@[0-9a-f]+$" [all …]
|
D | mipi-i3c-hci.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 3 --- 4 $id: "http://devicetree.org/schemas/i3c/mipi-i3c-hci.yaml#" 5 $schema: "http://devicetree.org/meta-schemas/core.yaml#" 7 title: MIPI I3C HCI 10 - Nicolas Pitre <npitre@baylibre.com> 13 - $ref: /schemas/i3c/i3c.yaml# 16 MIPI I3C Host Controller Interface 18 The MIPI I3C HCI (Host Controller Interface) specification defines 19 a common software driver interface to support compliant MIPI I3C [all …]
|
/Linux-v6.1/drivers/i3c/master/mipi-i3c-hci/ |
D | xfer_mode_rate.h | 1 /* SPDX-License-Identifier: BSD-3-Clause */ 9 * This applies starting from I3C HCI v2.0. 16 * Master Transfer Mode Table Fixed Indexes. 22 #define XFERMODE_IDX_I3C_SDR 0x00 /* I3C SDR Mode */ 23 #define XFERMODE_IDX_I3C_HDR_DDR 0x01 /* I3C HDR-DDR Mode */ 24 #define XFERMODE_IDX_I3C_HDR_T 0x02 /* I3C HDR-Ternary Mode */ 25 #define XFERMODE_IDX_I3C_HDR_BT 0x03 /* I3C HDR-BT Mode */ 38 * Master Data Transfer Rate Selector Values. 67 * Master Data Transfer Rate Table Mode ID values. 73 * Master Data Transfer Rate Table Entry Bits Definitions
|
D | cmd_v2.c | 1 // SPDX-License-Identifier: BSD-3-Clause 7 * I3C HCI v2.0 Command Descriptor Handling 9 * Note: The I3C HCI v2.0 spec is still in flux. The code here will change. 13 #include <linux/i3c/master.h> 68 struct i3c_bus *bus = i3c_master_get_bus(&hci->master); in get_i3c_rate_idx() 70 if (bus->scl_rate.i3c >= 12000000) in get_i3c_rate_idx() 72 if (bus->scl_rate.i3c > 8000000) in get_i3c_rate_idx() 74 if (bus->scl_rate.i3c > 6000000) in get_i3c_rate_idx() 76 if (bus->scl_rate.i3c > 4000000) in get_i3c_rate_idx() 78 if (bus->scl_rate.i3c > 2000000) in get_i3c_rate_idx() [all …]
|
D | cmd_v1.c | 1 // SPDX-License-Identifier: BSD-3-Clause 7 * I3C HCI v1.0/v1.1 Command Descriptor Handling 11 #include <linux/i3c/master.h> 124 struct i3c_bus *bus = i3c_master_get_bus(&hci->master); in get_i3c_mode() 126 if (bus->scl_rate.i3c >= 12500000) in get_i3c_mode() 128 if (bus->scl_rate.i3c > 8000000) in get_i3c_mode() 130 if (bus->scl_rate.i3c > 6000000) in get_i3c_mode() 132 if (bus->scl_rate.i3c > 4000000) in get_i3c_mode() 134 if (bus->scl_rate.i3c > 2000000) in get_i3c_mode() 141 struct i3c_bus *bus = i3c_master_get_bus(&hci->master); in get_i2c_mode() [all …]
|
D | core.c | 1 // SPDX-License-Identifier: BSD-3-Clause 7 * Core driver code with main interface to the I3C subsystem. 13 #include <linux/i3c/master.h> 30 #define reg_read(r) readl(hci->base_regs + (r)) 31 #define reg_write(r, v) writel(v, hci->base_regs + (r)) 42 #define HC_CONTROL_HOT_JOIN_CTRL BIT(8) /* Hot-Join ACK/NACK Control */ 46 #define HC_CONTROL_IBA_INCLUDE BIT(0) /* Include I3C Broadcast Address */ 48 #define MASTER_DEVICE_ADDR 0x08 /* Master Device Address */ 64 #define HC_CAP_NON_CURRENT_MASTER_CAP BIT(5) /* master handoff capable */ 114 #define IBI_NOTIFY_MR_REJECTED BIT(1) /* Rejected Master Request Control */ [all …]
|
D | ext_caps.c | 1 // SPDX-License-Identifier: BSD-3-Clause 11 #include <linux/i3c/master.h> 26 hci->vendor_mipi_id = readl(base + 0x04); in hci_extcap_hardware_id() 27 hci->vendor_version_id = readl(base + 0x08); in hci_extcap_hardware_id() 28 hci->vendor_product_id = readl(base + 0x0c); in hci_extcap_hardware_id() 30 dev_info(&hci->master.dev, "vendor MIPI ID: %#x\n", hci->vendor_mipi_id); in hci_extcap_hardware_id() 31 dev_info(&hci->master.dev, "vendor version ID: %#x\n", hci->vendor_version_id); in hci_extcap_hardware_id() 32 dev_info(&hci->master.dev, "vendor product ID: %#x\n", hci->vendor_product_id); in hci_extcap_hardware_id() 35 switch (hci->vendor_mipi_id) { in hci_extcap_hardware_id() 37 hci->quirks |= HCI_QUIRK_RAW_CCC; in hci_extcap_hardware_id() [all …]
|
/Linux-v6.1/drivers/base/regmap/ |
D | regmap-i3c.c | 1 // SPDX-License-Identifier: GPL-2.0 5 #include <linux/i3c/device.h> 6 #include <linux/i3c/master.h> 12 struct i3c_device *i3c = dev_to_i3cdev(dev); in regmap_i3c_write() local 21 return i3c_device_do_priv_xfers(i3c, xfers, 1); in regmap_i3c_write() 29 struct i3c_device *i3c = dev_to_i3cdev(dev); in regmap_i3c_read() local 40 return i3c_device_do_priv_xfers(i3c, xfers, 2); in regmap_i3c_read() 48 struct regmap *__devm_regmap_init_i3c(struct i3c_device *i3c, in __devm_regmap_init_i3c() argument 53 return __devm_regmap_init(&i3c->dev, ®map_i3c, &i3c->dev, config, in __devm_regmap_init_i3c() 59 MODULE_DESCRIPTION("Regmap I3C Module");
|
/Linux-v6.1/drivers/iio/imu/st_lsm6dsx/ |
D | st_lsm6dsx_i3c.c | 1 // SPDX-License-Identifier: GPL-2.0 11 #include <linux/i3c/device.h> 12 #include <linux/i3c/master.h> 23 MODULE_DEVICE_TABLE(i3c, st_lsm6dsx_i3c_ids); 37 dev_err(&i3cdev->dev, "Failed to register i3c regmap %ld\n", PTR_ERR(regmap)); in st_lsm6dsx_i3c_probe() 41 return st_lsm6dsx_probe(&i3cdev->dev, 0, (uintptr_t)id->data, regmap); in st_lsm6dsx_i3c_probe() 55 MODULE_DESCRIPTION("STMicroelectronics st_lsm6dsx i3c driver");
|