Home
last modified time | relevance | path

Searched full:i3c (Results 1 – 25 of 45) sorted by relevance

12

/linux/Documentation/ABI/testing/
H A Dsysfs-bus-i3c1 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
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
22 the I3C specification for a detailed description of what each
[all …]
/linux/arch/arm64/boot/dts/axiado/
H A Dax3000.dtsi232 /* 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 Di3c.yaml4 $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 Dsilvaco,i3c-master.yaml4 $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 Dmipi-i3c-hci.yaml4 $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 Daspeed,ast2600-i3c.yaml4 $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 Dcdns,i3c-master.yaml4 $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";
/linux/drivers/i3c/master/
H A Dast2600-i3c-master.c14 #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, &reg); 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 Di3c-master-cdns.c12 #include <linux/i3c/master.h>
1088 /* Only update PRESCL_CTRL1 if the I3C SCL limitation has changed. */ in cdns_i3c_master_upd_i3c_scl_lim()
1094 pres_step = 1000000000UL / (bus->scl_rate.i3c * 4); in cdns_i3c_master_upd_i3c_scl_lim()
1096 /* Configure PP_LOW to meet I3C slave limitations. */ in cdns_i3c_master_upd_i3c_scl_lim()
1110 /* Disable I3C master before updating PRESCL_CTRL1. */ in cdns_i3c_master_upd_i3c_scl_lim()
1160 * Clear slots that ended up not being used. Can be caused by I3C in cdns_i3c_master_do_daa()
1161 * device creation failure or when the I3C device was already known in cdns_i3c_master_do_daa()
1224 pres = DIV_ROUND_UP(sysclk_rate, (bus->scl_rate.i3c * 4)) - 1; in cdns_i3c_master_bus_init()
1228 bus->scl_rate.i3c = sysclk_rate / ((pres + 1) * 4); in cdns_i3c_master_bus_init()
1247 pres_step = 1000000000 / (bus->scl_rate.i3c * 4); in cdns_i3c_master_bus_init()
[all …]
/linux/include/linux/i3c/
H A Ddevice.h19 * 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.
54 * struct i3c_priv_xfer - I3C SDR private transfer
61 * @err: I3C error code
75 * enum i3c_dcr - I3C DCR values
76 * @I3C_DCR_GENERIC_DEVICE: generic I3C device
100 * struct i3c_device_info - I3C device information
114 * These are all basic information that should be advertised by an I3C device.
117 * For each I3C slave attached to a master with
[all …]
H A Dccc.h12 #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/i3c/
H A DKconfig3 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
H A Ddevice.c18 * i3c_device_do_priv_xfers() - do I3C SDR private transfers directed to a
33 * 'xfers' some time later. See I3C spec ver 1.1.1 09-Jun-2021. Section:
59 * i3c_device_do_setdasa() - do I3C dynamic address assignement with
79 * i3c_device_get_info() - get I3C device information
84 * Retrieve I3C dev info.
206 * @i3cdev: I3C device
218 * @i3cdev: I3C device
219 * @id_table: I3C device match table
264 * i3c_driver_register_with_owner() - register an I3C device driver
279 pr_err("Trying to register an i3c driver without probe callback\n"); in i3c_driver_register_with_owner()
[all …]
H A DMakefile2 i3c-y := device.o master.o
3 obj-$(CONFIG_I3C) += i3c.o
/linux/drivers/net/mctp/
H A Dmctp-i3c.c4 * "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_priv_xfers(mi->i3c, &xfer, 1); 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 DKconfig42 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
H A DMakefile3 obj-$(CONFIG_MCTP_TRANSPORT_I3C) += mctp-i3c.o
/linux/drivers/base/regmap/
H A Dregmap-i3c.c5 #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, &regmap_i3c, &i3c->dev, config, in __devm_regmap_init_i3c()
59 MODULE_DESCRIPTION("regmap I3C Module");
/linux/drivers/i3c/master/mipi-i3c-hci/
H A Dxfer_mode_rate.h9 * 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 Dhci_quirks.c3 * I3C HCI Quirks
11 #include <linux/i3c/master.h>
/linux/drivers/iio/imu/st_lsm6dsx/
H A Dst_lsm6dsx_i3c.c11 #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 Ddevice-driver-api.rst4 I3C device driver API
7 .. kernel-doc:: include/linux/i3c/device.h
9 .. kernel-doc:: drivers/i3c/device.c
H A Dmaster-driver-api.rst4 I3C master controller driver API
7 .. kernel-doc:: drivers/i3c/master.c
9 .. kernel-doc:: include/linux/i3c/master.h
H A Dindex.rst4 I3C subsystem
/linux/arch/powerpc/include/asm/
H A Dsfp-machine.h242 __asm__ ("subf%I3c %1,%4,%3\n\tsubfze %0,%2" \
245 __asm__ ("subf%I3c %1,%4,%3\n\tsubfme %0,%2" \
248 __asm__ ("subf%I3c %1,%4,%3\n\taddme %0,%2" \
251 __asm__ ("subf%I3c %1,%4,%3\n\taddze %0,%2" \

12