MTK Linux DRM分析(十二)- KMS Panel框架层(drm_panel.c、drm_mipi_dbi.c、drm_mipi_dsi.c)

一、简介

三个代码文件(drm_mipi_dbi.c、drm_panel.c、drm_mipi_dsi.c)的分析。这些文件都是Linux内核DRM(Direct Rendering Manager)子系统的组成部分,主要用于支持显示面板,特别是通过MIPI(Mobile Industry Processor Interface)接口的显示设备。它们提供了显示驱动的框架、面板管理和接口通信的抽象层。

二、代码分析

1. drm_mipi_dbi.c 文件分析

文件概述
  • 目的:提供MIPI Display Bus Interface (DBI) LCD控制器的支持。主要针对通过SPI(Serial Peripheral Interface)连接的MIPI Type C显示器(如小型LCD面板)。支持命令发送、帧缓冲更新、电源管理等。
  • 关键特性
    • 支持MIPI DBI命令(如读/写内存、设置地址)。
    • 处理SPI传输(包括9-bit和8-bit模式)。
    • 与DRM框架集成,提供简单显示管道(simple display pipe)。
    • 支持调试文件系统(debugfs)和旋转模式。
  • 依赖:依赖DRM核心(如drm_connector、drm_framebuffer)、SPI子系统和GPIO。
主要流程
  1. 初始化:使用mipi_dbi_spi_init初始化DBI结构,设置命令函数(如mipi_dbi_typec1_command或mipi_dbi_typec3_command)。然后调用mipi_dbi_dev_init设置DRM设备、连接器和显示模式。
  2. 命令发送:通过mipi_dbi_command_read、mipi_dbi_command_buf等函数发送MIPI DCS命令。底层使用SPI传输(如mipi_dbi_spi_transfer)。
  3. 帧缓冲更新:mipi_dbi_pipe_update处理脏矩形(dirty rectangle),调用mipi_dbi_fb_dirty更新显示内存。涉及缓冲拷贝(mipi_dbi_buf_copy)和窗口地址设置(mipi_dbi_set_window_address)。
  4. 启用/禁用:mipi_dbi_enable_flush启用面板(包括背光),mipi_dbi_pipe_disable禁用面板(包括清屏)。
  5. 调试:通过debugfs文件(如"command")允许用户发送命令或读取状态。
  6. SPI特定处理:处理不同SPI模式(9-bit vs 8-bit),包括字节交换和传输分块。

整体流程:驱动加载 -> 初始化DBI和DRM -> 命令/数据传输 -> 帧更新 -> 电源管理。

mipi_dbi_spi_init (入口: 初始化SPI DBI)-> mipi_dbi_typec1_command (设置命令函数,如果无DC GPIO)-> mipi_dbi_spi1_transfer (9-bit SPI传输)-> mipi_dbi_spi1e_transfer (如果不支持9-bit,模拟)-> spi_sync (底层SPI同步传输)-> mipi_dbi_typec1_command_read (读命令)-> spi_sync-> mipi_dbi_typec3_command (设置命令函数,如果有DC GPIO)-> mipi_dbi_spi_transfer (8/16-bit SPI传输)-> spi_sync-> mipi_dbi_typec3_command_read (读命令)-> spi_syncmipi_dbi_dev_init (入口: 初始化DBI设备)--> drm_simple_display_pipe_init (DRM管道初始化)-> mipi_dbi_connector_get_modes (获取模式)-> drm_mode_duplicate (复制模式)-> mipi_dbi_mode_config_funcs (模式配置)-> drm_gem_fb_create_with_dirty (创建帧缓冲)-> mipi_dbi_rotate_mode (处理旋转)-> mipi_dbi_debugfs_init (调试初始化)-> debugfs_create_file ("command"文件)-> mipi_dbi_debugfs_command_write (写命令)-> mipi_dbi_command_buf-> mipi_dbi_debugfs_command_show (读命令)-> mipi_dbi_command_bufmipi_dbi_command_buf (核心: 发送命令)-> mipi_dbi_command_stackbuf (栈缓冲版本)--> dbi->command (调用typec1或typec3命令函数)-> mipi_dbi_spi_transfer (或模拟)mipi_dbi_pipe_update (更新管道)-> drm_atomic_helper_damage_merged (计算脏矩形)-> mipi_dbi_fb_dirty (脏帧更新)-> mipi_dbi_buf_copy (拷贝缓冲)-> drm_fb_memcpy / drm_fb_xrgb8888_to_rgb565 (格式转换)-> mipi_dbi_set_window_address (设置地址)-> mipi_dbi_command_buf (写内存开始)mipi_dbi_enable_flush (启用)-> mipi_dbi_fb_dirty (全屏刷新)-> backlight_enable (背光)mipi_dbi_pipe_disable (禁用)-> backlight_disable-> mipi_dbi_blank (清屏)-> mipi_dbi_set_window_address-> mipi_dbi_command_buf

