Linux内核4.14版本——drm框架分析(6)——实例注册drm device/ encoder/crtc/plane/connector等

news2024/12/23 20:45:01

目录

1. 简介

2. drm device的注册

 3. fops


         根据前面几篇文档的介绍,我们知道了drm的整体的构成,后面的文章我们从实际的一个例子中进行分析。

1. 简介

kernel版本:4.14

gpu:ARM Mali DP650

hdmi:dw hdmi

涉及的代码除了drm core层的代码外,还设计的如下:

gpu:

drivers\gpu\drm\arm\malidp_drv.c
drivers\gpu\drm\arm\malidp_crtc.c
drivers\gpu\drm\arm\malidp_hw.c
drivers\gpu\drm\arm\malidp_planes.c
drivers\gpu\drm\arm\malidp_regs.c
drivers\gpu\drm\arm\malidp_drv

hdmi:

drivers\gpu\drm\bridge\synopsys\dw-hdmi.c

2. drm device的注册

        主要代码在文件drivers\gpu\drm\arm\malidp_drv.c中,drm框架中还设计component子系统,本专题中不讨论这个,当dts匹配上的时候,最终调用函数malidp_bind。

      crtc和plane是在gpu这边注册的,而connector和encoder是在dw-hdmi那边注册的,内核中没有现成的引用,可以参考drivers\gpu\drm\arm\virt_hdmi.c。

     其他的注册可以自己阅读这里不做详细介绍了。

 3. fops

#define DEFINE_DRM_GEM_CMA_FOPS(name) \
	static const struct file_operations name = {\
		.owner		= THIS_MODULE,\
		.open		= drm_open,\
		.release	= drm_release,\
		.unlocked_ioctl	= drm_ioctl,\
		.compat_ioctl	= drm_compat_ioctl,\
		.poll		= drm_poll,\
		.read		= drm_read,\
		.llseek		= noop_llseek,\
		.mmap		= drm_gem_cma_mmap,\
		DRM_GEM_CMA_UNMAPPED_AREA_FOPS \
	}

DEFINE_DRM_GEM_CMA_FOPS(fops);

        对linux来说,一切皆设备。drm对应的字符设备驱动描述符如上所示,drm_ioctl是用户态和内核态间的交互的重中之重,我们下一节讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/623399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[已解决]无法在Windows 11中扩展C盘

如果你的台式电脑或笔记本电脑刚刚升级到Windows 11,如果你没有足够的硬盘空间来保存新文件和软件,那你可能会收到磁盘空间不足的警告。在这种情况下,你可能需要扩展分区来解决这个问题。 虽然Windows系统自带了“磁盘管理”工具&a…

10分钟了解Kubernetes网络

Kubernetes是现代容器化应用不可或缺的强大、可靠的基础平台。本文将介绍Kubernetes中与网络相关的组件,正是这些组件支撑Kubernetes成为云原生应用的首选基础设施。原文: Networking in Kubernetes 网络是Kubernetes中非常值得理解的重要主题,它帮助Kub…

【熬夜送书 | 第四期】python期末考试总结

文章目录 前言单选题程序填空题函数题编程题熬夜送书 第三期 前言 博主也是第一次接触到python语言,在考试前过了一遍python语法,因为有Java基础学习起来相对比较轻松,学校考的题相对简单一些,也是PTA上机考试,大概30…

字节测开岗面试记:二面被血虐,幸好还是拿到了Offer.....

在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力。 但说实话,想进大厂还真没那么容易。最近面试字…

让CSS布局呈现您的个性:学习常见布局方式

本文介绍常用的css布局&#xff1a; 三栏布局两列自适应布局元素居中 盒模型简介&#xff1a; 三栏布局 中间列自适应宽度&#xff0c;两边宽度固定 1. 圣杯布局 <!DOCTYPE html> <html> <head> <style> /* This is a single-line comment */.con…

迅为RK3588开发板-基于瑞芯微RK3588摄像头方案

硬件&#xff1a; RK3588开发板摄像头 MIPI摄像头&#xff1a; 1.1 硬件连接 RK3588 底板上有四个摄像头接口&#xff0c;如下图所示&#xff0c;此四个接口均可连接摄像头 ov5695 和 摄像头 ov13850。 摄像头模块连接硬件时要将模块对准插槽缺口处&#xff0c;J1 接口连接摄…

ipad手写笔哪款好?最好用的电容笔

近几年&#xff0c;电容笔逐渐成为人们日常生活中最重要的数码产品之一&#xff0c;不管是书写、绘画或者是玩游戏&#xff0c;使用iPad的地方就都能看到电容笔的身影。那么&#xff0c;哪个品牌的电容笔质量比较好&#xff1f;下面&#xff0c;我来给大家推荐四款好用的电容笔…

node+uniapp+socket简易聊天

目录 一、技术简介 1.1、客户端 1.2、服务器 二、代码分析 2.1、前端连接后端 2.2、前端发送&#xff0c;后端接收并广播回去 三、效果展示 四、升级版 一、技术简介 1.1、客户端 uni-app项目自行创建、weapp.socket.io这个需要后端下载cnpm i weapp.socket.io&…

