4. SA8155 显示控制器 (MDP):硬件框图、流水线与 DRM 绑定

SA8155 的显示控制器核心是 MDP (Mobile Display Processor),它负责将 GPU/VPU 渲染的帧缓冲区数据,经过合成、缩放、旋转、色彩转换等处理,最终输出到显示接口。理解 MDP 的硬件流水线结构,是掌握 DRM/KMS 驱动绑定与调试的基础。

4.1 MDP 硬件框图

MDP 内部由多个功能模块组成,核心包括:

  • SSPP (Source Surface Processor):源图层处理器,每个 SSPP 对应一个独立的 DMA 引擎和图层处理通道,支持从内存抓取帧数据并进行格式转换、缩放、旋转等。
  • LMS (Layer Mixer Stage):图层混合器,将多个 SSPP 输出的图层按 Z-order 混合成一张合成图。
  • DSPP (Destination Surface Processor):目标图层处理器,对混合后的图像做全局后处理,如色彩校正、伽马、HDR 映射等。
  • PP (Post Processor):后处理模块,包含 Dither、Histogram、Ping-Pong 缓冲等。
  • INTF (Interface):显示接口控制器,负责将处理好的图像数据打包成 DSI、DP、HDMI 等协议格式发送。
关键概念: SA8155 MDP 支持最多 4 个显示流水线,每个流水线可独立配置输出分辨率、刷新率和接口类型。
SA8155 MDP 硬件框图 SA8155 MDP 硬件框图 GPU/VPU 帧缓冲区 SSPP 0 DMA + 图层处理 缩放/旋转/格式 SSPP 1/2/3 ... LMS 图层混合器 Z-order 合成 Alpha 混合 DSPP 后处理 色彩校正/伽马 HDR 映射 INTF DSI DP HDMI 说明 每个流水线包含一组 SSPP + LMS + DSPP + PP + INTF,独立处理一路显示输出

4.2 MDP 流水线 (Pipeline) 概念

MDP 的显示处理路径被抽象为 Pipeline(流水线),每个 Pipeline 代表一条从内存到显示接口的完整数据通路。SA8155 通常支持 4 个显示流水线,分别对应不同的物理显示接口。

流水线编号 典型接口 最大分辨率 典型用途
Pipe 0 DSI 0 (4-lane) 1920x1080 @60fps 仪表盘 (Cluster)
Pipe 1 DSI 1 (4-lane) 1920x1080 @60fps 中控屏 (IVI)
Pipe 2 DP 0 (eDP/DP) 3840x2160 @60fps 副驾屏 / 后排娱乐
Pipe 3 DP 1 / HDMI 3840x2160 @60fps 抬头显示 (HUD) / 外接
调试提示: 在 /sys/kernel/debug/dri/0/ 下可以查看每个 CRTC 对应的 MDP 流水线状态,包括 SSPP 分配、图层数量、时钟频率等。
MDP 流水线 (Pipeline) 结构 MDP 流水线 (Pipeline) 结构 Pipe 0 SSPP 0-3 LMS + DSPP → DSI 0 仪表盘 Pipe 1 SSPP 4-7 LMS + DSPP → DSI 1 中控屏 Pipe 2 SSPP 8-11 LMS + DSPP → DP 0 副驾屏 Pipe 3 SSPP 12-15 LMS + DSPP → DP 1/HDMI HUD/外接 流水线隔离 每个 Pipe 拥有独立的 SSPP 资源池、时钟域和中断线,互不干扰

4.3 MDP 与 DRM 的绑定关系

在 DRM/KMS 框架中,MDP 硬件流水线被抽象为以下 DRM 对象:

DRM 对象 MDP 硬件对应 功能描述
CRTC MDP Pipe (LMS + DSPP + PP) 管理显示时序、扫描输出、VBLANK 中断
Plane SSPP (Source Surface Processor) 管理图层帧缓冲、位置、缩放、旋转
Encoder INTF (Interface Controller) 编码像素数据为接口协议 (DSI/DP/HDMI)
Connector 物理接口 + 桥接芯片 检测连接状态、EDID 读取、热插拔
绑定关系核心: 一个 CRTC 绑定一个 MDP Pipe,一个 Pipe 包含多个 SSPP(Plane),每个 SSPP 对应一个 DRM Plane。Encoder 和 Connector 则绑定在 Pipe 的输出端。
MDP 与 DRM 绑定关系 MDP 与 DRM 绑定关系 DRM Plane DRM CRTC DRM Encoder DRM Connector SSPP 0..N 源图层处理器 MDP Pipe LMS + DSPP + PP INTF 接口控制器 PHY / Bridge 物理层 / 桥接芯片 绑定关系说明 • Plane ↔ SSPP:1:1 映射 • CRTC ↔ Pipe:1:1 映射 • Encoder ↔ INTF:1:1 映射 • Connector ↔ PHY/Bridge:1:1 或 1:N • 一个 CRTC 绑定多个 Plane • 一个 Encoder 绑定一个 Connector • 驱动通过 dts 配置绑定关系

4.4 驱动绑定实现要点

在 SA8155 的 DRM 驱动 (msm_drm) 中,MDP 与 DRM 的绑定通过以下关键数据结构实现:

// mdp5_kms.h - MDP5 硬件抽象层
struct mdp5_hw_pipe {
    u32 pipe_num;           // 流水线编号 0-3
    struct mdp5_ctl *ctl;   // 控制寄存器
    struct mdp5_smp *smp;   // 共享内存池
    struct drm_crtc *crtc;  // 绑定的 DRM CRTC
};

// mdp5_plane.c - Plane 与 SSPP 绑定
static int mdp5_plane_atomic_check(struct drm_plane *plane,
                                   struct drm_atomic_state *state)
{
    struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state);
    struct mdp5_hw_pipe *hw_pipe = pstate->hw_pipe;
    
    // 检查 SSPP 能力是否满足图层需求
    if (hw_pipe->caps & SSPP_CAP_SCALE) {
        // 支持缩放
    }
    return 0;
}
调试注意: 如果 DRM 绑定失败,常见原因包括:dts 中 pipeline 编号与硬件不匹配、SSPP 资源被其他 CRTC 占用未释放、INTF 时钟未使能。建议先检查 /sys/kernel/debug/dri/0/state 确认对象绑定状态。

4.5 本章小结

  • MDP 硬件由 SSPP、LMS、DSPP、PP、INTF 组成,每个模块承担不同的显示处理任务。
  • MDP 流水线 (Pipeline) 是独立的数据通路,SA8155 支持 4 条流水线,分别对应不同的显示接口。
  • DRM 对象与 MDP 硬件存在明确的绑定关系:Plane ↔ SSPP、CRTC ↔ Pipe、Encoder ↔ INTF、Connector ↔ PHY/Bridge。
  • 驱动绑定通过 dts 配置和内核数据结构 (mdp5_hw_pipe) 实现,调试时可利用 debugfs 查看绑定状态。