Lines Matching full:i3c

12  * @brief I3C Interface
13 * @defgroup i3c_interface I3C Interface
25 #include <zephyr/drivers/i3c/addresses.h>
26 #include <zephyr/drivers/i3c/ccc.h>
27 #include <zephyr/drivers/i3c/devicetree.h>
28 #include <zephyr/drivers/i3c/ibi.h>
43 * - 0: I3C Target
44 * - 1: I3C Controller capable
58 * - 0: Will always response to I3C commands.
59 * - 1: Will not always response to I3C commands.
102 * 0 - Will always respond to I3C commands.
103 * 1 - Will not always respond to I3C commands.
124 /** Device Role - I3C Target. */
127 /** Device Role - I3C Controller Capable. */
224 * @brief I3C bus mode
227 /** Only I3C devices are on the bus. */
231 * Both I3C and legacy I2C devices are on the bus.
237 * Both I3C and legacy I2C devices are on the bus.
244 * Both I3C and legacy I2C devices are on the bus.
255 * @brief I2C bus speed under I3C bus.
257 * Only FM and FM+ modes are supported for I2C devices under I3C bus.
271 * @brief I3C data rate
273 * I3C data transfer rate defined by the I3C specification.
296 * @brief I3C SDR Controller Error Codes
298 * These are error codes defined by the I3C specification.
303 * interactions with the I3C drivers and subsystem.
329 * @brief I3C SDR Target Error Codes
331 * These are error codes defined by the I3C specification.
336 * interactions with the I3C drivers and subsystem.
377 * @brief I3C Transfer API
378 * @defgroup i3c_transfer_api I3C Transfer API
383 * I3C_MSG_* are I3C Message flags.
386 /** Write message to I3C bus. */
389 /** Read message from I3C bus. */
400 * RESTART I3C transaction for this message.
402 * @note Not all I3C drivers have or require explicit support for this
413 /** Skip I3C broadcast header. Private Transfers only. */
416 /** I3C HDR Mode 0 */
419 /** I3C HDR Mode 1 */
422 /** I3C HDR Mode 2 */
425 /** I3C HDR Mode 3 */
428 /** I3C HDR Mode 4 */
431 /** I3C HDR Mode 5 */
434 /** I3C HDR Mode 6 */
437 /** I3C HDR Mode 7 */
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) */
460 * @brief One I3C Message.
462 * This defines one I3C message to transact on the I3C bus.
465 * supported by specific SoC I3C hardware implementations, in
516 * @brief Configuration parameters for I3C hardware to act as controller.
526 /** SCL frequency (in Hz) for I3C transfers. */
527 uint32_t i3c; member
543 * @brief Custom I3C configuration parameters.
545 * This can be used to configure the I3C hardware on parameters
547 * Mostly used to configure vendor specific parameters of the I3C
592 * Configure the I3C hardware.
607 * Get configuration of the I3C hardware.
635 * I3C Device Attach
650 * I3C Address Update
667 * I3C Device Detach
740 * Transfer messages in I3C mode.
746 * @param msg Pointer to I3C messages.
757 * Find a registered I3C target device.
761 * This returns the I3C device descriptor of the I3C device
765 * @param id Pointer to I3C device ID.
821 * on the I3C bus.
828 * @param cfg I3C target device configuration
839 * on the I3C bus.
846 * @param cfg I3C target device configuration
893 * @brief Structure used for matching I3C devices.
914 * @brief Structure describing a I3C target device.
916 * Instances of this are passed to the I3C controller device APIs,
924 * to I3C controller device APIs. #static_addr can be zero if target device does
932 /** I3C bus to which this target device is attached */
935 /** Device driver instance of the I3C device */
1041 * I3C v1.0 HDR Capabilities (@c I3C_CCC_GETCAPS1_*)
1050 * I3C v1.1+ GETCAPS1 (@c I3C_CCC_GETCAPS1_*)
1062 * - Bit[3:0]: I3C 1.x Specification Version
1106 * @brief Structure describing a I2C device on I3C bus.
1108 * Instances of this are passed to the I3C controller device APIs,
1116 * reference to I3C controller device APIs.
1121 /** I3C bus to which this I2C device is attached */
1144 * This contains slists of attached I3C and I2C devices.
1154 * a I3C or I2C device.
1160 * Linked list of attached I3C devices.
1162 sys_slist_t i3c; member
1174 * This contains arrays of known I3C and I2C devices.
1181 * Pointer to array of known I3C devices.
1183 struct i3c_device_desc * const i3c; member
1191 * Number of I3C devices in array.
1202 * This structure is common to all I3C drivers and is expected to be
1207 /** I3C/I2C device list struct. */
1212 * This structure is common to all I3C drivers and is expected to be the first
1219 /** Attached I3C/I2C devices and addresses */
1224 * @brief iterate over all I3C devices present on the bus
1226 * @param bus: the I3C bus device pointer
1227 * @param desc: an I3C device descriptor pointer updated to point to the current slot
1232 &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i3c, desc, node)
1237 * @param bus: the I3C bus device pointer
1246 * @brief Find a I3C target device descriptor by ID.
1248 * This finds the I3C target device descriptor in the device list
1252 * @param id Pointer to I3C device ID struct.
1254 * @return Pointer to the I3C target device descriptor, or
1261 * @brief Find a I3C target device descriptor by dynamic address.
1263 * This finds the I3C target device descriptor in the attached
1269 * @return Pointer to the I3C target device descriptor, or
1349 * @brief Configure the I3C hardware.
1375 * @brief Get configuration of the I3C hardware.
1377 * This provides a way to get the current configuration of the I3C hardware.
1408 * @brief Attempt bus recovery on the I3C bus.
1430 * @brief Attach an I3C device
1432 * Called to attach a I3C device to the addresses. This is
1438 * Use cases involving multiple writers to the i3c/i2c devices must prevent
1440 * being preempted or by using a mutex to govern writes to the i3c/i2c devices.
1451 * @brief Reattach I3C device
1453 * called after every time an I3C device has its address
1463 * Use cases involving multiple writers to the i3c/i2c devices must prevent
1465 * being preempted or by using a mutex to govern writes to the i3c/i2c devices.
1477 * @brief Detach I3C Device
1479 * called to remove an I3C device and to free up the address
1486 * Use cases involving multiple writers to the i3c/i2c devices must prevent
1488 * being preempted or by using a mutex to govern writes to the i3c/i2c devices.
1505 * Use cases involving multiple writers to the i3c/i2c devices must prevent
1507 * being preempted or by using a mutex to govern writes to the i3c/i2c devices.
1525 * Use cases involving multiple writers to the i3c/i2c devices must prevent
1527 * being preempted or by using a mutex to govern writes to the i3c/i2c devices.
1537 * @brief Perform Dynamic Address Assignment on the I3C bus.
1606 * @brief Perform data transfer from the controller to a I3C target device.
1623 * @param target I3C target device descriptor.
1646 * Find a registered I3C target device.
1650 * This returns the I3C device descriptor of the I3C device
1654 * @param id Pointer to I3C device ID.
1656 * @return Pointer to I3C device descriptor, or `NULL` if
1657 * no I3C device found matching incoming @p id.
1708 * @param target I3C target device descriptor.
1734 * @param target I3C target device descriptor.
1811 * @brief Write a set amount of data to an I3C target device.
1815 * @param target I3C target device descriptor.
1838 * @brief Read a set amount of data from an I3C target device.
1842 * @param target I3C target device descriptor.
1865 * @brief Write then read data from an I3C target device.
1871 * @param target I3C target device descriptor.
1903 * @brief Read multiple bytes from an internal address of an I3C target device.
1906 * I3C target device synchronously.
1910 * @param target I3C target device descriptor,
1930 * @brief Write multiple bytes to an internal address of an I3C target device.
1933 * I3C target device synchronously.
1936 * supported on all I3C devices. Uses of this API may be made more
1940 * @param target I3C target device descriptor.
1972 * @brief Read internal register of an I3C target device.
1974 * This routine reads the value of an 8-bit internal register of an I3C target
1977 * @param target I3C target device descriptor.
1994 * @brief Write internal register of an I3C target device.
1996 * This routine writes a value to an 8-bit internal register of an I3C target
2002 * @param target I3C target device descriptor.
2019 * @brief Update internal register of an I3C target device.
2022 * register of an I3C target device synchronously.
2027 * @param target I3C target device descriptor.
2057 * @brief Dump out an I3C message
2059 * Dumps out a list of I3C messages. For any that are writes (W), the data is
2065 * D: I3C msg: testing, addr=56
2078 * @param target I3C target device descriptor.
2089 * @param i3c_dev_list Pointer to I3C device list.
2117 * @param[in,out] target I3C target device descriptor.
2159 * This implementation will schedule a blocking I3C transaction on the bus via the RTIO work
2160 * queue. It is only used if the I3C driver did not implement the iodev_submit function.
2162 * @param dev Pointer to the device structure for an I3C controller driver.
2169 * @brief Submit request(s) to an I3C device with RTIO
2211 * @param num_msgs Number of i3c msgs in array
2228 #include <zephyr/drivers/i3c/target_device.h>
2233 #include <zephyr/drivers/i3c/hdr_ddr.h>
2243 #include <zephyr/syscalls/i3c.h>