GPIO3 PEE.04 Not Working After System Resume
Issue Overview
Users are experiencing issues with the GPIO3 PEE.04 pin on the Nvidia Jetson Orin Nano Dev board, specifically related to its functionality after the system resumes from a suspended state. The power button, which is designed to trigger an interrupt via GPIO3 PEE.04, works correctly during normal operation but fails to generate interrupts after the system resumes from suspension. This issue was reported while using L4T 35.5, and the relevant device tree configuration indicates that the GPIO is set up to be active low and configured for wakeup events.
The symptoms include:
- No interrupts are registered when the power button is pressed after system resume.
- The Power Off window does not appear upon pressing the power button post-resume.
- The issue appears consistently after resuming from suspend.
The impact of this problem significantly affects user experience, as it renders the power button non-functional after waking up from sleep mode.
Possible Causes
Several potential causes for this issue have been identified:
-
Hardware Incompatibilities or Defects: The custom carrier board’s design may not fully support the GPIO functionality as intended.
-
Software Bugs or Conflicts: A known issue in the SC7 binary has been reported, which could affect GPIO behavior post-resume.
-
Configuration Errors: Incorrect settings in the device tree configuration might lead to improper handling of GPIO interrupts.
-
Driver Issues: Outdated or incompatible drivers may fail to handle GPIO states correctly after a resume.
-
Environmental Factors: Power supply inconsistencies or temperature variations could affect GPIO performance.
-
User Errors or Misconfigurations: Incorrect wiring or setup of the power button on the custom carrier board could lead to these issues.
Troubleshooting Steps, Solutions & Fixes
To address the issue with GPIO3 PEE.04 not functioning after system resume, follow these troubleshooting steps:
-
Check Device Tree Configuration:
- Verify that the device tree configuration for GPIO3 PEE.04 is correct and matches expected settings.
- Ensure that
gpio-key,wakeup
is properly defined forpower_key
.
-
Monitor Interrupts Before and After Suspend:
- Use the following command to monitor interrupts before and after suspend:
sudo cat /proc/interrupts | grep power-key
- Compare outputs to identify changes in interrupt counts.
- Use the following command to monitor interrupts before and after suspend:
-
Inspect Kernel Messages:
- Check
dmesg
logs for any errors or warnings related to GPIO operations after resume:dmesg | grep gpio
- Check
-
Manual Register Modification:
- As a temporary workaround, manually modify the register after resume to re-enable interrupts:
busybox devmem 0x0c2f1080 0x000000ED
- This command restores the register value to its normal state before suspend.
- As a temporary workaround, manually modify the register after resume to re-enable interrupts:
-
Test with Different GPIO Pins:
- If possible, wire the power button to a different GPIO pin (if available) to determine if the issue is specific to PEE.04.
-
Update Software and Drivers:
- Ensure that you are using the latest version of L4T and JetPack SDK. Check for updates that may address known issues with GPIO functionality.
-
Reflash with Stable Versions:
- If using a developer preview version of JetPack, consider reflashing with a stable release such as JetPack 5.x instead of JetPack 6.x, which may still be in preview stages.
-
Contact Support for Known Issues:
- Reach out to Nvidia support or check forums for any updates regarding known issues with SC7 binaries affecting GPIO functionality.
-
Best Practices for Future Prevention:
- Regularly update your software environment and monitor Nvidia forums for any reported issues related to your hardware setup.
- Ensure proper power management practices are followed when designing custom carrier boards.
By following these steps, users should be able to diagnose and potentially resolve issues with GPIO3 PEE.04 functionality after system resume on their Nvidia Jetson Orin Nano Dev board.