Muxing DP1_AUX as I2C on Nvidia Jetson Orin Nano
Issue Overview
Users are experiencing difficulties when attempting to configure the DP1_AUX pins as I2C on the Nvidia Jetson Orin Nano development board. The goal is to enable I2C functionality on pins 98/100 of the Orin Nano. Previous attempts to modify the device tree have resulted in boot failures and kernel panics. This issue is critical for developers who need to use these pins for I2C communication in their projects.
Possible Causes
-
Incorrect device tree modifications: Attempts to change the pinmux configuration in the device tree may be incompatible with the Orin Nano’s hardware or software architecture.
-
Kernel version incompatibility: The method for configuring DP1_AUX as I2C may differ between kernel versions (e.g., 5.10 vs 5.15).
-
Missing or incorrect driver support: The necessary drivers for handling the DP1_AUX to I2C muxing may not be properly implemented or loaded.
-
Hardware limitations: There might be hardware-specific constraints on the Orin Nano that affect the ability to mux DP1_AUX as I2C.
-
Outdated or incompatible JetPack version: The issue may be related to the specific version of JetPack being used, which could lack proper support for this functionality.
Troubleshooting Steps, Solutions & Fixes
-
Update the device tree with the correct configuration:
Add a new node "miscreg-dpaux@00100000" instead of modifying the original "miscreg" node. Use the following device tree snippet:miscreg-dpaux@00100000 { compatible = "nvidia,tegra194-misc-dpaux-padctl"; reg = <0x0 0x00100000 0x0 0xf000>; dpaux_default: pinmux@0 { dpaux0_pins { pins = "dpaux-0"; function = "i2c"; }; }; }; i2c@31b0000 { pinctrl-names = "default"; pinctrl-0 = <&dpaux_default>; };
-
Ensure you’re using the correct kernel version:
- For Jetpack 5 (kernel 5.10), use:
compatible = "nvidia,tegra194-misc-dpaux-padctl";
- For Jetpack 6 (kernel 5.15), use:
compatible = "nvidia,tegra234-misc-dpaux-padctl";
- For Jetpack 5 (kernel 5.10), use:
-
Compile and update the device tree:
- Compile the device tree using the
dtbs
make target in the kernel build directory. - Set the
ARCH
,LOCALVERSION
, andCROSS_COMPILE
variables appropriately. - Copy the resulting
.dtb
file to the Jetson Orin Nano.
- Compile the device tree using the
-
Use a dual-boot configuration for testing:
- Set up an extlinux config with two entries: one with a known working configuration and another for testing.
- This allows for easy recovery if the new configuration fails to boot.
-
Verify the changes:
- After successfully booting with the new configuration, use
dtc
to dump the device tree and confirm the changes are present.
- After successfully booting with the new configuration, use
-
Check for kernel messages:
- Monitor the kernel boot log for any warnings or errors related to the DPAUX or I2C configuration.
- Look for messages from the
tegra-apbmisc
driver, which handles chip ID and strap readings.
-
If issues persist:
- Ensure you’re using the latest JetPack version compatible with your Orin Nano.
- Check for any available updates or patches from Nvidia that might address this issue.
- Consider reaching out to Nvidia developer support with detailed logs and your exact hardware and software configuration.
By following these steps, you should be able to successfully configure the DP1_AUX pins as I2C on your Nvidia Jetson Orin Nano. If you encounter any further issues, double-check your device tree modifications and ensure all other aspects of your system are properly configured.