KernelVersion: 4.4.70
Documentation/devicetree/bindings/video/rockchip_fb.txt
总的来说,RK LCD 的 driver 有如下四个部分:
➜ rockchip git:(master) ✗ tree ./driver/video/.├── backlight 背光相关├── fbdev FB 框架│ └── core FB 核心代码│ ├── fbmem.c│ └── fbsysfs.c└── rockchip ├── rk_fb.c 平台 FB 驱动 ├── rkfb_sysfs.c ├── lcdc │ ├── rk322x_lcdc.c │ └── rk322x_lcdc.h ├── screen │ ├── lcd_general.c │ ├── lcd_mipi.c │ └── rk_screen.c 屏幕配置文件共用代码 └── transmitter Mipi 驱动代码 ├── rk32_mipi_dsi.c ├── rk32_mipi_dsi.h ├── mipi_dsi.c └── mipi_dsi.h
drivers/video/fbdev/core/fbmem.cdrivers/video/rockchip/rk_fb.cdrivers/video/rockchip/rkfb_sysfs.cinclude/linux/rk_fb.h
fbmem.c
是 upstream 的代码。它的作用在于:向上提供了和用户空间交接的接口(open/read/write/ioctl); 向下联系平台相关的 fb 驱动 rk_fb.c。
rk_fb.c
是 RK 平台的 FB 驱动。
rkfb_sysfs.c
是
当打开宏 CONFIG_FB_ROCKCHIP
obj-$(CONFIG_FB_ROCKCHIP) += rk_fb.o rkfb_sysfs.o bmp_helper.o screen/obj-$(CONFIG_FB_ROCKCHIP) += display-sys.o lcdc/
会使能 rk framebuffer driver kernel/driver/video/rockchip/rk_fb.c
会使能 rk lcdc driver kernel/driver/video/rockchip/lcdc/
会使能 rk screen 解析屏幕配置相关代码kernel/driver/video/rockchip/screen/
代码路径 kernel/driver/video/rockchip/rk_fb.c
fb: fb{ compatible = "rockchip,rk-fb"; rockchip,disp-mode = <DUAL>;};
这部分和具体的 LCDC 控制器相关,对于 RK3399 平台。打开宏 CONFIG_LCDC_RK322X
obj-$(CONFIG_LCDC_RK322X) += rk322x_lcdc.o
依赖打开宏 CONFIG_FB_ROCKCHIP
,才会编译 video/rockchip/screen
中的内容。rk_screen.c
默认LCD_GENERAL
和 CONFIG_LCD_MIPI
二选一。当不需要屏的时候选 LCD_GENERAL
。当需要屏的时候选CONFIG_LCD_MIPI
。
屏相关的 dts 文件一般在 kernel/arch/arm64/boot/dts/
中。分为四个部分,mipi host 配置、屏电源控制配置、屏初始化序列配置和屏参配置。drivers/video/rockchip/screen/lcd_mipi.c
中负责解析 mipi host 配置、屏电源控制配置、屏初始化序列配置的解析。drivers/video/of_display_timing.c
中负责解析 屏参。
我们直接看 dts 文件
```#### 屏电源控制#### 屏初始化序列#### 屏参配置## Transmitter driver打开宏 `CONFIG_RK_TRSM`
obj-$(CONFIG_RK_TRSM) += transmitter/``使能 rk transmitter driver
kernel/drivers/video/rockchip/transmitter`
打开宏 CONFIG_RK32_MIPI_DSI
对应驱动 rk32_mipi_dsi.c
,Mipi driver 主文件。寄存器以及结构体的定义在 rk32_mipi_dsi.h
。
打开宏 CONFIG_MIPI_DSI
对应驱动 mipi_dsi.c
,封装的函数指针接口函数, 供 lcd_mipi.c
调用, 函数的具体实现在 rk32_mipi_dsi.c
中。Mipi 协议相关的宏定义以及函数指针结构体定义在 mipi_dsi.h
。
联系客服