2. drm_panel.c 文件分析

文件概述
  • 目的:提供DRM面板帮助器框架,用于注册和管理显示面板(如LCD)。允许驱动通过中央注册表检索面板,并处理面板的电源、背光和模式探测。
  • 关键特性
    • 面板注册/注销(链表管理)。
    • 标准操作:准备(上电)、启用(开启显示)、禁用、获取模式。
    • 支持OF(OpenFirmware)设备树查找面板。
    • 集成背光设备(可选)。

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

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

相关文章

合合信息acge模型获C-MTEB第一,文本向量化迎来新突破

前言: 在当今时代,大型语言模型以其惊人的发展速度和广泛的应用前景,正成为全球科技界的瞩目焦点。这些模型的强大能力,源自于背后默默支撑它们的Embedding技术——一种将语言转化为机器可理解的数值向量的关键技术。随着大型语言…

26.内置构造函数

2.内置构造函数2.1Object2.2Array2.3String2.4number

tauri配置允许执行eval脚本,在打包cocos游戏web/phone移动端的时候一定要配置

解决办法:在tauriconfig中配置"csp": "default-src self asset: unsafe-inline customprotocol://* http://localhost:* ws:localhost:* unsafe-eval ipc: http://ipc.localhost; script-src unsafe-eval self https://www.googletagmanager.com uns…

K 均值聚类算法学习总结

一、聚类算法基础认知 核心概念:聚类属于无监督学习,核心是把 “相似的样本” 自动分到同一组(簇),不需要预先标注的标签。主要挑战是怎么定义 “相似性”、评估聚类效果以及确定最好的聚类数量。 距离度量&#xff1a…

基于Spring Cloud Gateway动态路由与灰度发布方案对比与实践指导

基于Spring Cloud Gateway动态路由与灰度发布方案对比与实践指导 一、问题背景介绍 在微服务架构中,API网关负责统一入口、路由分发与权限校验功能。随着业务需求的不断演进,如何灵活地实现路由动态更新、版本灰度发布以及流量打点就成为运维和开发团队的…

MySQL InnoDB Buffer Pool详解:原理、配置与性能优化

1. 为什么需要 Buffer Pool?1.1 数据库性能瓶颈分析在 MySQL 的运行过程中,最核心的性能瓶颈来自磁盘 IO。磁盘访问延迟:一次机械硬盘 IO 操作可能需要数毫秒,即使是 SSD,访问延迟也在几十微秒量级。内存访问延迟&…

ArcGIS Pro 安装路径避坑指南:从崩溃根源到规范实操(附问题修复方案)

作为 GIS 从业者,你是否遇到过这些糟心场景:ArcGIS Pro 双击启动无响应、运行中突然弹出 “Runtime Error” 崩溃、加载矢量数据时提示 “找不到指定文件”?排查半天后发现,这些问题的 “元凶” 竟藏在安装路径里 —— 中文路径或…

Python 实战:内网渗透中的信息收集自动化脚本(2)

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技…

批量转双层PDF软件:高效转换,提升文档管理效率

