I haven't been very productive in the past few weeks. This was mostly due to me being a bit frozen with my eDP issues. I'm hesitant to move forward with the PCB design before this issue isn't fully understood.
Getting the display to work is quite important to me and right now I'm not able to debug why the seemingly same circuit, layed out with the same guidelines I used previously is giving me these issues. At the moment I'm reliant on Nvidia's support as I have no real starting point for debugging the issue atm. The pace picked up a bit on their side and after a few weeks of silence the hardware team on their side couldn't identify any real issues. The software team on the other hand found some odd behaviour in the link training. Link training is a feature of DisplayPort that consists of finding out the correct signaling strength and receiving display timing data from the display (similar to the EDID readout step in HDMI).
When it tries to establish a link the SoC does not try to up the voltage swing of all signal pairs but only for the first one. So most signal pairs stay at the lowest setting of 400mV, the first goes up to the maximum of 1200mV. This can mean two things, either there is a bug and because it does not raise the voltage swing for the other signal pairs it just fails over and over because it only touches the first pair. The other possibility is that everything is great with the other pairs at 400mV but something is very wrong with how the first pair is routed and the attempt of the driver to fix it fails, which atm seems unlikely but who knows.
What is so frustrating about this is that I know what to do next and have a pretty good plan to bring this project to where I want to see it but I'm held back by this odd ball issue and I can't do much about it.
I'm focusing on the mechanical side for now which can mostly be handled without advancing on the PCB design. I might still start with the newer PCB design as the production module for the Jetson Nano SoM is finally available which I had to wait for because the pin out changed there in relation to the pre-production devkit module. This new revision will feature the much needed reverse mount to the aluminium mounting plate which means I can finally get rid of this big silly heatsink.
In the next post I want to outline quickly what step I want to take in the next months to give you an overview of the development roadmap that I have planned so far.
On the bright side, I came around testing the fixed USB PCBs and all is well now :)
Here it is happily talking to an Adafruit Metro M0.