Skip to content

i3c: support expected NACK from target device on data xfer - #117367

Open
dcpleung wants to merge 1 commit into
zephyrproject-rtos:mainfrom
dcpleung:i3c/transfer_return_nodev
Open

i3c: support expected NACK from target device on data xfer#117367
dcpleung wants to merge 1 commit into
zephyrproject-rtos:mainfrom
dcpleung:i3c/transfer_return_nodev

Conversation

@dcpleung

Copy link
Copy Markdown
Member

There are some situations where a NACK is expected from the target after sending the address. One example would be MCTP, where the target would NACK if there is no data to return during polling. This use case is not entirely conforming to traditional I2C/I3C transfer mechanism where a NACK after the address byte means there is no target with this address or the target is not responding to the transfer request. In order to support MCTP, we will need to handle this type of transfer gracefully, by adding a new transfer message flag to indicate this type of transfer. A new return value is also being introduced to i3c_transfer() to signal the expected NACK is received. Since most of the wire interactions are handled by the hardware, each individual driver will need to purposely handle this use case. For now, this commit only introduces the building block needed for the drivers to implement the bits to support this use case.

Relates to #114312

There are some situations where a NACK is expected from
the target after sending the address. One example would be
MCTP, where the target would NACK if there is no data to return
during polling. This use case is not entirely conforming to
traditional I2C/I3C transfer mechanism where a NACK after
the address byte means there is no target with this address
or the target is not responding to the transfer request.
In order to support MCTP, we will need to handle this type of
transfer gracefully, by adding a new transfer message flag to
indicate this type of transfer. A new return value is also
being introduced to i3c_transfer() to signal the expected NACK
is received. Since most of the wire interactions are handled
by the hardware, each individual driver will need to purposely
handle this use case. For now, this commit only introduces
the building block needed for the drivers to implement the bits
to support this use case.

Relates to zephyrproject-rtos#114312

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants