RK3399 Mipi LCD Driver 代碼分析
KernelVersion: 4.4.70
Documentation/devicetree/bindings/video/rockchip_fb.txt
概覽
總的來說,RK LCD 的 driver 有如下四個(gè)部分:
- FB 框架相關(guān)的部分
- LCDC 控制器相關(guān)的部分
- LCD 屏幕配置相關(guān)的部分
- Mipi 驅(qū)動(dòng)代碼
? rockchip git:(master) ? tree ./driver/video/
.
├── backlight 背光相關(guān)
├── fbdev FB 框架
│ └── core FB 核心代碼
│ ├── fbmem.c
│ └── fbsysfs.c
└── rockchip
├── rk_fb.c 平臺(tái) FB 驅(qū)動(dòng)
├── rkfb_sysfs.c
├── lcdc
│ ├── rk322x_lcdc.c
│ └── rk322x_lcdc.h
├── screen
│ ├── lcd_general.c
│ ├── lcd_mipi.c
│ └── rk_screen.c 屏幕配置文件共用代碼
└── transmitter Mipi 驅(qū)動(dòng)代碼
├── rk32_mipi_dsi.c
├── rk32_mipi_dsi.h
├── mipi_dsi.c
└── mipi_dsi.h

RK FBDEV 框架相關(guān)代碼
drivers/video/fbdev/core/fbmem.c
drivers/video/rockchip/rk_fb.c
drivers/video/rockchip/rkfb_sysfs.c
include/linux/rk_fb.h
fbmem.c 是 upstream 的代碼。它的作用在于:向上提供了和用戶空間交接的接口(open/read/write/ioctl); 向下聯(lián)系平臺(tái)相關(guān)的 fb 驅(qū)動(dòng) rk_fb.c。
rk_fb.c 是 RK 平臺(tái)的 FB 驅(qū)動(dòng)。
rkfb_sysfs.c 是
當(dāng)打開宏 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/
會(huì)使能 rk framebuffer driver kernel/driver/video/rockchip/rk_fb.c
會(huì)使能 rk lcdc driver kernel/driver/video/rockchip/lcdc/
會(huì)使能 rk screen 解析屏幕配置相關(guān)代碼
kernel/driver/video/rockchip/screen/
framebuffer driver
代碼路徑 kernel/driver/video/rockchip/rk_fb.c
fb: fb{
compatible = "rockchip,rk-fb";
rockchip,disp-mode = <DUAL>;
};
LCDC 框架代碼
這部分和具體的 LCDC 控制器相關(guān),對(duì)于 RK3399 平臺(tái)。
打開宏 CONFIG_LCDC_RK322X
obj-$(CONFIG_LCDC_RK322X) += rk322x_lcdc.o
RK Screen driver
依賴打開宏 CONFIG_FB_ROCKCHIP ,才會(huì)編譯 video/rockchip/screen 中的內(nèi)容。
rk_screen.c
默認(rèn)LCD_GENERAL 和 CONFIG_LCD_MIPI 二選一。
當(dāng)不需要屏的時(shí)候選 LCD_GENERAL 。
當(dāng)需要屏的時(shí)候選CONFIG_LCD_MIPI 。
對(duì)屏參文件的解析
屏相關(guān)的 dts 文件一般在 kernel/arch/arm64/boot/dts/ 中。
分為四個(gè)部分,mipi host 配置、屏電源控制配置、屏初始化序列配置和屏參配置。
drivers/video/rockchip/screen/lcd_mipi.c 中負(fù)責(zé)解析 mipi host 配置、屏電源控制配置、屏初始化序列配置的解析。
drivers/video/of_display_timing.c 中負(fù)責(zé)解析 屏參。
Mipi Host 配置
我們直接看 dts 文件
```
#### 屏電源控制
#### 屏初始化序列
#### 屏參配置
## Transmitter driver
打開宏 `CONFIG_RK_TRSM`
obj-$(CONFIG_RK_TRSM) += transmitter/
``
使能 rk transmitter driver kernel/drivers/video/rockchip/transmitter`
rk mipi dsi driver
打開宏 CONFIG_RK32_MIPI_DSI 對(duì)應(yīng)驅(qū)動(dòng) rk32_mipi_dsi.c ,Mipi driver 主文件。寄存器以及結(jié)構(gòu)體的定義在 rk32_mipi_dsi.h 。
打開宏 CONFIG_MIPI_DSI 對(duì)應(yīng)驅(qū)動(dòng) mipi_dsi.c ,封裝的函數(shù)指針接口函數(shù), 供 lcd_mipi.c 調(diào)用, 函數(shù)的具體實(shí)現(xiàn)在 rk32_mipi_dsi.c 中。Mipi 協(xié)議相關(guān)的宏定義以及函數(shù)指針結(jié)構(gòu)體定義在 mipi_dsi.h 。
|