drm/meson 晶晨 Meson 视频处理单元

VPU 处理全局视频处理,包括时钟门控、块复位线和电源域的管理。

缺失的功能

  • 整个视频处理硬件块的完全复位

  • VPU 时钟的缩放和设置

  • 总线时钟门控

  • 视频处理硬件块的启动

  • HDMI 控制器和 PHY 的启动

视频处理单元

晶晨 Meson 显示控制器由多个组件组成,这些组件将在下面进行说明

DMC|---------------VPU (Video Processing Unit)----------------|------HHI------|
   | vd1   _______     _____________    _________________     |               |
D  |-------|      |----|            |   |                |    |   HDMI PLL    |
D  | vd2   | VIU  |    | Video Post |   | Video Encoders |<---|-----VCLK      |
R  |-------|      |----| Processing |   |                |    |               |
   | osd2  |      |    |            |---| Enci ----------|----|-----VDAC------|
R  |-------| CSC  |----| Scalers    |   | Encp ----------|----|----HDMI-TX----|
A  | osd1  |      |    | Blenders   |   | Encl ----------|----|---------------|
M  |-------|______|----|____________|   |________________|    |               |
___|__________________________________________________________|_______________|

视频输入单元

VIU 处理像素扫描输出和基本颜色空间转换。我们处理以下功能

  • OSD1 RGB565/RGB888/xRGB8888 扫描输出

  • RGB 转换为 x/cb/cr

  • 逐行或隔行缓冲扫描输出

  • OSD1 在垂直同步上的提交

  • GXL/GXM 的 HDR OSD 矩阵

缺失的功能

  • BGR888/xBGR8888/BGRx8888/BGRx8888 模式

  • YUV4:2:2 Y0CbY1Cr 扫描输出

  • 从 4:2:2 输入转换为 YUV 4:4:4

  • 颜色键 Alpha 匹配

  • 大端扫描输出

  • X/Y 反向扫描输出

  • 全局 Alpha 设置

  • OSD2 支持,需要在垂直同步上进行隔行切换

  • OSD1 全缩放以支持电视过扫描

视频后处理

VPP 处理 VIU 扫描输出后的所有后处理。我们处理以下后处理

  • 后混合,仅混合 OSD1

    我们排除 OSD2、VS1、VS1 和预混合输出

  • 仅用于 OSD1 的垂直 OSD 缩放器,我们禁用垂直缩放器

    仅用于隔行扫描输出

  • 具有默认晶晨值的中间 FIFO

缺失的功能

  • 用于视频叠加预缩放的预混合

  • 用于光标帧缓冲的 OSD2 支持

  • 后混合之前的视频预缩放

  • 全垂直/水平 OSD 缩放以支持电视过扫描

  • HDR 转换

视频编码器

VENC 处理像素编码为输出格式。我们处理以下编码

  • 通过 ENCI 编码器和 VDAC 数模转换器的 CVBS 编码

  • 通过 ENCI_DIV 和 ENCP 的 TMDS/HDMI 编码

  • 为 HDMI 模式设置更多时钟频率

缺失的功能

  • 通过 ENCL 的 LCD 面板编码

  • 通过 ENCT 的 TV 面板编码

VENC 路径

       _____   _____   ____________________
vd1---|     |-|     | | VENC     /---------|----VDAC
vd2---| VIU |-| VPP |-|-----ENCI/-ENCI_DVI-|-|
osd1--|     |-|     | | \                  | X--HDMI-TX
osd2--|_____|-|_____| |  |\-ENCP--ENCP_DVI-|-|
                      |  |                 |
                      |  \--ENCL-----------|----LVDS
                      |____________________|

ENCI 专为 PAl 或 NTSC 编码而设计,可以直接通过 VDAC 进行 CVBS 编码,也可以通过 ENCI_DVI 编码器进行 HDMI 编码。ENCP 专为逐行编码而设计,但也可以生成 1080i 隔行像素,最初设计用于为 VDAC 编码像素以输出 RGB 或 YUV 模拟输出。它的输出仅通过 ENCP_DVI 编码器用于 HDMI。ENCL LVDS 编码器未实现。

ENCI 和 ENCP 编码器需要为每个支持的模式专门定义的参数,因此无法从标准视频时序确定。

ENCI 和 ENCP DVI 编码器更通用,可以从 ENCI 或 ENCP 生成的像素数据生成任何时序,因此可以使用标准视频时序作为硬件参数的来源。

视频时钟

VCLK 是来自专用 PLL 的“像素时钟”频率发生器。我们处理以下编码

  • 通过 VCLK2 到 VENCI 和 VDAC 块的 CVBS 27MHz 发生器

  • HDMI 像素时钟生成

缺失的功能

  • 生成 2K/4K 10 位格式的像素时钟

时钟发生器方案

 __________   _________            _____
|          | |         |          |     |--ENCI
| HDMI PLL |-| PLL_DIV |--- VCLK--|     |--ENCL
|__________| |_________| \        | MUX |--ENCP
                          --VCLK2-|     |--VDAC
                                  |_____|--HDMI-TX

最终时钟可以从 VCLK 或 VCLK2 获取输入,但 VCLK 是 HDMI 时钟的首选路径,而 VCLK2 是 CVBS VDAC 时钟的首选路径。

VCLK 和 VCLK2 具有固定的分频时钟路径,分别为 /1、/2、/4、/6 或 /12。

PLL_DIV 可以实现额外的分数除法,如 1.5、3.5、3.75...,以生成特殊的 2K 和 4K 10 位时钟。

HDMI 视频输出

HDMI 输出由以下部分组成

  • Synopsys DesignWare HDMI 控制器 IP

  • 控制时钟和 PHY 的 TOP 控制块

  • 自定义 HDMI PHY,用于将视频转换为 TMDS 信号

 ___________________________________
|            HDMI TOP               |<= HPD
|___________________________________|
|                  |                |
|  Synopsys HDMI   |   HDMI PHY     |=> TMDS
|    Controller    |________________|
|___________________________________|<=> DDC

HDMI TOP 块仅支持 HPD 感应。Synopsys HDMI 控制器中断通过 TOP 块中断进行路由。与 TOP 块和 Synopsys HDMI 控制器的通信是通过一对地址 + 读取/写入寄存器完成的。HDMI PHY 由 HHI 寄存器块中的寄存器配置。

像素数据以 4:4:4 格式从 VENC 块到达,VPU HDMI 多路复用器选择 ENCI 编码器用于 576i 或 480i 格式,或选择 ENCP 编码器用于所有其他格式,包括隔行 HD 格式。VENC 在 ENCI 或 ENCP 编码器的基础上使用 DVI 编码器来为 HDMI 控制器生成 DVI 时序。

GXBB、GXL 和 GXM 嵌入了 Synopsys DesignWare HDMI TX IP 2.01a 版本,具有 HDCP 和 I2C & S/PDIF 音频源接口。

我们处理以下功能

  • HPD 上升和下降中断

  • HDMI 控制器中断

  • 480i 到 1080p60 的 HDMI PHY 初始化

  • 480i 到 1080p60 的 VENC 和 HDMI 时钟设置

  • 480i 到 1080p60 的 VENC 模式设置

缺失的功能

  • 2k 和 4k 模式的 PHY、时钟和模式设置

  • HDMI 2.0a 的 SDDC 加扰模式

  • HDCP 设置

  • CEC 管理