顶层 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 | DRM connector/mode/audio state |
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,二者不要混淆。
8. nologo
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参数只改变策略,不提供权限隔离。
正在加载留言…