drm/mcde ST-Ericsson MCDE Multi-channel display engine

The MCDE (short for multi-channel display engine) is a graphicscontroller found in the Ux500 chipsets, such as NovaThor U8500.It was initially conceptualized by ST Microelectronics for thesuccessor of the Nomadik line, STn8500 but productified in theST-Ericsson U8500 where is was used for mass-market deploymentsin Android phones from Samsung and Sony Ericsson.

It can do 1080p30 on SDTV CCIR656, DPI-2, DBI-2 or DSI forpanels with or without frame buffering and can convert mostinput formats including most variants of RGB and YUV.

The hardware has four display pipes, and the layout is a littlebit like this:

Memory     -> Overlay -> Channel -> FIFO -> 8 formatters -> DSI/DPIExternal      0..5       0..3       A,B,    6 x DSI         bridgesource 0..9                         C0,C1   2 x DPI

FIFOs A and B are for LCD and HDMI while FIFO CO/C1 are forpanels with embedded buffer.6 of the formatters are for DSI, 3 pairs for VID/CMD respectively.2 of the formatters are for DPI.

Behind the formatters are the DSI or DPI ports that route tothe external pins of the chip. As there are 3 DSI ports and oneDPI port, it is possible to configure up to 4 display pipelines(effectively using channels 0..3) for concurrent use.

In the current DRM/KMS setup, we use one external source, one overlay,one FIFO and one formatter which we connect to the simple DMA framebufferhelpers. We then provide a bridge to the DSI port, and on the DSI portbridge we connect hang a panel bridge or other bridge. This may be subjectto change as we exploit more of the hardware capabilities.

TODO:

  • Enabled damaged rectangles usingdrm_plane_enable_fb_damage_clips()so we can selectively just transmit the damaged area to acommand-only display.

  • Enable mixing of more planes, possibly at the cost of moving awayfrom using the simple framebuffer pipeline.

  • Enable output to bridges such as the AV8100 HDMI encoder fromthe DSI bridge.