The disp-state extcon is reporting wrong for hdmi. Instead of filling forward from HDMI to HDMI2, etc for each plugged display; it fills backwards from HDMI4 to HDMI3, etc.
I first saw this on android on the rel-shield-r kernel on t210, but I have reproduced on l4t r35.1 on t194 as well. Attached is a patch to kernel/nvidia that rectifies the issue.
No explicit user-facing errors, no. Just an obviously wrong value being reported by extcon.
I was debugging an issue with hdmi displays not initializing properly when booting a kernel via rcmboot (which is not a supported case to my knowledge, hence not reporting that) and saw the incorrect disp-state extcon value, so I started researching the issue. Reproduced the problem on multiple kernel branches. When I found the cause and fixed it, I thought I should send the patch in to get the issue fixed on future official kernel releases.
We don’t guarantee the map of:
HDMI output, the first head → HDMI
HDMI output the second head → HDMI2
Thus, we won’t merge your fix. Also, the free cable ID is assigned based on the probing order, so even with your patch, the cable ID gets changed if the DT setting is changing.
Not guaranteeing that is fine. But I do want to point out that the commit message that added this support does say that mapping should happen in the order you describe as not being guaranteed. See: