fdtoverlay tool fails with error: FDT_ERR_NOTFOUND on Nvidia Jetson Orin Nano Dev Board
Issue Overview
Users are experiencing an error when attempting to apply a device tree overlay for the Ilitek ILI2511 I2C touchscreen driver on the Nvidia Jetson Orin Nano Dev Board. The specific error message encountered is FDT_ERR_NOTFOUND
when running the fdtoverlay
tool.
Symptoms
- The error occurs during the merging of the overlay with the base device tree.
- Users have confirmed that other overlays can be applied successfully, indicating that the issue is specific to the ILI2511 overlay.
Context
- The problem arises after successfully setting up I2C communication and creating a basic device tree overlay that works correctly.
- The user is operating on Jetpack version 5.1.3-b29 and kernel version 5.10.192-tegra.
Relevant Specifications
- Device Tree Binary (DTB) file:
kernel_tegra234-p3767-0003-p3768-0000-a0-user-custom.dtb
- Overlay files being created:
version-overlay.dtb
andilitek251x-overlay.dtb
- The GPIO pins and their mappings are confirmed to be correct.
Frequency
The issue appears to be consistent when attempting to apply the specific ILI2511 overlay.
Impact
The inability to apply the overlay prevents users from utilizing the touchscreen functionality, significantly affecting their development and testing processes.
Possible Causes
-
Incorrect GPIO Definitions: The error may stem from incorrect property definitions in the device tree, particularly regarding GPIO configurations for interrupts.
-
Overlay Compatibility: There may be compatibility issues between the overlay and the base device tree, particularly if required nodes or properties are missing.
-
Misconfiguration of I2C: Although I2C detection is confirmed, any misconfigurations in addressing or pin assignments could lead to failures in applying overlays.
Troubleshooting Steps, Solutions & Fixes
-
Verify GPIO Definitions:
- Check the GPIO definitions in your overlay file. Ensure that the interrupt-parent and GPIO numbers are correctly defined.
- Example command to check GPIO:
sudo cat /sys/kernel/debug/gpio | grep PY.00
-
Check Overlay Structure:
- Ensure that your overlay structure follows the correct syntax as per documentation. Compare your overlay with working examples from official sources.
-
Simplify Overlay:
- Start with a simpler version of your overlay to isolate which part might be causing the issue. Gradually add complexity back until you identify what breaks it.
-
Test with Different Base DTB:
- If possible, test applying your overlay with a different base DTB to rule out compatibility issues.
-
Use Debugging Tools:
- Utilize tools such as
dtc
(Device Tree Compiler) for validating your DTS files before merging. - Command example:
dtc -I dts -O dtb ilitek251x-overlay.dts -o ilitek251x-overlay.dtb
- Utilize tools such as
-
Review Documentation:
- Refer to relevant documentation for both Nvidia’s device tree bindings and Ilitek’s specifications for any overlooked requirements or properties.
-
Community Support:
- Engage with community forums or support channels for additional insights or similar experiences from other users who might have resolved this issue.
-
Recommended Approach:
- If multiple users report success with simplified overlays or specific GPIO configurations, consider adopting those practices as a starting point for troubleshooting.
Code Snippets
Here is a simplified example of an overlay structure:
/dts-v1/;
/plugin/;
/ {
overlay-name = "ILI2511 I2C Touch Overlay";
compatible = "nvidia,p3768-0000+p3767-0003";
fragment@0 {
target = <&i2c8>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
ili251x: ili251x@41 {
compatible = "ilitek,ili251x";
reg = <0x41>;
interrupt-parent = <&gpio>;
interrupts = <470 2>; // Ensure this is correct
reset-gpios = <&gpio 474 0>; // Ensure this is correct
touchscreen-size-x = <16384>;
touchscreen-size-y = <9600>;
};
};
};
};
Unresolved Aspects
Further investigation may be needed into specific properties required by the Ilitek driver that might not be adequately addressed in the current overlay configuration.