drm driver

从Linux内核视角看AMD Radeon显卡驱动:DRM框架下的radeon_driver_load_kms函数详解 本文深入解析了Linux DRM框架下AMD Radeon显卡驱动的初始化机制,重点剖析了radeon_driver_load_kms函数的实现细节。通过源码分析,详细介绍了从PCI设备探测到KMS初始化的完整流程,包括GPU硬件初始化、显示子系统设置以及错误处理机制,为内核开发者和图形系统研究者提供了宝贵的技术参考。 阅读详情

rk drm系统分为两个部分:

  • display-subsystem,包括mode、timing相关的驱动
  • ip driver,包括vop+hdmi,dp,dsi等tx模块
    使用了component技术架构来管理复杂的多ip probe的同步问题;
    从程序宏观主线上分析:
rockchip_drm_init( ): (start_entry){
	add_rk_Sub_driver(hdmi/dp/dsi/vop)
	platform_register_drivers( xxx_sub_drivers),xxx are dw-dp, dw-hdmi, dsi …
	//这个过程触发xxx-probe函数,并完成xxx-component-add,注册了xxx-bind函数
	platform_driver_register(&rockchip_drm_platform_driver);
}

//这个是display-subsystem驱动注册,并注册comp-master,初始化aggregate-dev
rockchip_drm_platform_driver(){
	rockchip_drm_platform_probe( ):  “display_subsystem” probe,  get dts parameters
		→ component_match_add(  ), add xxx component, try to bringup aggregate-device
		→ component_master_add( ), add master-comp ops, try to bringup adev
			==> master-comp.ops.bind() = rockchip_drm_bind( ): 
			==> component_bind_all( )
			==> drm_general_init():  alloc drm_dev, mode_config, gem, sysfs, debugfs …
}

核心全局数据结构,
drm_device, 全局唯一的当前显示设备,管理所有有关的组件
component_list, 每个组件probe时都以component挂载在list上,积木块
aggregate-device, 最终的component-master设备,积木作品
其他组件:hdmi-bind,dw-dp-bind,dsi2-bind,…
例如,hdmi-bind:

初始化hdmi硬件,
初始化hdmi drm数据结构,encoder
找到dts里面link的crtc,并attach到encoder,
如果有bridge可以attach bridge,

hdmi-drm component就初始化完成了:
VOP2 CRTC -> Planes -> Layers -> encoder (HDMI/MIPI/etc) - connector

“display_subsystem” probe 的dts图:主要是vop节点,vop节点再通过remote-ep链接encoder-hdmi/dp
在这里插入图片描述

Component Linux 内核中的 Component 框架机制

Component 框架是 Linux 内核中用于管理复杂设备组件间绑定的机制,特别适用于 DRM (Direct Rendering Manager) 等需要多个独立驱动协同工作的子系统。

ref link: https://www.cnblogs.com/zyly/p/17678424.html

核心设计目的

解决复杂设备的模块化问题:例如 SoC 显示子系统可能由多个独立 IP 核组成
支持延迟绑定:允许组件按任意顺序加载和初始化
简化驱动依赖关系:避免硬编码的设备依赖
典型使用场景(以DRM为例)

显示控制器驱动 (Master):
	定义 component_master_ops
	注册 master 组件

显示接口驱动 (Component):

定义 component_ops
调用 component_add() 注册自己

在这里插入图片描述
典型应用场景

Rockchip DRM驱动:

VOP (CRTC) 作为master
HDMI/DP/MIPI 驱动作为components

复杂音频子系统:

编解码器作为master
各种音频接口作为components

Component框架通过这种松耦合的设计,使得Linux内核能够更好地支持现代SoC中复杂的硬件模块化架构,特别是在显示、音频等需要多组件协同工作的子系统中表现出色。

(三) - DRM驱动常用结构体 对于plane、crtc、encoder、connector几个对象,它们有一个公共基类struct drm_mode_object,这几个对象都由此基类扩展而来(该类作为crtc等结构体的成员)。事实上这个基类扩展出来的子类并不是只有上面提到的几种,只不过这四种比较常见。 阅读详情

相关推荐

第二章 DRM 框架的文件模型:2.2 驱动描述对象 drm_driver

drm_driver 是 DRM 驱动的静态配置表,定义于编译期,包含能力标志(如 DRIVER_GEM、DRIVER_RENDER)、回调函数及字符设备操作接口。其核心作用是声明驱动能力、管理生命周期(open/postclose/release)、对象创建(gem_create_object 等)与观测行为(show_fdinfo)。通过 fops 与 ioctls[] 实现系统调用入口分发,驱动加载时经 drm_dev_register() 注册至核心并创建设备节点,卸载时反向注销。

