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 -> 5 formatters -> DSI/DPIExternal      0..5       0..3       A,B,    3 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.3 of the formatters are for DSI.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 CMA 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.