顶层 Helper 与启动参数

顶层 Helper 与启动参数

1. 根目录边界

drivers/video根目录除Kconfig/Makefile外有8个C文件:

文件 作用
aperture.c framebuffer aperture ownership
hdmi.c HDMI infoframe编解码
hdmi-notifier.c 旧notifier实现,未进入Makefile
vgastate.c VGA寄存器保存/恢复
display_timing.c timing对象释放等
videomode.c timing到具体mode转换
of_display_timing.c OF timing解析
of_videomode.c OF到videomode封装

2. HDMI Helper

hdmi.c不是HDMI controller driver。它处理:

  • AVI infoframe;
  • SPD infoframe;
  • Audio infoframe;
  • Vendor Specific infoframe;
  • DRM/HDR static metadata infoframe;
  • init、check、pack、unpack、checksum和log。

实际RK3588 HDMI寄存器、HPD、DDC和PHY位于DRM及PHY driver。

3. Infoframe路径

1
2
3
4
5
DRM connector/mode/audio state
-> fill hdmi_*_infoframe
-> check
-> pack + checksum
-> HDMI controller writes packet RAM

pack必须检查buffer长度;unpack校验header、type、length和checksum。

4. hdmi-notifier.c

源码实现connected/disconnected/new EDID/new ELD blocking notifier,但没有任何Makefile引用,当前kernel不会链接它。存在头文件不代表运行时API可用。

5. VGASTATE

vgastate.c为legacy VGA driver提供save_vga()restore_vga(),保存字体、cmap和寄存器。它与RK3588 VOP2无关。

保存/恢复期间涉及VGA I/O和显存plane,调用者必须拥有硬件,不能与其它VGA/DRM driver并发。

6. video=

实现位于fbdev/core/fb_cmdline.c

  • video=<driver>:<options>把选项按driver保存;
  • 无driver名可作为全局mode option;
  • options以off开头可禁用对应fb driver;
  • video=ofonly限制Open Firmware framebuffer。

具体mode字符串由fbdev modedb/各driver继续解释。

7. fbcon=

实现位于fbdev/core/fbcon.c,控制:

  • framebuffer到VT映射;
  • 字体;
  • scroll;
  • rotate;
  • takeover行为。

配置符号在console/Kconfig,实现对象却编入fbdev Core,二者不要混淆。

Logo模块参数禁止启动logo。Logo数据位于init段,late init后logos_freed阻止继续引用,避免访问已释放init memory。

9. 全局nomodeset

全局参数实现于drivers/gpu/drm/drm_nomodeset.c,不在本目录。它使native DRM driver不注册,仅保留system framebuffer类路径。

本目录中radeonfb另有私有nomodeset语义,不能与DRM全局参数混为一谈。

10. nomodeset对RK3588的影响

RK3588本树无simplefb/efifb DTS节点,禁用Rockchip DRM后不应假定仍有可用图形framebuffer;可靠救援入口应保留串口console。

11. 构建符号

  • HDMI:通常由DRM/HDMI消费者select;
  • VGASTATE:legacy VGA;
  • VIDEOMODE_HELPERS:timing helper;
  • APERTURE_HELPERS:firmware framebuffer ownership。

这些bool/tristate不代表有独立用户设备。

12. 安全

  • Infoframe输入长度必须严格校验;
  • EDID/ELD视为外部不可信数据;
  • aperture physical range防overflow;
  • 不允许两个driver同时拥有VGA/aperture;
  • boot参数只改变策略,不提供权限隔离。

文章互动

阅读 --

留言

0 条留言

正在加载留言…