如果需要编写一个DRM
驱动,应该怎么做呢?具体流程如下:
(1) 定义struct drm_driver
,并初始化成员name
、desc
、data
、major
、minor
、driver_features
、fops
、dumb_create
等;
(2)调用drm_dev_alloc
函数分配并初始化一个struct drm_device
;
(3) 调用drm_mode_config_init
初始化drm_device
中mode_config
结构体;
(4) 调用drm_xxx_init
创建 framebuffer
、plane
、crtc
、encoder
、connector
这5个 drm_mode_object
;
在DRM
子系统中是通过component
框架完成各个功能模块的注册,比如在:
CRTC