图形/计算GPU的驱动与虚拟化技术分享园地 736

linux驱动系列学习之DRM(十)

Linux DRM驱动

zichuanning520的博客 1万+

RockChip DRM Display Driver

DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的控制封装,使用户可以方便的进行显示的控制和buffer申请。DRM的设备节点为"/dev/dri/cardX",X为0~15的数值,默认使用card0。

qq_34968572的博客 867

DRM内部结构之驱动程序初始化(一)

name = "my_driver", .desc = "My DRM Driver", .date = "20200101", // 驱动名称和描述。使用`drm_driver_register`函数将`drm_driver`结构体注册到DRM子系统中。.driver_features = DRIVER_USE_MTRR | DRIVER_HAVE_IRQ, // 驱动特性。.unload = my_driver_unload, // 卸载函数。// 注册DRM驱动程序。// 卸载DRM驱动程序。

bai915290475的博客 713

drm架构解析

改文档详细解释了linux显卡驱动drm架构的结构,对各个子模块进行了比较详细的分析,如modesetting,内存管理,drm_helper等。值得参考,内容清晰

DRM_driver_farmerwork_v2.docx

drm框架相关介绍,获取显示器edid信息并解析支持分辨率列表.

【项目原理】DRM驱动概念、组成、框架、源码分析

Linux 中的驱动和驱动是两种不同的图形驱动方式,它们之间有一些区别。DRM驱动:总之,一句话,DRM是Linux目前主流的图形显示框架,相比FB架构,DRM更能适应当前日益更新的显示硬件。

kashine的博客 2万+

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7165

《DRM 专栏》| 彻底入门 DRM 驱动

helper 函数的作用:drm_xxx_funcs 是 drm ioctl 操作的最终入口,但是对于大多数 SoC 厂商来说,它们的 drm_xxx_funcs 操作流程基本相同,只是在寄存器配置上存在差异,因此开发者们将那些 common 的操作流程做成了 helper 函数,而将那些厂商差异化的代码放到了 drm_xxx_helper_funcs 中去,由 SoC 厂商自己实现。5T技术资源大放送!包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。

爱她就要努力 3666

sap 新增科目表_SAP系统中四大科目表的总结

操作科目表定义-OB13 2国家科目表定义-OB13 3集团科目表定义-OB13 4合并科目表(ECCS)定义-CX10 4分配操作科目表到公司代码-OB62 5分配国家科目表到公司代码-OB62 6分配集团科目表到操作科目表-OB13 6分配集团科目表到合并科目表-CXNF 7Operation 8定义集团科目表的科目-FSP0 8定义国家科目表的科目-FSP0 8定义操作科目表的科目-FSP0...

weixin_39585463的博客 1721

别再到处找密钥了!手把手教你搞定Halcon 24.11/25.05的试用授权(附每月更新提醒)

本文详细介绍了Halcon 24.11/25.05试用授权的获取与配置方法,包括解密新版授权机制、快速配置指南、每月更新规律及多版本共存管理技巧。帮助开发者避免常见授权问题,提升工作效率,特别适合机器视觉领域的初学者和专业人士。

weixin_29238147的博客 1152

常识 | drm kms 详解

可以使用pci_map_rom()调用来映射BIOS,这是一个方便的函数,它负责映射实际的ROM,不管它是否已经被隐藏到内存中(通常在地址0xc0000),还是存在于ROM BAR中的PCI设备上。相反,它遵循Unix“一切都是文件”的原则,通过文件系统名称空间公开gpu,使用/dev层次结构下的设备文件。通过使用辅助函数drm_gem_prime_export和drm_gem_prime_import,驱动程序可以在更简单的api中实现gem_prime_export和gem_prime_import。

qq_42278275的博客 3784

全新RGB-D及平面法线数据集DIODE

丰田工业大学联合芝加哥大学和北航发布全新RGB-D及平面法线数据集 DIODE (Dense Indoor and Outdoor DEpth)。

qq_43477338的博客 1539

【DRM】DRM Display Driver Guide

显示子系统是显示输出相关软件硬件的统称,它包括VOP 和 RGB 、BT1120、BT656、I8080、LVDS、MIPI DSI、EDP、DP、HDMI等显示信号输出以及与之对应的软件驱动。显示子系统硬件架构图之 VOP1.0 显示系统架构显示子系统硬件架构图之 VOP2.0 显示系统架构。

爱她就要努力 3810

退火朗之万动力学采样

退火朗之万动力学采样(Simulated Annealing Langevin Dynamics Sampling)结合了退火技术和朗之万动力学,是一种用于分子模拟和统计物理中的计算方法。这种方法可以帮助系统从局部最小值中逃逸,以找到全局最小值或进行有效的配置空间探索。

