drm/mcde ST-Ericsson MCDE 多通道显示引擎

MCDE(多通道显示引擎的缩写)是 Ux500 芯片组(如 NovaThor U8500)中找到的图形控制器。 它最初由意法半导体为 Nomadik 系列的后继产品 STn8500 概念化,但在 ST-Ericsson U8500 中将其产品化,并在三星和索尼爱立信的安卓手机中大规模部署。

它可以在 SDTV CCIR656、DPI-2、DBI-2 或 DSI 上实现 1080p30,用于带有或不带有帧缓冲的面板,并且可以转换包括大多数 RGB 和 YUV 变体在内的大多数输入格式。

该硬件有四个显示管道,布局有点像这样

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

FIFO A 和 B 用于 LCD 和 HDMI,而 FIFO CO/C1 用于带有嵌入式缓冲区的面板。 6 个格式化器用于 DSI,3 对分别用于 VID/CMD。 2 个格式化器用于 DPI。

格式化器后面是 DSI 或 DPI 端口,这些端口路由到芯片的外部引脚。 由于有 3 个 DSI 端口和 1 个 DPI 端口,因此可以配置多达 4 个显示管道(有效地使用通道 0..3)以供同时使用。

在当前的 DRM/KMS 设置中,我们使用一个外部源、一个覆盖、一个 FIFO 和一个格式化器,将其连接到简单的 DMA 帧缓冲助手。 然后,我们提供到 DSI 端口的桥接,并在 DSI 端口桥接上连接面板桥或其他桥接。 当我们利用更多硬件功能时,这可能会发生变化。

待办事项

  • 使用 drm_plane_enable_fb_damage_clips() 启用损坏的矩形,以便我们可以有选择地仅将损坏的区域传输到仅命令显示器。

  • 启用更多平面的混合,可能会以牺牲使用简单的帧缓冲管道为代价。

  • 启用从 DSI 桥输出到桥接器,例如 AV8100 HDMI 编码器。