Just got an iMX8MPlus, used from someone who had it in a pocket reform. Made sure to update the uboot so that it uses the one for the Classic Reform. It will boot up, and if I change the kernel commandline parameters to get it to use serial I can see that it actually fully boots and I can log in. The backlight for the display comes on, but it stays black. I never see anything. This is all on the latest version of the reform system image.
I am able to get it to work if I go back to the 6.8.12 image. The initial log prints from the kernel show the screen rotated 90 degrees (got an audible laugh from me when I saw that) but when sway boots up it’s fine.
Took a lot of debugging and reading out the registers on the display bridge. The PLL was locking, and I could get the bridge to show a colorbar pattern on the screen by writing to the 0x3C register. Issue seemed to be between the iMX and the bridge, on the DSI link. I read out the error registers, and on 0xF6 I saw 0x40, or LOSS_OF_DP_SYNC_LOCK_ERR. 0xF0 was clean of errors, which means that PHY was clean. 0xF1 only set CHA_DSI_PROTOCOL_ERR, which makes sense if it lost sync. The packets are good, the link is good, but it’s losing sync. Seemed like a clocking issue.
Bisecting the changes between these releases showed me this change to how the pixel clock is generated. This was made upstream.
I will make an account. I have admired MNT for a long time and it would make me very happy to have my name in the commit history. I’ll also see if there is a better fix for this. Changes are made upstream for a reason, maybe we just need to reconfigure the clock to be slower and have it coexist with the upstream patch. Just reverting upstream is not always the right solution.
Now that the display works, I want to look at suspend/resume. This is the last thing I need before the reform classic can truly replace my framework 13". Minute said this was working a long time ago but upstream broke something. I did some pm_test work, but the display bridge was not come back to life and the test dies at devices. Will keep digging.