I've been trying to debug an issue with HDMI output on Tinyrex Ultra (+ Baseboard) using the mainline Linux Kernel (4.12, but version doesn't seem to matter). Officially, all the required drivers are in the kernel and it should just work, but it doesn't. The monitor doesn't get a signal and the DRM page_flip mechanism times out after 10 seconds for yet unknown reasons (I believe VBlank interrupts are never fired, but I also don't understand where they should be coming from).
HDMI output works fine with linux-fslc-4.1-rex kernel (it's just linux-fslc-4.1 with the correct DTS files) on the same board and the same linux filesystem (debian bootstrapped).
My goal is to find the missing pieces that will make the HDMI output work with a mainline 4.12+ Kernel. I've collected a lot of information and traced register writes of both HDMI driver implementations and compared them, but I have some fundamental questions before I can make any progress:
- In a minimal configuration, which blocks of the HDMI TX controller (Figure 33-3. in APRM) and the rest of the SoC need to be configured to produce an image on a connected screen?
- If I use the debug registers HDMI_FC_DBGTMDS0 etc and HDMI_FC_DBGFORCE to set a fixed color output, do I still need to configure IPU or should the HDMI TX create a valid output signal by itself? (Can HDMI TX produce an output without IPU?)
- Is it mandatory to configure the Audio Interface or should it work without it?
- Is it mandatory to configure the HDCP Encryptor or can this be skipped?
Any pointers in the right direction or a bullet list of mandatory checks for HDMI TX would be greatly appreciated.
PS: HDMI Hotplug detection does work; EDID works when the correct I2C channel is selected in the DTS.
PPS: I attached the DTS/DTSI files that I ported and use, maybe they contain an obvious error?
Lukas F. Hartmann / mntmn