Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Structure describing a I3C target device. More...
#include <i3c.h>
Data Fields | ||
const struct device *const | bus | |
Used to attach this node onto a linked list. | ||
const struct device *const | dev | |
Device driver instance of the I3C device. | ||
const uint64_t | pid:48 | |
Device Provisioned ID. | ||
const uint8_t | static_addr | |
Static address for this target device. | ||
const uint8_t | init_dynamic_addr | |
Initial dynamic address. | ||
uint8_t | dynamic_addr | |
Dynamic Address for this target device used for communication. | ||
uint8_t | group_addr | |
Group address for this target device. | ||
uint8_t | bcr | |
Bus Characteristic Register (BCR) | ||
uint8_t | dcr | |
Device Characteristic Register (DCR) | ||
struct { | ||
uint8_t maxrd | ||
Maximum Read Speed. More... | ||
uint8_t maxwr | ||
Maximum Write Speed. More... | ||
uint32_t max_read_turnaround | ||
Maximum Read turnaround time in microseconds. More... | ||
} | data_speed | |
struct { | ||
uint16_t mrl | ||
Maximum Read Length. More... | ||
uint16_t mwl | ||
Maximum Write Length. More... | ||
uint8_t max_ibi | ||
Maximum IBI Payload Size. More... | ||
} | data_length | |
struct { | ||
union { | ||
uint8_t gethdrcap | ||
I3C v1.0 HDR Capabilities (I3C_CCC_GETCAPS1_* ) More... | ||
uint8_t getcap1 | ||
I3C v1.1+ GETCAPS1 (I3C_CCC_GETCAPS1_* ) More... | ||
} | ||
uint8_t getcap2 | ||
GETCAPS2 (I3C_CCC_GETCAPS2_* ) More... | ||
uint8_t getcap3 | ||
GETCAPS3 (I3C_CCC_GETCAPS3_* ) More... | ||
uint8_t getcap4 | ||
GETCAPS4. More... | ||
} | getcaps | |
Describes advanced (Target) capabilities and features. | ||
i3c_target_ibi_cb_t | ibi_cb | |
Private data by the controller to aid in transactions. | ||
Structure describing a I3C target device.
Instances of this are passed to the I3C controller device APIs, for example:
Fields bus
, pid
and static_addr
must be initialized by the module that implements the target device behavior prior to passing the object reference to I3C controller device APIs. static_addr
can be zero if target device does not have static address.
Field node
should not be initialized or modified manually.
uint8_t i3c_device_desc::bcr |
Bus Characteristic Register (BCR)
const struct device* const i3c_device_desc::bus |
Used to attach this node onto a linked list.
I3C bus to which this target device is attached
struct { ... } i3c_device_desc::data_length |
struct { ... } i3c_device_desc::data_speed |
uint8_t i3c_device_desc::dcr |
Device Characteristic Register (DCR)
Describes the type of device. Refer to official documentation on what this number means.
const struct device* const i3c_device_desc::dev |
Device driver instance of the I3C device.
uint8_t i3c_device_desc::dynamic_addr |
Dynamic Address for this target device used for communication.
This is to be set by the controller driver in one of the following situations:
0 if address has not been assigned.
uint8_t i3c_device_desc::getcap1 |
I3C v1.1+ GETCAPS1 (I3C_CCC_GETCAPS1_*
)
uint8_t i3c_device_desc::getcap2 |
GETCAPS2 (I3C_CCC_GETCAPS2_*
)
uint8_t i3c_device_desc::getcap3 |
GETCAPS3 (I3C_CCC_GETCAPS3_*
)
uint8_t i3c_device_desc::getcap4 |
GETCAPS4.
struct { ... } i3c_device_desc::getcaps |
Describes advanced (Target) capabilities and features.
uint8_t i3c_device_desc::gethdrcap |
I3C v1.0 HDR Capabilities (I3C_CCC_GETCAPS1_*
)
uint8_t i3c_device_desc::group_addr |
Group address for this target device.
Set during:
0 if group address has not been assigned.
i3c_target_ibi_cb_t i3c_device_desc::ibi_cb |
Private data by the controller to aid in transactions.
Do not modify. In-Band Interrupt (IBI) callback.
const uint8_t i3c_device_desc::init_dynamic_addr |
Initial dynamic address.
This is specified in the device tree property "assigned-address" to indicate the desired dynamic address during address assignment (SETDASA and ENTDAA).
0 if there is no preference.
uint8_t i3c_device_desc::max_ibi |
Maximum IBI Payload Size.
Valid only if BCR[2] is 1.
uint32_t i3c_device_desc::max_read_turnaround |
Maximum Read turnaround time in microseconds.
uint8_t i3c_device_desc::maxrd |
Maximum Read Speed.
uint8_t i3c_device_desc::maxwr |
Maximum Write Speed.
uint16_t i3c_device_desc::mrl |
Maximum Read Length.
uint16_t i3c_device_desc::mwl |
Maximum Write Length.
const uint64_t i3c_device_desc::pid |
Device Provisioned ID.
const uint8_t i3c_device_desc::static_addr |
Static address for this target device.
0 if static address is not being used, and only dynamic address is used. This means that the target device must go through ENTDAA (Dynamic Address Assignment) to get a dynamic address before it can communicate with the controller. This means SETAASA and SETDASA CCC cannot be used to set dynamic address on the target device (as both are to tell target device to use static address as dynamic address).