We have extended the Linux BSP to support the eLCDIF OVERLAY plane.
We get correct alpha-blending of the AS overlay with the PR primary frame buffer.
The problem we have is that we get erratic alignment of the AS image with the PR image as seen by the display panel (driving HDMI via MIPI-DSI into IMX-MIPI_HDMI converter board)
We see the correct image data for both planes, but the top-left-corner of the AS image often starts part way through the PR image. The AS image correctly wraps about its start point.
This misalignment seems to relate to the point in time that LCDIF_AS_CTRL:AS_ENABLE gets set...
Initially we were setting AS_ENABLE whenever userspace set a DRM framebuffer for the overlay plane, this gave rise to highly erratic misalignment of the planes.
We now set AS_ENABLE very early on in the h/w bring up and mostly get correct alignment (top left pixel of AS is rendered over top left pixel of PR) but occasionally we get an off-by-one misalignment of the two planes, with the AS plane delayed by one pixel. This results in all AS rows being shifted right by one pixel, with the last pixel of the AS line appearing as the first pixel of the next line of the display. The last pixel of the last row of AS appears as the first pixel of the first line of the display.
What is the correct way to initialise and/or reconfigure the LCDIF to ensure that AS / PR alignment is reliable?
Is this a hardware bug in the LCDIF IP block?
The reference manual is of no help as it does not include AS overlay config details in the "Initializing the LCDIF" section.