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 管理