Edit online

源码和框架说明

28 Nov 2024
Read time: 1 minute(s)

源码说明

本模块源代码在内核目录 linux-5.10/drivers/video/artinchip/disp 下,目录结构如下:
├── aic_com.h       // 显示驱动共用的头文件,其中定义了寄存器、共用数据结构、全局函数等
├── aic_fb.c    // 对接 fbdev 框架,并进行扩展
├── aic_de.c    // 显示引擎驱动
├── aic_dsi.c   // mipi-dsi 显示接口驱动
├── aic_lvds.c  // lvds 显示接口驱动
├── aic_rgb.c   // rgb 显示接口驱动
├── hw/         // 显示引擎和显示接口的寄存器封装
└── panel/      // 屏驱动
关于本模块的 device tree bindings 文档,可查看以下目录中的 txt 文件:
  • /Documentation/devicetree/bindings/display/
  • /Documentation/devicetree/bindings/display/panel/

fbdev 框架

ArtInChip 平台的显示模块驱动基于 fbdev 框架。

关于 fbdev 架构的文档,可查看 Documentation/fb/framebuffer.txt 或在线阅读 https:/www.kernel.org/doc/Documentation/fb/framebuffer.txt

Componet 框架

框架代码:linux-5.10/drivers/base/component.c

Linux 引入 Componet 框架是为了 Subsystems 能按照一定的顺序初始化设备。Subsystems,例如 ALSA、DRM,整个框架包含较多子设备模块,但内核加载每个子模块的时间不定,因此需要 Componet 框架进行约束。

Component 框架通过 dts 将所有子设备关联到一个主设备上,主设备会管理子设备的加载顺序,保证所有设备正常使用。

board.dts 文件中,显示引擎、显示接口、panel、fb0 通过 port 结点进行关联,其中 fb0 为主设备。