Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Structure describing a I3C target device. More...
#include <i3c.h>
Data Fields | ||
sys_snode_t | node | |
const struct device *const | bus | |
I3C bus to which this target device is attached. | ||
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. | ||
const bool | supports_setaasa | |
Device support for SETAASA. | ||
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 | |
In-Band Interrupt (IBI) callback. | ||
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.
Internal field node
should not be initialized or modified manually.
const struct device* const i3c_device_desc::bus |
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. Only available if
CONFIG_I3C_USE_GROUP_ADDR
is set.
i3c_target_ibi_cb_t i3c_device_desc::ibi_cb |
In-Band Interrupt (IBI) callback.
Only available if
CONFIG_I3C_USE_IBI
is set.
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.
sys_snode_t i3c_device_desc::node |
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).
const bool i3c_device_desc::supports_setaasa |
Device support for SETAASA.
This will be used as an optimization for bus initializtion if the device supports SETAASA.