1.2C++运算符重载

C运算符重载 C运算符重载是指对已有的C运算符进行重新定义&#xff0c;使其能够适用于用户自定义的数据类型。通过运算符重载&#xff0c;我们可以使用C运算符对自定义的数据类型进行操作&#xff0c;使得程序更加简洁、易读、易维护。 C支持对大部分运算符进行重载&#xff…

CleanMyMac X2023电脑深度清理软件

在使用mac时&#xff0c;小编遇到了运行内存不足、硬盘空间不足的情况。遇到这种情况&#xff0c;我们可以借助经典的电脑深度清理软件——CleanMyMac X&#xff0c;清理不常用的软件和系统垃圾&#xff01; 作为一款专业的mac电脑系统管家&#xff0c;CleanMymac X一直致力于…

韧性数据安全体系的原则和组成|CEO专栏

“韧性”数据安全体系&#xff0c;是美创科技在数据安全的最新探索。 特设专栏“构建适应性进化的韧性数据安全体系”中&#xff0c;首期文章&#xff08;点击此处跳转&#xff09;&#xff0c;我们重点介绍了韧性数据安全体系的三个目标&#xff1a;韧性和弹性、适应性进化、复…

【基于Rsync实现Linux To Windows文件同步】

基于Rsync实现Linux To Windows文件同步 简介安装步骤安装Linux服务器端1.安装rsync2.启动Rsync3.验证是否启动成功4.修改rsyncd.conf重启rsync服务 安装Windows客户端1.rsync客户端安装&#xff1a;2.配置环境变量3.测试rsync命令4.创建密码文件5.密码文件授权6.查看服务端需要…

【jupyter notebook】‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

目录 0.问题背景环境介绍 1.解决步骤 2.测试步骤 0.问题背景环境介绍 1&#xff09;环境&#xff1a;windows64 2&#xff09;问题背景&#xff1a;在搭建jupyter notebook的过程中&#xff0c;想用windows的任务管理器启动jupyter notebook或者使用【jupyter notebook --…

赋能生态合作 共话数字创新 | 2023开放原子全球开源峰会软硬协同开源分论坛即将启幕

随着信息技术的迅猛发展&#xff0c;当下智能应用场景日益复杂、数据量爆发式增长、数据形式也多种多样&#xff0c;作为跨越无数创新领域的驱动者&#xff0c;理应打造更高质量的生态系统和开源生态&#xff0c;提供丰富的软件产品和服务&#xff0c;打造软件和硬件协同开源的…

地理空间数据云管理-四维轻云1.3.2-版本更新内容

很多用户想要在不上传数据的情况下查看案例数据&#xff0c;我们在四维轻云1.3.2版本中为新用户新增了示例项目。此外&#xff0c;此次更新还新增了标绘数据模式和场景定时保存提醒功能&#xff0c;优化了插件启动流程以及移动和旋转变化轴。 1、新增示例项目 示例项目中包含…

idea里边创建类的时候和方法自动生成注释

idea里边创建类的时候和方法自动生成注释 我们经常写代码的时候需要在类上编写注释&#xff0c;标明这个类是谁写的有什么作用&#xff0c;其实每次写都会发现有很多相同的字段&#xff0c;比如作者&#xff0c;创建时间&#xff0c;类名等&#xff0c;有的时候方法上也要标明…

bug:wx.switchTab: url 不支持 queryString

uni-app 开发小程序时 &#xff0c;bug&#xff1a;wx.switchTab: url 不支持 queryString 前言&#xff1a;在首页分类入口跳转到具体某一分类时&#xff0c;分类页是项目的底导页面&#xff0c;存在于tabbar里&#xff0c;需要使用switchTab进行跳转。参数是分类的id&#xf…

coreDNS 常见问题及优化方案

目录 问题现象一 导致原因 优化方案 问题现象二 导致原因 优化方案 Core DNS配置优化和说明 参考文章&#xff1a; 问题现象一 重启coredns pod导致集群业务解析域名五分钟可不用 导致原因 当集群使用IPVS作为kube-proxy负载均衡模式时&#xff0c;您可能会在CoreDNS…

【IMX6ULL驱动开发学习】03.设置IMX6ULL开发板与虚拟机在同一网段

为什么要设置IMX6ULL与虚拟机通信&#xff1f; 因为要把在虚拟机下编译的文件传到IMX6ULL开发板上运行 设置好同一网段&#xff0c;可以互ping后&#xff0c;可以参考这篇博客&#xff0c;实现开发板与虚拟机的文件互传 IMX6ULL开发板与虚拟机互传文件 目录 一、设置window…

Vue.js 中的 mixin 和 extends 有什么区别?

Vue.js 中的 mixin 和 extends 有什么区别&#xff1f; 在 Vue.js 中&#xff0c;mixin 和 extends 是两种常见的代码复用方式。它们都可以让我们在多个组件之间共享代码&#xff0c;提高代码复用性和开发效率。但是&#xff0c;它们之间还是有一些区别的&#xff0c;本文将介…