| /linux/include/linux/i3c/ |
| H A D | master.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 15 #include <linux/i3c/ccc.h> 16 #include <linux/i3c/device.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 42 * @master: I3C master that instantiated this device. Will be used to do 43 * I2C/I3C transfers 44 * @master_priv: master private data assigned to the device. Can be used to 45 * add master specific information 47 * This structure is describing common I3C/I2C dev information. [all …]
|
| H A 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 …]
|
| H A D | device.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 19 * enum i3c_error_code - I3C error codes 21 * @I3C_ERROR_UNKNOWN: unknown error, usually means the error is not I3C 27 * These are the standard error codes as defined by the I3C specification. 28 * When -EIO is returned by the i3c_device_do_priv_xfers() or 42 * enum i3c_xfer_mode - I3C xfer mode ids 58 * struct i3c_xfer - I3C data transfer 60 * @cmd: Read/Write command in HDR mode, read: 0x80 - 0xff, write: 0x00 - 0x7f 64 * @data.in: input buffer. Must point to a DMA-able buffer 65 * @data.out: output buffer. Must point to a DMA-able buffer [all …]
|
| /linux/Documentation/ABI/testing/ |
| H A 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/arch/arm64/boot/dts/axiado/ |
| H A D | ax3000.dtsi | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * Copyright (c) 2021-25 Axiado Corporation (or its affiliates). All rights reserved. 6 /dts-v1/; 8 #include <dt-bindings/interrupt-controller/irq.h> 9 #include <dt-bindings/interrupt-controller/arm-gic.h> 11 /memreserve/ 0x3c0013a0 0x00000008; /* cpu-release-addr */ 14 interrupt-parent = <&gic500>; 15 #address-cells = <2>; 16 #size-cells = <2>; 19 #address-cells = <2>; [all …]
|
| /linux/Documentation/devicetree/bindings/i3c/ |
| H A 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> 15 - enum: 16 - nuvoton,npcm845-i3c 17 - silvaco,i3c-master-v1 18 - items: [all …]
|
| H A 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# 18 - const: snps,dw-i3c-master-1.00a 19 - items: 20 - const: altr,agilex5-dw-i3c-master [all …]
|
| H A 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# 18 - const: cdns,i3c-master 19 - items: 20 - enum: [all …]
|
| H A 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 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@[0-9a-f]+$" [all …]
|
| /linux/drivers/i3c/ |
| H A D | master.c | 1 // SPDX-License-Identifier: GPL-2.0 11 #include <linux/dma-mapping.h> 30 * i3c_bus_maintenance_lock - Lock the bus for a maintenance operation 31 * @bus: I3C bus to take the lock on 35 * - enabling/disabling slave events 36 * - re-triggering DAA 37 * - changing the dynamic address of a device 38 * - relinquishing mastership 39 * - ... 42 * logic to rely on I3C device information that could be changed behind their [all …]
|
| H A 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 …]
|
| H A 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/drivers/i3c/master/ |
| H A 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 */ 145 * I3C HW stalls the write transfer if the transmit FIFO becomes empty, 146 * when new data is written to FIFO, I3C HW resumes the transfer but 154 * I3C HW may generate an invalid SlvStart event when emitting a STOP. 161 * corrupted and results in a no repeated-start condition at the end of 203 * struct svc_i3c_master - Silvaco I3C Master structure 204 * @base: I3C master controller [all …]
|
| H A D | ast2600-i3c-master.c | 1 // SPDX-License-Identifier: GPL-2.0 14 #include "dw-i3c-master.h" 16 /* AST2600-specific global register set */ 68 return -EINVAL; in ast2600_i3c_pullup_to_reg() 79 struct ast2600_i3c *i3c = to_ast2600_i3c(dw); in ast2600_i3c_init() local 84 rc = ast2600_i3c_pullup_to_reg(i3c->sda_pullup, ®); in ast2600_i3c_init() 88 rc = regmap_write(i3c->global_regs, in ast2600_i3c_init() 89 AST2600_I3CG_REG0(i3c->global_idx), reg); in ast2600_i3c_init() 96 reg = AST2600_I3CG_REG1_INST_ID(i3c->global_idx); in ast2600_i3c_init() 97 rc = regmap_write(i3c->global_regs, in ast2600_i3c_init() [all …]
|
| H A D | dw-i3c-master.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <linux/i3c/master.h> 27 #include "dw-i3c-master.h" 95 #define QUEUE_THLD_CTRL_IBI_STAT(x) (((x) - 1) << 24) 99 #define QUEUE_THLD_CTRL_RESP_BUF(x) (((x) - 1) << 8) 263 if (cmd->ndests > 1) in dw_i3c_master_supports_ccc_cmd() 266 switch (cmd->id) { in dw_i3c_master_supports_ccc_cmd() 298 to_dw_i3c_master(struct i3c_master_controller *master) in to_dw_i3c_master() argument 300 return container_of(master, struct dw_i3c_master, base); in to_dw_i3c_master() 303 static void dw_i3c_master_disable(struct dw_i3c_master *master) in dw_i3c_master_disable() argument [all …]
|
| H A D | i3c-master-cdns.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include <linux/i3c/master.h> 423 to_cdns_i3c_master(struct i3c_master_controller *master) in to_cdns_i3c_master() argument 425 return container_of(master, struct cdns_i3c_master, base); in to_cdns_i3c_master() 428 static void cdns_i3c_master_wr_to_tx_fifo(struct cdns_i3c_master *master, in cdns_i3c_master_wr_to_tx_fifo() argument 431 i3c_writel_fifo(master->regs + TX_FIFO, bytes, nbytes); in cdns_i3c_master_wr_to_tx_fifo() 434 static void cdns_i3c_master_rd_from_rx_fifo(struct cdns_i3c_master *master, in cdns_i3c_master_rd_from_rx_fifo() argument 437 i3c_readl_fifo(master->regs + RX_FIFO, bytes, nbytes); in cdns_i3c_master_rd_from_rx_fifo() 443 if (cmd->ndests > 1) in cdns_i3c_master_supports_ccc_cmd() 446 switch (cmd->id) { in cdns_i3c_master_supports_ccc_cmd() [all …]
|
| H A D | adi-i3c-master.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * I3C Controller driver 13 #include <linux/adi-axi-common.h> 14 #include <linux/i3c/master.h> 126 static inline struct adi_i3c_master *to_adi_i3c_master(struct i3c_master_controller *master) in to_adi_i3c_master() argument 128 return container_of(master, struct adi_i3c_master, base); in to_adi_i3c_master() 131 static void adi_i3c_master_wr_to_tx_fifo(struct adi_i3c_master *master, in adi_i3c_master_wr_to_tx_fifo() argument 136 n = readl(master->regs + REG_SDO_FIFO_ROOM); in adi_i3c_master_wr_to_tx_fifo() 138 i3c_writel_fifo(master->regs + REG_SDO_FIFO, buf, m); in adi_i3c_master_wr_to_tx_fifo() 141 static void adi_i3c_master_rd_from_rx_fifo(struct adi_i3c_master *master, in adi_i3c_master_rd_from_rx_fifo() argument [all …]
|
| /linux/drivers/net/mctp/ |
| H A D | mctp-i3c.c | 1 // SPDX-License-Identifier: GPL-2.0 4 * "DSP0233 Management Component Transport Protocol (MCTP) I3C Transport 13 #include <linux/i3c/device.h> 14 #include <linux/i3c/master.h> 27 static const int MCTP_I3C_MAXMTU = MCTP_I3C_MAXBUF - 1; 42 static const char *MCTP_I3C_OF_PROP = "mctp-controller"; 73 struct i3c_device *i3c; member 82 /* I3C dynamic address */ 102 struct i3c_xfer xfer = { .rnw = 1, .len = mi->mrl }; in mctp_i3c_read() 103 struct net_device_stats *stats = &mi->mbus->ndev->stats; in mctp_i3c_read() [all …]
|
| /linux/drivers/i3c/master/mipi-i3c-hci/ |
| H A 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
|
| H A 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> 36 #define HC_CONTROL_HOT_JOIN_CTRL BIT(8) /* Hot-Join ACK/NACK Control */ 40 #define HC_CONTROL_IBA_INCLUDE BIT(0) /* Include I3C Broadcast Address */ 42 #define MASTER_DEVICE_ADDR 0x08 /* Master Device Address */ 58 #define HC_CAP_NON_CURRENT_MASTER_CAP BIT(5) /* master handoff capable */ 106 #define IBI_NOTIFY_MR_REJECTED BIT(1) /* Rejected Master Request Control */ 107 #define IBI_NOTIFY_HJ_REJECTED BIT(0) /* Rejected Hot-Join Control */ 115 return container_of(m, struct i3c_hci, master); in to_i3c_hci() [all …]
|
| H A D | hci_quirks.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * I3C HCI Quirks 7 * Authors: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> 11 #include <linux/i3c/master.h>
|
| /linux/Documentation/driver-api/i3c/ |
| H A 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/drivers/base/regmap/ |
| H A D | regmap-i3c.c | 1 // SPDX-License-Identifier: GPL-2.0 6 #include <linux/i3c/device.h> 7 #include <linux/i3c/master.h> 13 struct i3c_device *i3c = dev_to_i3cdev(dev); in regmap_i3c_write() local 22 return i3c_device_do_xfers(i3c, xfers, ARRAY_SIZE(xfers), I3C_SDR); in regmap_i3c_write() 30 struct i3c_device *i3c = dev_to_i3cdev(dev); in regmap_i3c_read() local 41 return i3c_device_do_xfers(i3c, xfers, ARRAY_SIZE(xfers), I3C_SDR); in regmap_i3c_read() 49 struct regmap *__devm_regmap_init_i3c(struct i3c_device *i3c, in __devm_regmap_init_i3c() argument 54 return __devm_regmap_init(&i3c->dev, ®map_i3c, &i3c->dev, config, in __devm_regmap_init_i3c() 60 MODULE_DESCRIPTION("regmap I3C Module");
|
| /linux/drivers/misc/amd-sbi/ |
| H A D | rmi-i2c.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * rmi-i2c.c - Side band RMI over I2C support for AMD out 12 #include <linux/i3c/device.h> 13 #include <linux/i3c/master.h> 19 #include "rmi-core.h" 28 * Enable the SB-RMI Software alert status in sbrmi_enable_alert() 31 ret = regmap_read(data->regmap, SBRMI_CTRL, &ctrl); in sbrmi_enable_alert() 37 return regmap_write(data->regmap, SBRMI_CTRL, ctrl); in sbrmi_enable_alert() 52 data->pwr_limit_max = msg.mb_in_out; in sbrmi_get_max_pwr_limit() 64 return -ENOMEM; in sbrmi_common_probe() [all …]
|
| /linux/drivers/iio/imu/inv_icm45600/ |
| H A D | inv_icm45600_i3c.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 9 #include <linux/i3c/device.h> 10 #include <linux/i3c/master.h> 24 MODULE_DEVICE_TABLE(i3c, inv_icm45600_i3c_ids); 47 return dev_err_probe(&i3cdev->dev, PTR_ERR(regmap), in inv_icm45600_i3c_probe() 48 "Failed to register i3c regmap %ld\n", PTR_ERR(regmap)); in inv_icm45600_i3c_probe() 52 return dev_err_probe(&i3cdev->dev, ret, "Failed to read part id %d\n", whoami); in inv_icm45600_i3c_probe() 55 if (whoami == i3c_chip_info[chip]->whoami) in inv_icm45600_i3c_probe() 60 return dev_err_probe(&i3cdev->dev, -ENODEV, in inv_icm45600_i3c_probe() 77 MODULE_DESCRIPTION("InvenSense ICM-456xx i3c driver");
|