| /linux/drivers/i3c/master/ |
| H A D | renesas-i3c.c | 3 * Renesas I3C Controller driver 16 #include <linux/i3c/master.h> 323 static int renesas_i3c_get_free_pos(struct renesas_i3c *i3c) in renesas_i3c_get_free_pos() argument 325 if (!(i3c->free_pos & GENMASK(i3c->maxdevs - 1, 0))) in renesas_i3c_get_free_pos() 328 return ffs(i3c->free_pos) - 1; in renesas_i3c_get_free_pos() 331 static int renesas_i3c_get_addr_pos(struct renesas_i3c *i3c, u8 addr) in renesas_i3c_get_addr_pos() argument 335 for (pos = 0; pos < i3c->maxdevs; pos++) { in renesas_i3c_get_addr_pos() 336 if (addr == i3c->addrs[pos]) in renesas_i3c_get_addr_pos() 343 static struct renesas_i3c_xfer *renesas_i3c_alloc_xfer(struct renesas_i3c *i3c, in renesas_i3c_alloc_xfer() argument 359 static void renesas_i3c_start_xfer_locked(struct renesas_i3c *i3c) in renesas_i3c_start_xfer_locked() argument [all …]
|
| H A D | ast2600-i3c-master.c | 14 #include "dw-i3c-master.h" 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() 98 AST2600_I3CG_REG1(i3c->global_idx), reg); in ast2600_i3c_init() 103 static void ast2600_i3c_set_dat_ibi(struct dw_i3c_master *i3c, in ast2600_i3c_set_dat_ibi() argument 108 * The ast2600 i3c controller will lock up on receiving 4n+1-byte IBIs in ast2600_i3c_set_dat_ibi() [all …]
|
| H A D | svc-i3c-master.c | 3 * Silvaco dual-role I3C master driver 14 #include <linux/i3c/master.h> 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. 203 * struct svc_i3c_master - Silvaco I3C Master structure 204 * @base: I3C master controller 213 * @num_clks: I3C clock number 215 * @clks: I3C clock array 542 * According to I3C spec ver 1.1, 09-Jun-2021, section 5.1.2.5: in svc_i3c_master_ibi_isr() [all …]
|
| /linux/arch/arm64/boot/dts/axiado/ |
| H A D | ax3000.dtsi | 232 /* I3C Controller 0 - 16 */ 233 i3c0: i3c@80500400 { 234 compatible = "axiado,ax3000-i3c", "cdns,i3c-master"; 241 i3c-scl-hz = <400000>; 247 i3c1: i3c@80500800 { 248 compatible = "axiado,ax3000-i3c", "cdns,i3c-master"; 255 i3c-scl-hz = <400000>; 261 i3c2: i3c@80580400 { 262 compatible = "axiado,ax3000-i3c", "cdns,i3c-master"; 269 i3c-scl-hz = <400000>; [all …]
|
| /linux/Documentation/devicetree/bindings/i3c/ |
| H A D | i3c.yaml | 4 $id: http://devicetree.org/schemas/i3c/i3c.yaml# 7 title: I3C bus 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]+$" 27 All I3C devices are supposed to support DAA (Dynamic Address Assignment), 28 and are thus discoverable. So, by default, I3C devices do not have to be 32 I3C devices. 34 Another use case for describing an I3C device in the device tree is when 35 this I3C device has a static I2C address and we want to assign it a [all …]
|
| H A D | silvaco,i3c-master.yaml | 4 $id: http://devicetree.org/schemas/i3c/silvaco,i3c-master.yaml# 7 title: Silvaco I3C master 16 - nuvoton,npcm845-i3c 17 - silvaco,i3c-master-v1 20 - nxp,imx94-i3c 21 - nxp,imx95-i3c 22 - const: silvaco,i3c-master-v1 55 - $ref: i3c.yaml# 60 - nuvoton,npcm845-i3c 61 - silvaco,i3c-master-v1 [all …]
|
| H A D | mipi-i3c-hci.yaml | 4 $id: http://devicetree.org/schemas/i3c/mipi-i3c-hci.yaml# 7 title: MIPI I3C HCI 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 27 https://www.mipi.org/specifications/i3c-hci 31 const: mipi-i3c-hci 46 i3c@a0000000 { 47 compatible = "mipi-i3c-hci";
|
| H A D | aspeed,ast2600-i3c.yaml | 4 $id: http://devicetree.org/schemas/i3c/aspeed,ast2600-i3c.yaml# 7 title: ASPEED AST2600 i3c controller 13 - $ref: i3c.yaml# 17 const: aspeed,ast2600-i3c 41 - description: phandle to i3c global register syscon node 42 - description: index of this i3c controller in the global register set 44 A (phandle, controller index) reference to the i3c global register set 60 i3c@2000 { 61 compatible = "aspeed,ast2600-i3c";
|
| H A D | cdns,i3c-master.yaml | 4 $id: http://devicetree.org/schemas/i3c/cdns,i3c-master.yaml# 7 title: Cadence I3C master block 13 - $ref: i3c.yaml# 18 - const: cdns,i3c-master 21 - axiado,ax3000-i3c 22 - const: cdns,i3c-master 49 i3c@d040000 { 50 compatible = "cdns,i3c-master";
|
| H A D | snps,dw-i3c-master.yaml | 4 $id: http://devicetree.org/schemas/i3c/snps,dw-i3c-master.yaml# 7 title: Synopsys DesignWare I3C master block 13 - $ref: i3c.yaml# 18 - const: snps,dw-i3c-master-1.00a 20 - const: altr,agilex5-dw-i3c-master 21 - const: snps,dw-i3c-master-1.00a 54 i3c@2000 { 55 compatible = "snps,dw-i3c-master-1.00a";
|
| /linux/drivers/i3c/ |
| H A D | Kconfig | 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" 24 endif # I3C [all …]
|
| H A D | master.c | 31 * @bus: I3C bus to take the lock on 42 * logic to rely on I3C device information that could be changed behind their 53 * @bus: I3C bus to release the lock on 66 * @bus: I3C bus to take the lock on 70 * maintenance operations). Basically all communications with I3C devices are 72 * state or I3C dynamic address). 75 * In other words, transfer requests passed to the I3C master can be submitted 76 * in parallel and I3C master drivers have to use their own locking to make 87 * @bus: I3C bus to release the lock on 283 struct i3c_device *i3c = dev_to_i3cdev(dev); in modalias_show() local [all …]
|
| /linux/drivers/net/mctp/ |
| H A D | mctp-i3c.c | 4 * "DSP0233 Management Component Transport Protocol (MCTP) I3C Transport 13 #include <linux/i3c/device.h> 14 #include <linux/i3c/master.h> 73 struct i3c_device *i3c; member 82 /* I3C dynamic address */ 128 /* Make sure netif_rx() is read in the same order as i3c. */ in mctp_i3c_read() 130 rc = i3c_device_do_xfers(mi->i3c, &xfer, 1, I3C_SDR); in mctp_i3c_read() 135 /* Bad i3c bus driver */ in mctp_i3c_read() 179 static void mctp_i3c_ibi_handler(struct i3c_device *i3c, in mctp_i3c_ibi_handler() argument 182 struct mctp_i3c_device *mi = i3cdev_get_drvdata(i3c); in mctp_i3c_ibi_handler() [all …]
|
| H A D | Kconfig | 42 tristate "MCTP I3C transport" 43 depends on I3C 45 Provides a driver to access MCTP devices over I3C transport, 47 A MCTP protocol network device is created for each I3C bus
|
| /linux/drivers/base/regmap/ |
| H A D | regmap-i3c.c | 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/include/linux/i3c/ |
| H A D | ccc.h | 12 #include <linux/i3c/device.h> 14 /* I3C CCC (Common Command Codes) related definitions */ 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 99 * @dyn_addr: dynamic address assigned to the I3C slave or 0 if the entry is 102 * @lvr: LVR value (not applicable to entries describing I3C devices) 108 * descriptors (one entry per I3C/I2C dev controlled by the master). 154 * Information passed to the ENTTM CCC to instruct an I3C device to enter a 164 * @addr: dynamic address to assign to an I3C device 167 * dynamic address of an I3C device. [all …]
|
| /linux/drivers/iio/imu/inv_icm45600/ |
| H A D | inv_icm45600_i3c.c | 9 #include <linux/i3c/device.h> 10 #include <linux/i3c/master.h> 24 MODULE_DEVICE_TABLE(i3c, inv_icm45600_i3c_ids); 48 "Failed to register i3c regmap %ld\n", PTR_ERR(regmap)); in inv_icm45600_i3c_probe() 77 MODULE_DESCRIPTION("InvenSense ICM-456xx i3c driver");
|
| H A D | Kconfig | 52 tristate "InvenSense ICM-456xx I3C driver" 53 depends on I3C 58 devices over I3C. 70 inv-icm45600-i3c.
|
| /linux/drivers/i3c/master/mipi-i3c-hci/ |
| H A D | xfer_mode_rate.h | 9 * This applies starting from I3C HCI v2.0. 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 */
|
| H A D | cmd_v2.c | 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 if (bus->scl_rate.i3c >= 12000000) in get_i3c_rate_idx() 70 if (bus->scl_rate.i3c > 8000000) in get_i3c_rate_idx() 72 if (bus->scl_rate.i3c > 6000000) in get_i3c_rate_idx() 74 if (bus->scl_rate.i3c > 4000000) in get_i3c_rate_idx() 76 if (bus->scl_rate.i3c > 2000000) in get_i3c_rate_idx()
|
| H A D | mipi-i3c-hci-pci.c | 3 * PCI glue code for MIPI I3C HCI driver 18 #include <linux/platform_data/mipi-i3c-hci.h> 188 .name = "intel-lpss-i3c", 197 .name = "intel-lpss-i3c", 206 .name = "intel-lpss-i3c", 358 MODULE_DESCRIPTION("MIPI I3C HCI driver on PCI bus");
|
| /linux/drivers/iio/imu/st_lsm6dsx/ |
| H A D | st_lsm6dsx_i3c.c | 11 #include <linux/i3c/device.h> 22 MODULE_DEVICE_TABLE(i3c, st_lsm6dsx_i3c_ids); 37 dev_err(dev, "Failed to register i3c regmap %ld\n", PTR_ERR(regmap)); in st_lsm6dsx_i3c_probe() 55 MODULE_DESCRIPTION("STMicroelectronics st_lsm6dsx i3c driver");
|
| /linux/Documentation/driver-api/i3c/ |
| H A D | device-driver-api.rst | 4 I3C device driver API 7 .. kernel-doc:: include/linux/i3c/device.h 9 .. kernel-doc:: drivers/i3c/device.c
|
| H A D | master-driver-api.rst | 4 I3C master controller driver API 7 .. kernel-doc:: drivers/i3c/master.c 9 .. kernel-doc:: include/linux/i3c/master.h
|
| /linux/drivers/misc/amd-sbi/ |
| H A D | rmi-i2c.c | 12 #include <linux/i3c/device.h> 13 #include <linux/i3c/master.h> 197 * AMD APML I3C devices support static address. in sbrmi_i3c_probe() 199 * In case static address is not defined, I3C master controller defined in sbrmi_i3c_probe() 217 MODULE_DEVICE_TABLE(i3c, sbrmi_i3c_id); 221 .name = "sbrmi-i3c",
|