二、ST官方的DRM驱动框架 DRM驱动的核心是drm_driver结构体。 1. ltdc设备树描述 在stm32mp1芯片级通用描述文件中: 2. ltdc驱动 通过兼容性找到ltdc驱动为:drivers/gpu/drm/stm/drv.c,绑定文档为:Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml。 可以看到,这...
.desc = DRIVER_DESC, .date = DRIVER_DATE, .major = DRIVER_MAJOR, .minor = DRIVER_MINOR, }; 3.6 VOP驱动 代码位置: drivers/gpu/drm/rockchip/rockchip_drm_vop.c drivers/gpu/drm/rockchip/rockchip_vop_reg.c 结构介绍: struct vop; // vop 驱动根结构, 一个vop对应一个struct vop结构 struc...
drm_dev_init(&drm, &vkms_driver, NULL); vkms_modeset_init(); drm_dev_register(&drm, 0); return 0; } module_init(vkms_init); 重点: 给driver_features 添加上 DRIVER_MODESET 标志位,告诉 DRM Core 当前驱动支持 modesetting 操作; drm_mode_config_init() 初始化一些全局的数据结构。注意,...
《DRM Internals》中介绍了drm_device和drm_driver数据接口和API函数,以及drm_driver示例。 drm_dev_alloc()主要分配并初始化drm_device结构体: drm_dev_alloc drm_dev_init drm_minor_alloc drm_sysfs_minor_alloc--分配/dev/dri/card0设备对应的结构体。 drm_gem_init--分配并初始化DRM设备的GEM。 drm_dev...
给driver_features 添加上 DRIVER_MODESET 标志位,告诉 DRM Core 当前驱动支持 modesetting 操作; drm_mode_config_init() 初始化一些全局的数据结构。注意,那些 Standard Properties 就是在这里创建的。 drm_xxx_init() 则分别用于创建 plane、crtc、encoder、connector 这4个 drm_mode_object。
DRM框架从上到下依次为应用程序、libdrm、DRM driver、HW; (1) 应用程序:上图中并没有画出;应用程序可以直接操纵DRM的ioctl进行显示相关操作,后来封装成了libdrm库,让用户可以更加方便的进行显示控制; (2)libdrm:lbdrm是DRM框架提供的位于用户空间操作DRM的库,提供了DRM驱动的用户空间接口;对底层接口进行封装,向上...
DRM内部的Objects是组成DRM框架的核心,下图中蓝色部分为物理硬件的抽象,棕色部分则为软件的抽象,其中GEM结构体为:drm_gem_object,其余部分位于结构体drm_mode_object中. PS:drm_panel不属于object范畴,只是为了降低LCD驱动与encoder驱动间的耦合,是一堆回调函数集合。
struct drm_device { struct drm_mode_create_dumb create ; //创建的dumb struct drm_mode_map_dumb map; //内存映射结构体 }; static int drm_create_fb(struct drm_device *bo) { /* create a dumb-buffer, the pixel format is XRGB888 */ bo->create.width = bo->width; bo->create.height...
drm_dev = drm_dev_alloc(&rockchip_drm_driver, dev);//申请一个drm设备数据结构 ret = drm_dev...
给driver_features 添加上 DRIVER_MODESET 标志位,告诉 DRM Core 当前驱动支持 modesetting 操作; drm_mode_config_init() 初始化一些全局的数据结构。注意,那些 Standard Properties 就是在这里创建的。 drm_xxx_init() 则分别用于创建 plane、crtc、encoder、connector 这4个 drm_mode_object。