weixin_39699362的博客 1948

Android 16(API 36)状态栏颜色适配全攻略:从沉浸式到自定义背景

本文全面解析Android 16(API 36)强制沉浸式状态栏带来的适配挑战,提供了从FrameLayout包裹法到动态修改Window背景色的核心解决方案。针对传统状态栏颜色设置失效问题,详细阐述了如何利用WindowInsets API实现自定义背景,并涵盖全屏模式、Fragment切换及第三方ROM兼容性等实战场景,为开发者提供一站式适配指南。

weixin_29227425的博客 594

Architecture of a DRM driver

+ Architecture of a DRM driver +i ---------------------------- + +Written by Laurent Pinchart +Last revised: May 30, 2012 + + +1. Driver initialization +------------------------ + +- Create a stati

yuyin86的专栏 3261

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 479

Linux DRM(四) -- loongson driver

了解loongson 显卡驱动

weixin_41028621的博客 2054

大数据分析案例-基于随机森林模型对北京房价进行预测

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬勃起来。同时,随着社会经济的快速开展,居民的经济条件越来越好,住房条件也在不断地提升。而住房是人民根本生活的保障,也是-一个家庭最重要的资产,从一定的层面.上反映了一个家庭整体的生活水王,多方面的因素使得房地产行业在短时间开展成为我国的支柱产业之一;成为了切实关乎人民生活和利益的重要产业。然而,随着房地产行业的开展,问题也慢慢突显出来,房价一直居高不下成为了一个大问题。 作为国家的支柱产业,房地产的稳定发展关乎国计民生。近几年,房

m0_64336780的博客 8827

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux DRM driver 使用示例

1. 关于linux DRM的介绍以及基本的single buff, duble buff的使用,请参考 https://blog.youkuaiyun.com/hexiaolong2009/article/category/8331603 这里面的介绍比较详尽。 2. plane操作 这里以atmel SAMA5D27 的LCD控制器为例,LCD有4个planes, base plane, ove...

xjq163的专栏 7071

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux drm设备,linux DRM driver 使用示例【转】

DRM实例教程DRM是一个显示驱动框架,也就是把功能封装成 open/close/ioctl 等标准接口,应用程序调用这些接口来驱动设备,显示数据。我们这里将从使用的角度来看看,怎么验证和使用DRM驱动。DRM设备节点DRM驱动会在/dev/dri下创建3个设备节点:libdrm库DRM驱动,对用户空间,提供了专门的的调用库libdrm.so,用户空间通过该库可以间接的调用和使用驱动。打开设备打开...

weixin_35316459的博客 810

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

linux的DRM应用程序,linux DRM driver 使用示例

1. 关于linux DRM的介绍以及基本的single buff, duble buff的使用,请参考这里面的介绍比较详尽。2. plane操作这里以atmel SAMA5D27 的LCD控制器为例,LCD有4个planes,base plane, over1 plane, over2 plane, HEO plane先介绍下drmModeSetPlane,该函数用来设定plane的位置、长宽参...

weixin_34174789的博客 1370

LInux DRM Developer Guide && Linux GPU Driver Developer’s Guide

LInux DRM Developer Guide http://www.landley.net/kdocs/htmldocs/drm.html#drmIntroduction Linux GPU Driver Developer’s Guide https://www.kernel.org/doc/html/latest/gpu/index.html

eydwyz的专栏 2413

linux drm 源码,Linux DRM那些事-内核代码

掀开DRM基本概念的面纱后,我们把“罪恶”的小手伸向DRM内核代码。注:本文和后续DRM驱动系列基于Linux4.4内核、Rockchip RK3399进行介绍。Linux DRM内核代码路径:drivers/gpu/drm。使用ls命令查看该目录,显示如下:root@ubuntu:/home/run/code/rockchip-bsp/kernel/drivers/gpu/drm# lsamd ...

weixin_39598954的博客 1430

Linux内核里Radeon显卡驱动是如何“活”起来的?从drm_get_pci_dev到radeon_driver_load_kms的完整流程解析

本文深入解析了Linux内核中Radeon显卡驱动的初始化流程,从PCI设备探测到DRM核心加载,详细介绍了drm_get_pci_dev和radeon_driver_load_kms的关键步骤。通过源码分析,揭示了Radeon驱动如何与GPU硬件交互,为开发者提供了宝贵的调试和优化经验。

weixin_30732487的博客 336
上一篇: hsync/vsync/porch
下一篇: 零拷贝技术
liveloading
博客等级 码龄7年 53粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值