Lines Matching +full:- +full:- +full:merge +full:- +full:mode +full:- +full:functions

5  * SPDX-License-Identifier: Apache-2.0
43 * - BCR[7:6]: Device Role
44 * - 0: I3C Target
45 * - 1: I3C Controller capable
46 * - 2: Reserved
47 * - 3: Reserved
49 * - BCR[5]: Advanced Capabilities
50 * - 0: Does not support optional advanced capabilities.
51 * - 1: Supports optional advanced capabilities which
54 * - BCR[4]: Virtual Target Support
55 * - 0: Is not a virtual target.
56 * - 1: Is a virtual target.
58 * - BCR[3]: Offline Capable
59 * - 0: Will always response to I3C commands.
60 * - 1: Will not always response to I3C commands.
62 * - BCR[2]: IBI Payload
63 * - 0: No data bytes following the accepted IBI.
64 * - 1: One data byte (MDB, Mandatory Data Byte) follows
68 * - BCR[1]: IBI Request Capable
69 * - 0: Not capable
70 * - 1: Capable
72 * - BCR[0]: Max Data Speed Limitation
73 * - 0: No Limitation
74 * - 1: Limitation obtained via GETMXDS CCC.
83 * 0 - No Limitation.
84 * 1 - Limitation obtained via GETMXDS CCC.
94 * 0 - No data bytes following the accepted IBI.
95 * 1 - One data byte (MDB, Mandatory Data Byte) follows the accepted IBI.
103 * 0 - Will always respond to I3C commands.
104 * 1 - Will not always respond to I3C commands.
111 * 0 - Is not a virtual target.
112 * 1 - Is a virtual target.
119 * 0 - Does not support optional advanced capabilities.
120 * 1 - Supports optional advanced capabilities which can be viewed via
125 /** Device Role - I3C Target. */
128 /** Device Role - I3C Controller Capable. */
151 * - LVR[7:5]: I2C device index:
152 * - 0: I2C device has a 50 ns spike filter where
154 * - 1: I2C device does not have a 50 ns spike filter
156 * - 2: I2C device does not have a 50 ns spike filter
158 * - LVR[4]: I2C mode indicator:
159 * - 0: FM+ mode
160 * - 1: FM mode
161 * - LVR[3:0]: Reserved.
166 /** I2C FM+ Mode. */
169 /** I2C FM Mode. */
172 /** I2C Mode Indicator bitmask. */
176 * @brief I2C Mode
178 * Obtain I2C Mode value from the LVR value.
225 * @brief I3C bus mode
261 /** I2C FM mode */
264 /** I2C FM+ mode */
280 /** High Data Rate - Double Data Rate messaging */
283 /** High Data Rate - Ternary Symbol Legacy-inclusive-Bus */
286 /** High Data Rate - Ternary Symbol for Pure Bus */
289 /** High Data Rate - Bulk Transport */
324 * that follows a write, or vice-versa. Some drivers will merge
330 /** Transfer use HDR mode */
336 /** I3C HDR Mode 0 */
339 /** I3C HDR Mode 1 */
342 /** I3C HDR Mode 2 */
345 /** I3C HDR Mode 3 */
348 /** I3C HDR Mode 4 */
351 /** I3C HDR Mode 5 */
354 /** I3C HDR Mode 6 */
357 /** I3C HDR Mode 7 */
360 /** I3C HDR-DDR (Double Data Rate) */
363 /** I3C HDR-TSP (Ternary Symbol Pure-bus) */
366 /** I3C HDR-TSL (Ternary Symbol Legacy-inclusive-bus) */
369 /** I3C HDR-BT (Bulk Transport) */
421 * HDR mode (@c I3C_MSG_HDR_MODE*) for transfer
424 * Use SDR mode if none is set.
428 /** HDR command code field (7-bit) for HDR-DDR, HDR-TSP and HDR-TSL */
462 * Bit mask of supported HDR modes (0 - 7).
464 * This can be used to enable or disable HDR mode
669 * Transfer messages in I3C mode.
715 * Raise In-Band Interrupt (IBI).
807 * @param hdr_mode HDR mode
878 * - i3c_device_register() to tell the controller of a target device.
879 * - i3c_transfers() to initiate data transfers between controller and
918 * This is specified in the device tree property "assigned-address"
939 * - During Dynamic Address Assignment (during ENTDAA)
940 * - Reset Dynamic Address Assignment (RSTDAA)
941 * - Set All Addresses to Static Addresses (SETAASA)
942 * - Set New Dynamic Address (SETNEWDA)
943 * - Set Dynamic Address from Static Address (SETDASA)
952 * - Reset Group Address(es) (RSTGRPA)
953 * - Set Group Address (SETGRPA)
1005 * - Bit[0]: HDR-DDR
1006 * - Bit[1]: HDR-TSP
1007 * - Bit[2]: HDR-TSL
1008 * - Bit[7:3]: Reserved
1014 * - Bit[0]: HDR-DDR
1015 * - Bit[1]: HDR-TSP
1016 * - Bit[2]: HDR-TSL
1017 * - Bit[3]: HDR-BT
1018 * - Bit[7:4]: Reserved
1025 * - Bit[3:0]: I3C 1.x Specification Version
1026 * - Bit[5:4]: Group Address Capabilities
1027 * - Bit[6]: HDR-DDR Write Abort
1028 * - Bit[7]: HDR-DDR Abort CRC
1034 * - Bit[0]: Multi-Lane (ML) Data Transfer Support
1035 * - Bit[1]: Device to Device Transfer (D2DXFER) Support
1036 * - Bit[2]: Device to Device Transfer (D2DXFER) IBI Capable
1037 * - Bit[3]: Defining Byte Support in GETCAPS
1038 * - Bit[4]: Defining Byte Support in GETSTATUS
1039 * - Bit[5]: HDR-BT CRC-32 Support
1040 * - Bit[6]: IBI MDB Support for Pending Read Notification
1041 * - Bit[7]: Reserved
1047 * - Bit[7:0]: Reserved
1056 * - Bit[0]: Hot-Join Support
1057 * - Bit[1]: Group Management Support
1058 * - Bit[2]: Multi-Lane Support
1059 * - Bit[7:3]: Reserved
1065 * - Bit[0]: In-Band Interrupt Support
1066 * - Bit[1]: Controller Pass-Back
1067 * - Bit[2]: Deep Sleep Capable
1068 * - Bit[3]: Delayed Controller Handoff
1069 * - Bit[7:4]: Reserved
1083 * In-Band Interrupt (IBI) callback.
1137 * - Aid in dynamic address assignment.
1138 * - Quick way to find out if a target address is
1223 &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i3c, desc, node)
1234 &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i2c, desc, node)
1303 * a preferred address (i.e. assigned-address in device tree,
1321 * device (for example, hot-join after device coming back from
1341 * @retval -ENODEV if no device matches the PID (@p pid) in
1343 * @retval -EINVAL if the device matching PID (@p pid) already
1363 * @retval -EINVAL If invalid configure parameters.
1364 * @retval -EIO General Input/Output errors.
1365 * @retval -ENOSYS If not implemented.
1371 (const struct i3c_driver_api *)dev->api; in i3c_configure()
1373 if (api->configure == NULL) { in i3c_configure()
1374 return -ENOSYS; in i3c_configure()
1377 return api->configure(dev, type, config); in i3c_configure()
1384 * I3C controller device. It is a type-safe wrapper around @ref i3c_config_get
1392 * @retval -EIO General Input/Output errors.
1393 * @retval -ENOSYS If not implemented.
1405 * I3C target device. It is a type-safe wrapper around @ref i3c_config_get
1413 * @retval -EIO General Input/Output errors.
1414 * @retval -ENOSYS If not implemented.
1439 * @retval -EIO General Input/Output errors.
1440 * @retval -ENOSYS If not implemented.
1446 (const struct i3c_driver_api *)dev->api; in i3c_config_get()
1448 if (api->config_get == NULL) { in i3c_config_get()
1449 return -ENOSYS; in i3c_config_get()
1452 return api->config_get(dev, type, config); in i3c_config_get()
1459 * I3C controller device. It is a type-safe wrapper around @ref i3c_config_get
1467 * @retval -EIO General Input/Output errors.
1468 * @retval -ENOSYS If not implemented.
1480 * I3C target device. It is a type-safe wrapper around @ref i3c_config_get
1488 * @retval -EIO General Input/Output errors.
1489 * @retval -ENOSYS If not implemented.
1503 * @retval -EBUSY If bus recovery fails.
1504 * @retval -EIO General input / output error.
1505 * @retval -ENOSYS Bus recovery is not supported by the controller driver.
1510 (const struct i3c_driver_api *)dev->api; in i3c_recover_bus()
1512 if (api->recover_bus == NULL) { in i3c_recover_bus()
1513 return -ENOSYS; in i3c_recover_bus()
1516 return api->recover_bus(dev); in i3c_recover_bus()
1535 * @retval -EINVAL If address is not available or if the device
1562 * @retval -EINVAL If address is not available
1583 * @retval -EINVAL If device is already detached
1602 * @retval -EINVAL If address is not available or if the device
1622 * @retval -EINVAL If device is already detached
1641 * @retval -EBUSY Bus is busy.
1642 * @retval -EIO General input / output error.
1643 * @retval -ENODEV If a provisioned ID does not match to any target devices
1645 * @retval -ENOSPC No more free addresses can be assigned to target.
1646 * @retval -ENOSYS Dynamic address assignment is not supported by
1652 (const struct i3c_driver_api *)dev->api; in i3c_do_daa()
1654 if (api->do_daa == NULL) { in i3c_do_daa()
1655 return -ENOSYS; in i3c_do_daa()
1658 return api->do_daa(dev); in i3c_do_daa()
1669 * @retval -EBUSY Bus is busy.
1670 * @retval -EIO General Input / output error.
1671 * @retval -EINVAL Invalid valid set in the payload structure.
1672 * @retval -ENOSYS Not implemented.
1681 (const struct i3c_driver_api *)dev->api; in z_impl_i3c_do_ccc()
1683 if (api->do_ccc == NULL) { in z_impl_i3c_do_ccc()
1684 return -ENOSYS; in z_impl_i3c_do_ccc()
1687 return api->do_ccc(dev, payload); in z_impl_i3c_do_ccc()
1711 * limitations on support for multi-message bus transactions.
1718 * @retval -EBUSY Bus is busy.
1719 * @retval -EIO General input / output error.
1728 (const struct i3c_driver_api *)target->bus->api; in z_impl_i3c_transfer()
1730 return api->i3c_xfers(target->bus, target, msgs, num_msgs); in z_impl_i3c_transfer()
1754 (const struct i3c_driver_api *)dev->api; in i3c_device_find()
1756 if (api->i3c_device_find == NULL) { in i3c_device_find()
1760 return api->i3c_device_find(dev, id); in i3c_device_find()
1772 * In-Band Interrupt Hot-Join Requests.
1778 * @retval -EIO General input / output error.
1784 (const struct i3c_driver_api *)dev->api; in i3c_ibi_hj_response()
1786 if (api->ibi_hj_response == NULL) { in i3c_ibi_hj_response()
1787 return -ENOSYS; in i3c_ibi_hj_response()
1790 return api->ibi_hj_response(dev, ack); in i3c_ibi_hj_response()
1794 * @brief Raise an In-Band Interrupt (IBI).
1796 * This raises an In-Band Interrupt (IBI) to the active controller.
1802 * @retval -EIO General input / output error.
1808 (const struct i3c_driver_api *)dev->api; in i3c_ibi_raise()
1810 if (api->ibi_raise == NULL) { in i3c_ibi_raise()
1811 return -ENOSYS; in i3c_ibi_raise()
1814 return api->ibi_raise(dev, request); in i3c_ibi_raise()
1826 * @retval -EIO General Input / output error.
1827 * @retval -ENOMEM If these is no more empty entries in
1834 (const struct i3c_driver_api *)target->bus->api; in i3c_ibi_enable()
1836 if (api->ibi_enable == NULL) { in i3c_ibi_enable()
1837 return -ENOSYS; in i3c_ibi_enable()
1840 return api->ibi_enable(target->bus, target); in i3c_ibi_enable()
1852 * @retval -EIO General Input / output error.
1853 * @retval -ENODEV If IBI is not previously enabled for @p target.
1858 (const struct i3c_driver_api *)target->bus->api; in i3c_ibi_disable()
1860 if (api->ibi_disable == NULL) { in i3c_ibi_disable()
1861 return -ENOSYS; in i3c_ibi_disable()
1864 return api->ibi_disable(target->bus, target); in i3c_ibi_disable()
1880 return (target->bcr & I3C_BCR_IBI_PAYLOAD_HAS_DATA_BYTE) in i3c_ibi_has_payload()
1897 return (target->bcr & I3C_BCR_IBI_REQUEST_CAPABLE) in i3c_device_is_ibi_capable()
1914 return I3C_BCR_DEVICE_ROLE(target->bcr) in i3c_device_is_controller_capable()
1935 * @retval -EBUSY Bus is busy.
1936 * @retval -EIO General input / output error.
1962 * @retval -EBUSY Bus is busy.
1963 * @retval -EIO General input / output error.
1983 * it to me" transaction pair through a combined write-then-read bus
1993 * @retval -EBUSY Bus is busy.
1994 * @retval -EIO General input / output error.
2031 * @retval -EBUSY Bus is busy.
2032 * @retval -EIO General input / output error.
2061 * @retval -EBUSY Bus is busy.
2062 * @retval -EIO General input / output error.
2089 * This routine reads the value of an 8-bit internal register of an I3C target
2097 * @retval -EBUSY Bus is busy.
2098 * @retval -EIO General input / output error.
2111 * This routine writes a value to an 8-bit internal register of an I3C target
2122 * @retval -EBUSY Bus is busy.
2123 * @retval -EIO General input / output error.
2136 * This routine updates the value of a set of bits from an 8-bit internal
2148 * @retval -EBUSY Bus is busy.
2149 * @retval -EIO General input / output error.
2207 * @retval -EBUSY Bus is busy.
2208 * @retval -EIO General input / output error.
2209 * @retval -ENODEV If a provisioned ID does not match to any target devices
2211 * @retval -ENOSPC No more free addresses can be assigned to target.
2212 * @retval -ENOSYS Dynamic address assignment is not supported by
2233 * @retval -EIO General Input/Output error.
2257 * @retval -EIO General Input/Output error.
2280 * @retval -EIO General Input/Output error.
2314 * @retval -ENOMEM No memory to build the payload.
2315 * @retval -EIO General Input/Output error.
2341 * @retval -EIO General Input/Output error.
2342 * @retval -EBUSY Target cannot accept Controller Handoff
2493 (const struct i3c_iodev_data *)iodev_sqe->sqe.iodev->data; in i3c_iodev_submit()
2494 const struct i3c_driver_api *api = (const struct i3c_driver_api *)data->bus->api; in i3c_iodev_submit()
2496 if (api->iodev_submit == NULL) { in i3c_iodev_submit()
2497 rtio_iodev_sqe_err(iodev_sqe, -ENOSYS); in i3c_iodev_submit()
2500 api->iodev_submit(data->bus, iodev_sqe); in i3c_iodev_submit()
2547 * Include High-Data-Rate (HDR) inline helper functions