1 Linux内核4.14版本——drm框架分析——drm简介( 二 )


注:crtc代码层面的作用:
1)DPMS ( Power) 电源状态管理 (->dpms) 。
2)将转换成标准的 LCDC,其实就是一帧图像刷新的过程(->) 。
3)帧切换,即在消影期间,切换 (->) 。
4)gamma校正值调整(->) 。
1.4.
编码器/输出转换器,负责将CRTC输出的时序转换成外部设备所需要的信号的模块 。它的作用就是将内存的 pixel 像素编码(转换)为显示器所需要的信号(因为画面显示到不同的设备( )上,需要将画面转化为不同的电信号) 。如指 RGB、LVDS、DSI、eDP、HDMI、CVBS、VGA 等显示接口 。另外和 CRTC 之间的交互就是我们所说的 ,其中包含了前面提到的色彩模式、还有时序()等 。
注:代码层面的作用:
1)DPMS ( Power) 电源状态管理 (->dpms)
2)将 VOP 输出的 lcdc打包转化为对应接口时序 HDMI TMDS / … (->)
1.4.
连接器,指和 panel 之间交互的接口部分 。对应于物理连接器 (例如 VGA, DVI, FPD-Link, HDMI, , S-Video等) ,它不是指物理线,在 DRM中,是一个抽象的数据结构,代表连接的显示设备,从中可以得到当前物理连接的输出设备相关的信息 。
注:代码层面的作用
1)获取上报 热拔插状态
2)读取并解析屏 (Panel) 的 EDID 信息
1.4.
桥接设备,一般用于注册后面另外再接的转换芯片,如转换芯片 。桥接ic所处位置,如图:
1.4.6 Panel
泛指屏,各种LCD,HDMI等显示设备的抽象 。用于获取LCD mode参数,并提供LCD休眠唤醒的回调接口,供调用 。
1.4.
同步机制,基于内核机制实现,用于防止显示内容出现异步问题 。
1.4.
硬件图层,和一样是内存地址 。在平台是 SOC 内部 VOP(LCDC)模块 win 图层的抽象 。一个Plane代表一个image layer, 最终的image由一个或者多个组成 。
plane的主要类型:
RY:主要图层,通常用于仅支持RGB格式的简单图层
AY:叠加图层,通常用于YUV格式的视频图层
R:光标图层,一般用于pc系统,用于显示鼠标
1.4.9小结
实例解析下 CRTC //的行为:
1)首先 HDMI 驱动检测到电视信号,读出电视的 EDID 信号,获取电视的分辨率信息 (DRM ) 。
2) 将需要显示的数据填充在里面,然后通过接口通知 VOP 设备开始显示 。
3)接着 VOP 驱动将里面的数据转换成标准的 LCDC时序 (DRM CRTC) 。
4)同时 HDMI 驱动将 HDMI 硬件模块的 LCDC 时序配置与 VOP 输出时序一致,准备将输入的 LCDC转化为电视识别的 HDMI TMDS 信号 (DRM ) 。
名词解释:
DRI:,直接访问硬件接口
EDID:Data,扩展显示标识数据,共有128字节 。其中包含有关显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串 。
DDC: Data ,显示数据通道,顾名思义,它是一个通道,DDC是用来传送EDID信息的 。EDID信息包含了显示器需要的128字节,128个字节的附加块可以存储在初始的EDID块之后的EDID扩展块VDIF,这些块包含具体的时序信息 。
2. DRM驱动框架 2.1 DRM驱动对象介绍
DRM内部的是组成DRM框架的核心,下图中蓝色部分为物理硬件的抽象,棕色部分则为软件的抽象,其中GEM结构体为:,其余部分位于结构体中.
PS:不属于范畴,只是为了降低LCD驱动与驱动间的耦合,是一堆回调函数集合 。
如图所属,drm将显示部分抽象出了、plane、crtc、、五部分 。
(1)在同一时刻,一个与一个plane动态绑定 。
(2)在同一时刻,通常一个或多个plane与一个crtc静态绑定 。
(3)在同一时刻,一个crtc与多个动态绑定 。