drm/meson AmLogic Meson 视频处理单元

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

缺少什么

  • 整个视频处理硬件块的完全重置

  • VPU 时钟的缩放和设置

  • 总线时钟门控

  • 为视频处理硬件块供电

  • 为 HDMI 控制器和 PHY 供电

视频处理单元

Amlogic 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

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

  • 在 Vsync 上提交 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 支持,需要在 Vsync 上进行隔行切换

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

视频后处理

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

  • Postblend,仅混合 OSD1

    我们排除 OSD2、VS1、VS1 和 Preblend 输出

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

    仅将其用于隔行扫描输出

  • 具有默认 Amlogic 值的中间 FIFO

缺少什么

  • 用于视频叠加预缩放的 Preblend

  • 用于光标帧缓冲的 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 end ENCP DVI 编码器更通用,可以从 ENCI 或 ENCP 生成的像素数据中生成任何时序,因此可以使用标准视频时序作为硬件参数的来源。

视频时钟

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

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

  • HDMI 像素时钟生成

缺少什么

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

时钟发生器方案

 __________   _________            _____
|          | |         |          |     |--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 10bit 时钟。

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 控制器的通信是通过一对 addr+read/write 寄存器完成的。 HDMI PHY 由 HHI 寄存器块中的寄存器配置。

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

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

我们处理以下功能

  • HPD 上升和下降中断

  • HDMI 控制器中断

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

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

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

缺少什么

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

  • HDMI 2.0a 的 SDDC 加扰模式

  • HDCP 设置

  • CEC 管理