Hi NV team,
On our current hardware design, the GMSL deserializer is connected to i2c-2. On this bus, an INA3221 power monitor is already present at address 0x40, which is the same as the default I2C address of our GMSL serializer.
- JetPack 7.2.1
- Custom Carrier board
- GMSL deserializer / serializer: MAX96724 / MAX9217
Under the Argus/tegracam architecture, we can work around this by sending a command to 0x40 to change the serializer to another (virtual) address. However, since both devices respond at 0x40, the INA3221 also receives writes that are meant for the serializer, so unintended values are written into its registers (e.g. configuration / critical and warning limits). We consider this an operational risk to the system, especially if the INA3221 alert pins are used for power/over-current protection. [Please confirm/modify whether alert pins are connected on your board.]
The hardware design is already finalized, so we would like to avoid a board respin if possible.
Questions
- Is there any way to change the INA3221 I2C address by software? Our understanding is that the address is determined only by the A0 pin strapping (GND/VS/SDA/SCL) ?
- Is there a recommended I2C bus on Jetson dedicated to GMSL / camera devices? Is i2c-9 (CAM_I2C) the intended bus for this purpose, and is i2c-2 (gen2_i2c) intended only for general system peripherals?
- If we do not change the main board design, is it feasible to add an I2C mux on the GMSL adapter board, on the i2c-9 side, to replace the i2c-2 connection? Are there any known limitations when using i2c-mux child buses with the Argus / tegracam / SIPL driver framework (device tree parent adapter, bus numbering, etc.)?
- Are there any other recommended approaches to avoid the conflict (for example, configuring the serializer’s default address via CFG pin strapping, or any NVIDIA-recommended reference design)?
Thank you for your help.