Linux DRM那些事-RockPI DRM

一、DRM基本組件

Linux內(nèi)核DRM框架包括:GEM和KMS。引用網(wǎng)絡(luò)圖片,展示DRM大體框架:

image.png

1、GEM

GEM(Graphic Execution Manager):圖形執(zhí)行管理器,主要是對(duì) FrameBuffer 的管理,如內(nèi)存的申請(qǐng)、釋放、共享和同步(GPU和CPU之間內(nèi)存)機(jī)制等。

GEM常用的Buffer包括:

1)Dumb Buffer:基于cma api實(shí)現(xiàn),只支持連續(xù)物理內(nèi)存,用于小分辨率簡(jiǎn)單場(chǎng)景。

2)Prime Buffer:基于dma-buf實(shí)現(xiàn)的buffer共享機(jī)制,支持連續(xù)、非連續(xù)物理內(nèi)存,用于大內(nèi)存復(fù)雜場(chǎng)景。

2、KMS

KMS(Kernel Mode Setting):內(nèi)核顯示模式設(shè)置,主要元素:Framebuffer、Plane、CRTC、Encoder、Connector。見(jiàn)下圖:

image.png

1)Framebuffer:?jiǎn)蝹€(gè)圖層的顯示內(nèi)容,應(yīng)用層和內(nèi)核都可訪問(wèn)。

2)Plane:硬件圖層,可實(shí)現(xiàn)多層合成顯示,連接FB和CRTC。包括:Primary、Overlay和Cursor,驅(qū)動(dòng)中至少實(shí)現(xiàn)1個(gè)Plane。

3)CRTC:對(duì)內(nèi)存Buffer進(jìn)行掃描,并轉(zhuǎn)換成LCDC Timing信號(hào)。

4)Encoder:將CRTC輸出的LCDC Timing時(shí)序轉(zhuǎn)換成顯示屏所需要的接口時(shí)序。

5)Connector:對(duì)應(yīng)顯示屏接口(HDMI、MIPI DSI、LVDS等)驅(qū)動(dòng)和輸出設(shè)備的相關(guān)狀態(tài)信息(EDID、熱插拔等)。

RockPI 4 DRM驅(qū)動(dòng)其實(shí)就是學(xué)習(xí)上面各個(gè)元素的實(shí)現(xiàn)及用法。

二、RockPI 4 DRM驅(qū)動(dòng)文件

RockPI 4單板使用RK3399芯片。

Debian系統(tǒng)內(nèi)核代碼下載地址:https://wiki.radxa.com/Rockpi4/dev/Debian。

RK3399 DRM關(guān)注文件:

1、內(nèi)核文檔

路徑:Documentation/devicetree/bindings/display/rockchip。

2、驅(qū)動(dòng)代碼

路徑:drivers/gpu/drm/rockchip,涉及到的文件和實(shí)現(xiàn)功能如下:

1)驅(qū)動(dòng)文件

root@ubuntu:/home/run/code/rockchip-bsp/kernel/drivers/gpu/drm/rockchip# ls
analogix_dp-rockchip.c  cdn-dp-reg.c        inno_hdmi.c  rk3066_hdmi.c             rockchip_drm_backlight.h  rockchip_drm_fbdev.c  rockchip_drm_gem.h  rockchip_drm_vop.h  rockchip_vop_reg.c
cdn-dp-core.c           cdn-dp-reg.h        inno_hdmi.h  rk3066_hdmi.h             rockchip_drm_drv.c        rockchip_drm_fbdev.h  rockchip_drm_tve.c  rockchip_lvds.c     rockchip_vop_reg.h
cdn-dp-core.h           dw_hdmi-rockchip.c  Kconfig      rk618                     rockchip_drm_drv.h        rockchip_drm_fb.h     rockchip_drm_tve.h  rockchip_lvds.h
cdn-dp-link-training.c  dw-mipi-dsi.c       Makefile     rockchip_drm_backlight.c  rockchip_drm_fb.c         rockchip_drm_gem.c    rockchip_drm_vop.c  rockchip_rgb.c

2)實(shí)現(xiàn)功能

實(shí)現(xiàn)功能 文件名稱
Core Driver rockchip_drm_drv.c
GEM Driver rockchip_drm_gem.c
Framebuffer Driver rockchip_drm_fb.c、rockchip_drm_fbdev.c
VOP Driver rockchip_drm_vop.crockchip_vop_reg.c
HDMI Driver dw_hdmi-rockchip.c
inno HDMI Driver inno_hdmi.c
LVDS Driver rockchip_lvds.c
MIPI Driver dw-mipi-dsi.c
TVE Driver rockchip_drm_tve.c
eDP Driver analogix_dp-rockchip.c
DP Driver cdn-dp-reg.c、cdn-dp-core.c、cdn-dp-link-training.c
RGB Driver rockchip_rgb.c
Backlight Driver rockchip_drm_backlight.c
rk618 bridge Driver rk618/
RK3066 HDMI Driver rk3066_hdmi.c

注:Core、GEM、FB和VOP驅(qū)動(dòng)是必須的,根據(jù)單板連接屏的接口類型選擇對(duì)應(yīng)的接口驅(qū)動(dòng)或背光驅(qū)動(dòng)。

目前只有HDMI線和HDMI接口的顯示屏,后續(xù)只介紹HDMI顯示驅(qū)動(dòng)。

參考

1.rockchip_drm_integration_helper-zh.pdf

2.brezillon-drm-kms.pdf

3.graphics-slides.pdf

注:本文僅在簡(jiǎn)書、OSCHINA和今日頭條發(fā)布過(guò),轉(zhuǎn)載請(qǐng)標(biāo)注原作者和鏈接。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容