I am trying to add support for a WVGA RGB666 LCD 18bit display to an IMX53 EC7 based platform. I though I only had to change the following registry entry, where Bpp is set the the value appropriate to the actual display.
"Bpp"=dword:10 ; RGB565
"VideoBpp"=dword:20 ; RGB666 (32bpp internal)
"VideoMemSize"=dword:4000000 ; 64MB
Also I needed to add a new entry to the PANEL_INFO structure with the appropriate parameters.This did not work.
I originally thought that the system would use a consistent display format internally and only do the final transformation (to suit the actual display) at the IPU display controller. This would mean changes to suit the physical display are made in one place only. In digging deeper it looks like this is not the case since IDMAC channel 23 (the main plane primary flow) is configured for the display format in addition to the display controller.
Also it looks the the current Freescale BSP does not actually have support for 666 (18 bits per pixel) format, only 4, 8, 16 and 32.bpp.
In C:\WINCE700\platform\common\src\soc\COMMON_FSL_V3\IPUV3\DISPLAY\display.cpp I could add support for an 18 bit format but this may not be enough.
For example in a few places in C:\WINCE700\platform\common\src\soc\COMMON_FSL_V3\IPUV3\DDRAW\ddipu.cpp I see something like this
nBPP = m_pMode->Bpp/8 - 1;
m_pModeEx->ePixelFormat = ePixelFormat[nBPP];
where it looks like the assumption is that the bpp is a multiple of 8. nBPP is used as an index into an array and this only works if bpp is a multiple of 8. This is common Freescale code and this suggests a more fundamental problem with BSP support for 18 bit format.
Is my understanding of this correct? I'm sure the platform can support an18 bit format without having to make wholesale changes. Has anyone added a 666 display support to the IMX53 platform? If so what changes were required?