Lines Matching +full:clock +full:- +full:lane

5  * SPDX-License-Identifier: Apache-2.0
42 * - BCR[7:6]: Device Role
43 * - 0: I3C Target
44 * - 1: I3C Controller capable
45 * - 2: Reserved
46 * - 3: Reserved
48 * - BCR[5]: Advanced Capabilities
49 * - 0: Does not support optional advanced capabilities.
50 * - 1: Supports optional advanced capabilities which
53 * - BCR[4]: Virtual Target Support
54 * - 0: Is not a virtual target.
55 * - 1: Is a virtual target.
57 * - BCR[3]: Offline Capable
58 * - 0: Will always response to I3C commands.
59 * - 1: Will not always response to I3C commands.
61 * - BCR[2]: IBI Payload
62 * - 0: No data bytes following the accepted IBI.
63 * - 1: One data byte (MDB, Mandatory Data Byte) follows
67 * - BCR[1]: IBI Request Capable
68 * - 0: Not capable
69 * - 1: Capable
71 * - BCR[0]: Max Data Speed Limitation
72 * - 0: No Limitation
73 * - 1: Limitation obtained via GETMXDS CCC.
82 * 0 - No Limitation.
83 * 1 - Limitation obtained via GETMXDS CCC.
93 * 0 - No data bytes following the accepted IBI.
94 * 1 - One data byte (MDB, Mandatory Data Byte) follows the accepted IBI.
102 * 0 - Will always respond to I3C commands.
103 * 1 - Will not always respond to I3C commands.
110 * 0 - Is not a virtual target.
111 * 1 - Is a virtual target.
118 * 0 - Does not support optional advanced capabilities.
119 * 1 - Supports optional advanced capabilities which can be viewed via
124 /** Device Role - I3C Target. */
127 /** Device Role - I3C Controller Capable. */
150 * - LVR[7:5]: I2C device index:
151 * - 0: I2C device has a 50 ns spike filter where
153 * - 1: I2C device does not have a 50 ns spike filter
155 * - 2: I2C device does not have a 50 ns spike filter
157 * - LVR[4]: I2C mode indicator:
158 * - 0: FM+ mode
159 * - 1: FM mode
160 * - LVR[3:0]: Reserved.
239 * and can tolerate maximum SDR SCL clock frequency.
246 * but cannot tolerate maximum SDR SCL clock frequency.
279 /** High Data Rate - Double Data Rate messaging */
282 /** High Data Rate - Ternary Symbol Legacy-inclusive-Bus */
285 /** High Data Rate - Ternary Symbol for Pure Bus */
288 /** High Data Rate - Bulk Transport */
404 * that follows a write, or vice-versa. Some drivers will merge
440 /** I3C HDR-DDR (Double Data Rate) */
443 /** I3C HDR-TSP (Ternary Symbol Pure-bus) */
446 /** I3C HDR-TSL (Ternary Symbol Legacy-inclusive-bus) */
449 /** I3C HDR-BT (Bulk Transport) */
500 /** HDR command code field (7-bit) for HDR-DDR, HDR-TSP and HDR-TSL */
534 * Bit mask of supported HDR modes (0 - 7).
773 * Raise In-Band Interrupt (IBI).
918 * - i3c_device_register() to tell the controller of a target device.
919 * - i3c_transfers() to initiate data transfers between controller and
958 * This is specified in the device tree property "assigned-address"
979 * - During Dynamic Address Assignment (during ENTDAA)
980 * - Reset Dynamic Address Assignment (RSTDAA)
981 * - Set All Addresses to Static Addresses (SETAASA)
982 * - Set New Dynamic Address (SETNEWDA)
983 * - Set Dynamic Address from Static Address (SETDASA)
992 * - Reset Group Address(es) (RSTGRPA)
993 * - Set Group Address (SETGRPA)
1042 * - Bit[0]: HDR-DDR
1043 * - Bit[1]: HDR-TSP
1044 * - Bit[2]: HDR-TSL
1045 * - Bit[7:3]: Reserved
1051 * - Bit[0]: HDR-DDR
1052 * - Bit[1]: HDR-TSP
1053 * - Bit[2]: HDR-TSL
1054 * - Bit[3]: HDR-BT
1055 * - Bit[7:4]: Reserved
1062 * - Bit[3:0]: I3C 1.x Specification Version
1063 * - Bit[5:4]: Group Address Capabilities
1064 * - Bit[6]: HDR-DDR Write Abort
1065 * - Bit[7]: HDR-DDR Abort CRC
1071 * - Bit[0]: Multi-Lane (ML) Data Transfer Support
1072 * - Bit[1]: Device to Device Transfer (D2DXFER) Support
1073 * - Bit[2]: Device to Device Transfer (D2DXFER) IBI Capable
1074 * - Bit[3]: Defining Byte Support in GETCAPS
1075 * - Bit[4]: Defining Byte Support in GETSTATUS
1076 * - Bit[5]: HDR-BT CRC-32 Support
1077 * - Bit[6]: IBI MDB Support for Pending Read Notification
1078 * - Bit[7]: Reserved
1084 * - Bit[7:0]: Reserved
1098 * In-Band Interrupt (IBI) callback.
1152 * - Aid in dynamic address assignment.
1153 * - Quick way to find out if a target address is
1232 &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i3c, desc, node)
1243 &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i2c, desc, node)
1297 * a preferred address (i.e. assigned-address in device tree,
1315 * device (for example, hot-join after device coming back from
1335 * @retval -ENODEV if no device matches the PID (@p pid) in
1337 * @retval -EINVAL if the device matching PID (@p pid) already
1357 * @retval -EINVAL If invalid configure parameters.
1358 * @retval -EIO General Input/Output errors.
1359 * @retval -ENOSYS If not implemented.
1365 (const struct i3c_driver_api *)dev->api;
1367 if (api->configure == NULL) {
1368 return -ENOSYS;
1371 return api->configure(dev, type, config);
1391 * @retval -EIO General Input/Output errors.
1392 * @retval -ENOSYS If not implemented.
1398 (const struct i3c_driver_api *)dev->api;
1400 if (api->config_get == NULL) {
1401 return -ENOSYS;
1404 return api->config_get(dev, type, config);
1413 * @retval -EBUSY If bus recovery fails.
1414 * @retval -EIO General input / output error.
1415 * @retval -ENOSYS Bus recovery is not supported by the controller driver.
1420 (const struct i3c_driver_api *)dev->api;
1422 if (api->recover_bus == NULL) {
1423 return -ENOSYS;
1426 return api->recover_bus(dev);
1445 * @retval -EINVAL If address is not available or if the device
1472 * @retval -EINVAL If address is not available
1493 * @retval -EINVAL If device is already detached
1512 * @retval -EINVAL If address is not available or if the device
1532 * @retval -EINVAL If device is already detached
1551 * @retval -EBUSY Bus is busy.
1552 * @retval -EIO General input / output error.
1553 * @retval -ENODEV If a provisioned ID does not match to any target devices
1555 * @retval -ENOSPC No more free addresses can be assigned to target.
1556 * @retval -ENOSYS Dynamic address assignment is not supported by
1562 (const struct i3c_driver_api *)dev->api;
1564 if (api->do_daa == NULL) {
1565 return -ENOSYS;
1568 return api->do_daa(dev);
1579 * @retval -EBUSY Bus is busy.
1580 * @retval -EIO General Input / output error.
1581 * @retval -EINVAL Invalid valid set in the payload structure.
1582 * @retval -ENOSYS Not implemented.
1591 (const struct i3c_driver_api *)dev->api;
1593 if (api->do_ccc == NULL) {
1594 return -ENOSYS;
1597 return api->do_ccc(dev, payload);
1621 * limitations on support for multi-message bus transactions.
1628 * @retval -EBUSY Bus is busy.
1629 * @retval -EIO General input / output error.
1638 (const struct i3c_driver_api *)target->bus->api;
1640 return api->i3c_xfers(target->bus, target, msgs, num_msgs);
1664 (const struct i3c_driver_api *)dev->api;
1666 if (api->i3c_device_find == NULL) {
1670 return api->i3c_device_find(dev, id);
1679 * @brief Raise an In-Band Interrupt (IBI).
1681 * This raises an In-Band Interrupt (IBI) to the active controller.
1687 * @retval -EIO General input / output error.
1693 (const struct i3c_driver_api *)dev->api;
1695 if (api->ibi_raise == NULL) {
1696 return -ENOSYS;
1699 return api->ibi_raise(dev, request);
1711 * @retval -EIO General Input / output error.
1712 * @retval -ENOMEM If these is no more empty entries in
1719 (const struct i3c_driver_api *)target->bus->api;
1721 if (api->ibi_enable == NULL) {
1722 return -ENOSYS;
1725 return api->ibi_enable(target->bus, target);
1737 * @retval -EIO General Input / output error.
1738 * @retval -ENODEV If IBI is not previously enabled for @p target.
1743 (const struct i3c_driver_api *)target->bus->api;
1745 if (api->ibi_disable == NULL) {
1746 return -ENOSYS;
1749 return api->ibi_disable(target->bus, target);
1765 return (target->bcr & I3C_BCR_IBI_PAYLOAD_HAS_DATA_BYTE)
1782 return (target->bcr & I3C_BCR_IBI_REQUEST_CAPABLE)
1799 return I3C_BCR_DEVICE_ROLE(target->bcr)
1820 * @retval -EBUSY Bus is busy.
1821 * @retval -EIO General input / output error.
1847 * @retval -EBUSY Bus is busy.
1848 * @retval -EIO General input / output error.
1868 * it to me" transaction pair through a combined write-then-read bus
1878 * @retval -EBUSY Bus is busy.
1879 * @retval -EIO General input / output error.
1916 * @retval -EBUSY Bus is busy.
1917 * @retval -EIO General input / output error.
1946 * @retval -EBUSY Bus is busy.
1947 * @retval -EIO General input / output error.
1974 * This routine reads the value of an 8-bit internal register of an I3C target
1982 * @retval -EBUSY Bus is busy.
1983 * @retval -EIO General input / output error.
1996 * This routine writes a value to an 8-bit internal register of an I3C target
2007 * @retval -EBUSY Bus is busy.
2008 * @retval -EIO General input / output error.
2021 * This routine updates the value of a set of bits from an 8-bit internal
2033 * @retval -EBUSY Bus is busy.
2034 * @retval -EIO General input / output error.
2092 * @retval -EBUSY Bus is busy.
2093 * @retval -EIO General input / output error.
2094 * @retval -ENODEV If a provisioned ID does not match to any target devices
2096 * @retval -ENOSPC No more free addresses can be assigned to target.
2097 * @retval -ENOSYS Dynamic address assignment is not supported by
2120 * @retval -EIO General Input/Output error.
2144 * @retval -ENOMEM No memory to build the payload.
2145 * @retval -EIO General Input/Output error.
2177 (const struct i3c_iodev_data *)iodev_sqe->sqe.iodev->data;
2178 const struct i3c_driver_api *api = (const struct i3c_driver_api *)data->bus->api;
2180 if (api->iodev_submit == NULL) {
2181 rtio_iodev_sqe_err(iodev_sqe, -ENOSYS);
2184 api->iodev_submit(data->bus, iodev_sqe);
2231 * Include High-Data-Rate (HDR) inline helper functions