Video 子系统架构与源码总览

Video 子系统架构与源码总览

1. 目录不是单一子系统

drivers/video同时承担:

  • Graphics Kconfig总入口;
  • fbdev Core和历史硬件驱动;
  • backlight/LCD class;
  • VT console后端和logo;
  • display timing、HDMI、aperture等helper;
  • Rockchip SDK特有RGA/MPP/IEP等媒体扩展。

现代KMS显示主路径在drivers/gpu/drm/,并非全部位于本目录。

2. 通用分层

1
2
3
4
5
6
7
8
9
10
11
应用 / console
| \
/dev/fbN fbcon
| |
fbdev Core <------+
|
fb_ops
|
legacy fb driver 或 DRM fbdev emulation

panel/DRM ---- backlight class ---- PWM/GPIO/PMIC

3. Graphics菜单

drivers/video/Kconfig还source:

  • drivers/char/agp/Kconfig
  • drivers/gpu/vga/Kconfig
  • Host1x/IPU;
  • DRM;
  • ARM GPU;
  • fbdev;
  • backlight;
  • Rockchip misc video;
  • console/logo。

因此“Graphics support菜单内容”大于“drivers/video目录代码”。

4. fbdev

struct fb_info表示一块framebuffer,struct fb_ops由驱动实现。Core注册/dev/fbN、sysfs和notifier,提供mode、colormap、mmap、drawing helpers。

fbdev可来自:

  • 独立legacy硬件driver;
  • firmware framebuffer(simplefb/efifb);
  • DRM fbdev emulation。

5. fbcon

fbcon把VT字符、属性和光标转换为fb_fillrect/copyarea/imageblit,是内核文本控制台,不是用户图形合成器。

6. Backlight

Backlight class统一亮度、blank、power和实际亮度。具体驱动控制PWM、GPIO、LED、PMIC或外置芯片。

7. 显示模式辅助

display_timing表示带min/typ/max范围的板级时序;videomode表示具体像素时序。OF helper解析display-timingsnative-mode

8. Aperture

Firmware framebuffer可能先占显存。真实GPU/DRM driver加载时通过aperture helper移除冲突的simplefb/efifb,完成ownership handoff。

9. Rockchip扩展

drivers/video/rockchip包含:

  • RGA/RGA2/Multi-RGA:2D图像操作;
  • MPP:视频编解码服务;
  • IEP/IEP2:图像增强;
  • RVE;
  • DVBM;
  • vehicle倒车影像;
  • video tunnel。

这些大多不是显示scanout driver,也不属于fbdev Core。

10. RK3588主显示路径

1
2
3
4
5
Userspace DRM/HWC
-> Rockchip DRM
-> VOP2 video ports/planes
-> HDMI/eDP/DP/DSI bridge/connector
-> panel/backlight

VOP2及输出驱动主要在drivers/gpu/drm/rockchip;本目录直接相关的是PWM backlight、兼容fbdev和Rockchip媒体扩展。

11. 边界

  • Camera capture:media/V4L2及vendor CIF/ISP;
  • GPU 3D:Mali driver;
  • Display KMS:DRM;
  • codec标准接口:V4L2 mem2mem或vendor MPP;
  • buffer sharing:dma-buf;
  • DMA隔离:IOMMU;
  • fbdev:兼容像素buffer。

12. 生命周期原则

显示/媒体驱动必须按“阻止新任务→停止硬件→等待IRQ/fence→解绑IOMMU/dma-buf→关闭clock/reset/power→释放对象”顺序卸载。

文章互动

阅读 --

留言

0 条留言

正在加载留言…