在文档管理和信息检索中,双层PDF文件因其独特的结构而备受青睐。双层PDF文件不仅保留了原始文档的外观,还增加了对文档内容进行搜索和选择的功能,极大地提高了文档管理和信息检索的效率。批量转双层PDF软件正是为了解决这一需求而设计的&…

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(七) 鼠标在控件上悬浮时的提示

文本提示on_hover_text ui.label("标签").on_hover_text("这是一个标签"); ui.text_edit_singleline(&mut edittext).on_hover_text("这是输入框"); if ui.button("提交").on_hover_text("这是一个按钮").clicked(){}提…

【NVIDIA-B200】生产报错 Test CUDA failure common.cu:1035 ‘system not yet initialized‘

目录 1. 检查 NVIDIA 驱动状态 2. 验证 CUDA 安装情况 3. 检查相关服务运行状态(多 GPU 场景关键) 4. 用简单 CUDA 程序验证基础功能 5. 重启系统 6. 排查硬件相关问题 7.实际生产解决步骤 报错日志: # Collective test starting: all_reduce_perf # nThread 1 nGpu…

ansible playbook 实战案例roles | 实现基于nfs的日志归档

文章目录一、核心功能描述二、roles内容2.1 文件结构2.2 tasks文件内容2.3 files文件内容免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn 一、核心功能描述 这个 Ansible Role 的核心功能是:​实现自动化日志归档系统&#xff0c…

RabbitMQ:技巧汇总

目录一、基础知识1.1、RabbitMQ:Windows版本安装部署1.2、RabbitMQ:Linux版本安装部署1.3、RabbitMQ:数据隔离1.4、RabbitMQ:交换机(Exchange)1.5、RabbitMQ:SpringAMQP入门案例1.6、RabbitMQ&a…

【ARM vs RISC-V:芯片架构双雄争霸,谁将主宰AI时代?】

2010年,加州大学伯克利分校的实验室诞生了一个颠覆性的构想——RISC-V开源指令集。谁曾想,这个学术项目会在15年后让芯片巨头ARM如临大敌?2025年7月,ARM悄悄上线riscv-basics.com质疑网站又紧急撤下的戏剧性事件,揭开了…

深入理解纹理与QtOpenGL的实现

引言 在现代计算机图形学中,纹理(Texture)是增强三维模型视觉效果的重要工具。通过将二维图像映射到三维模型表面,纹理可以为简单的几何形状添加复杂的细节和真实感。OpenGL作为广泛使用的图形库,提供了强大的纹理处理…

CrystalDiskInfo中文版(硬盘检测工具) 中文版

获取地址:硬盘检测工具 Process Lasso是一款独特的调试进程级别的系统优化工具,主要功能是基于其特别的算法动态调整各个进程的优先级并设为合理的优先级以实现为系统减负的目的,可有效避免蓝屏、假死、进程停止响应、进程占用 CPU 时间过多…

K8S集群-基于Ingress资源实现域名访问

目录 一、准备 1、在master节点部署ingress的资源清单文件 2、在node节点部署ingress-1.11.tar镜像(根据部署环境选择版本) 二、基于NodePort模式验证 1、在master节点进入ingress的资源清单文件 2、修改deploy.yaml文件 3、生成deploy.yaml资源 4…

iOS 数据持久化

📱 iOS数据持久化 ✨ 核心概念 数据持久化是指将内存中的数据以特定格式保存到持久存储介质(如硬盘)的过程,使得应用重启后数据依然可用。在iOS中,由于沙盒机制的限制,应用只能访问自己沙盒内的文件。 沙盒…

数据结构 -- 树

一、树的基本概念(一)定义树是由 n(n ≥ 0) 个结点组成的有限集合,是一种非线性层次结构:当 n 0 时,称为空树;当 n > 0 时,存在唯一的根结点(无前驱结点&…

单片机---------WIFI模块

1.ESP-12F模组基础知识ESP12-F模组(安信可(Ai-Thinker)ESP8266系列模组)是一款基于乐鑫(Espressif)公司ESP8266芯片的Wi-Fi无线通信模块,广泛应用于物联网(IoT)领域。它体…