I2C Structure Changes#
i2c_hal.h Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
7.2.2.0 New member 7.2.3.0 A new header file, nvi2c_common.h, is included by i2c_hal.h, which exports I2C_TIMEOUT_INFINITE macro to both HAL and the user. HAL HAL supports timeout and “No timeout” when waiting for HW interrupt. HAL should use the |
No |
NSR, SR |
QNX only |
Migration Path
Dimensity C-X1 to Dimensity C-X1
Migration Release Path
6.x to 7.x
Migration Rationale
Refer to DOS_UREQ_010 in the NVIDIA DriveOS Safety Manual. The customer should handle timeout to avoid an extra kernel call (TimerTimeout())
Steps to Migrate
HAL supports timeoutand “No timeout” when waiting for HW interrupt. HAL should use the interrupt_timeout_ms variable, which Core driver passes, to determine the timeout value.
DCMD_I2C_SEND/DCMD_I2C_RECV/DCMD_I2C_SENDRECV Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
Release 7.2.1.0 added Release 7.2.2.0 allows use of this new timeout variable, input by the I2C user to specify the timeout. You do not want a timeout, set the |
No |
NSR, SR |
QNX only |
Migration Path
Orin to Thor
Release Migration Path
6.x to 7.x
Migration Rationale
The change is for safety and scalability. For additional information, refer to DOS_UREQ_010 in the NVIDIA DRIVE OS Safety Manual.
Steps to Migrate
Add an interrupt_timeout_ms variable in the tail of i2c_send_t/i2c_recv_t/i2c_sendrecv_t struct. The macro I2C_TIMEOUT_INFINITE (0U) is defined in libs/include/nvi2c_devctl.h. If you do not want to set a timeout, assign interrupt_timeout_ms to I2C_TIMEOUT_INFINITE
New nvi2c_common.h Header File#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
Release 7.2.3.0 adds a header file, nvi2c_common.h, which is included by nvi2c_devctl.h and i2c_hal.h |
Yes |
NSR, SR |
QNX only |
Migration Path
Orin to Thor
Release Migration Path
7.0 to 7.2
Migration Rationale
I2C_TIMEOUT_INFINITE should be exposed to partners (i2c_hal.h)
Steps to Migrate
The change to define to define I2C_TIMEOUT_INFINITE does not require action from customers. The macro I2C_TIMEOUT_INFINITE (0U) is defined in libs/include/nvi2c_common.h. If you do not want to set a timeout, assign interrupt_timeout_ms to I2C_TIMEOUT_INFINITE
i2c_send_t, i2c_recv_t, and i2c_sendrecv_t struct Changes#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
In 7.2.1.0: Removed the Added an |
No |
NSR, SR |
QNX only |
Migration Path
Orin to Thor
Migration Rationale
The stop flag was removed from the i2C command. Instead, it is sent at
the end of every i2c devctl call.
Refer to DOS_UREQ_010 in the NVIDIA DriveOS Safety Manual: the
user should handle the timeout
Steps to Migrate
Remove the stop variable in i2c_send_t/i2c_recv_t/i2c_sendrecv_t
struct
Add an interrupt_timeout_ms variable in the tail of
i2c_send_t/i2c_recv_t/i2c_sendrecv_t struct. The macro
I2C_TIMEOUT_INFINITE (0U) is defined in
libs/include/nvi2c_devctl.h. If you do not want to set the timeout,
assign interrupt_timeout_ms to I2C_TIMEOUT_INFINITE.
Warning
interrupt_timeout_ms occupies the same struct slot that
stop previously occupied. Do not leave the field
uninitialized — old code that set stop = 1 will now be
interpreted as a 1 ms timeout, which can produce intermittent
timeout errors that are hard to debug. Either set
interrupt_timeout_ms to a deliberate value or to
I2C_TIMEOUT_INFINITE (0U) when no timeout is required.
I2C/slave_addr Custom-Ability Syntax and @usage Doc Taxonomy#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The documentation contract for the I2C devctl entry points was refreshed:
|
No. Source rebuilds, but runtime behavior changed. |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Aligns with the new ability-grammar across the privilege manager and adds Thor-class platform documentation.
Steps to Migrate
Integrators provisioning the
I2C/slave_addrcustom ability must migrate old-style{List of _slave_address_}entries to the new sub-range value format (0xWXYZ, with optional range syntax).Update any I2C-instance-bound integration assumptions to the wider
[0..16]range when targeting Thor.