author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

sdm450

P326

在高通的 SDM450 中,有两种屏幕初始化代码,分别称为 "lk" 和 "kernel" 代码,

"lk" 代码是用于在内核中初始化屏幕的代码。它通常在内核启动时调用,并且旨在初始化屏幕的各种属性,例如刷新率、分辨率、色彩深度等。这种代码通常涉及与 SDM450 中的内核模块通信,以便初始化屏幕。

"kernel" 代码则是在用户空间中初始化屏幕的代码。它通常在应用程序中调用,例如显示驱动程序或系统设置应用程序。这种代码通常涉及与 SDM450 中的用户空间库通信,以便初始化屏幕。

lk

panel.h

/home/scooper/workspace2/qis/P313/bootable/bootloader/lk/dev/gcdb/display/include/panel_st7701s_wvga_video.h

kernel

dtsi

/home/scooper/workspace2/qis/P313/kernel/msm-3.18/arch/arm64/boot/dts/scooper/P326/dsi-panel-st7701s-wvga-video.dtsi

kernel

加载dtsi

/home/scooper/workspace/ljh/sdm450/kernel/msm-3.18/arch/arm64/boot/dts/scooper/P326/msm8953-mdss-panels.dtsi

oem_panel.c

/home/scooper/workspace/ljh/sdm450/bootable/bootloader/lk/target/P326/oem_panel.c

  1. 添加文件路径

#include"include/panel_st7701s_wvga_video.h"

  1. 定义枚举变量

enum{ST7701S_WVGA_VIDEO_PANEL,};

  1. 定义结构体数组

static struct panel_list supp_panels[]= {

{"st7701s_wvga_video", ST7701S_WVGA_VIDEO_PANEL},};

4、根据结构枚举调用针对st7701s的参数值

5、根据屏幕 id 区分调用的屏幕初始化文件

重点mipi_dsi.c

/home/scooper/workspace/ljh/sdm450/bootable/bootloader/lk/platform/msm_shared/mipi_dsi.c

改内容是驱动时,初始化读取屏幕id,并传递给上面oem_panel.c用于区分id调用不同的屏幕初始化参数

int mdss_dsi_panel_initialize(struct mipi_panel_info *mipi, uint32_t broadcast)

{ ……

mdss_dsi_cmds_tx(mipi, &read_da_start_cmd, 1, 0);//下发读取id的指令

mdss_dsi_cmds_rx(mipi, &lcm, 1, 1);//读取显示屏返回的id地址

data1 = ntohl(*lcm); //数据处理

// lk_lcd_id = data1 >> 8; //注释

lk_lcd_id = data1 & 0x00FF0000 ;//daisy new add

lk_lcd_id = lk_lcd_id >> 16;//daisy new add 保留id两位参数

dprintf(CRITICAL, "lk_lcd_id =0x%x\n",lk_lcd_id )

…… }

基于SDM450 兼容st7701s不同id屏幕相关推荐

  1. 最简单的基于FFmpeg的AVDevice例子(屏幕录制)

    ===================================================== 最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDe ...

  2. 详解如何基于Arduino兼容板Teensy LC实现虚拟键盘与鼠标

    目录 前言 硬件环境 环境配置 1. 下载Teensy烧录程序 2 下载TeensyDuino 使用方法 1 模拟键盘 1.1 Keyboard库函数介绍: 1.2 Keyboard键码表: 1.3 ...

  3. 基于WT2003H语音芯片在LCD屏幕驱动的应用实例解析

    基于WT2003H语音芯片在LCD屏幕驱动的应用实例解析 随着现代生活节奏的加快,简单快捷的产品越来越受到人们的青睐,产品也越来越注重人机交互和简单明了的用户体验,一款具备LCD屏幕的产品往往更具有竞 ...

  4. 【适配】521- 移动端开发各种兼容适配问题(屏幕、图像、字体与布局等)

    来源 | https://www.cnblogs.com/coco1s/p/11463599.html 本文是内部的一次分享沉淀,偏向基础但是涉及了一些有意思的细节,文笔有限,才疏学浅,文中若有不正之 ...

  5. (转)webapp兼容移动端的屏幕适配

    亲测可用!!!! 屏幕适配终极方案 <meta name="viewport" content="width=你的基准像素, user-scalable=no&qu ...

  6. php绘制雪花墙,基于雪花算法的 PHP ID 生成器

    Snowflake 是 Twitter 内部的一个 ID 生算法,可以通过一些简单的规则保证在大规模分布式情况下生成唯一的 ID 号码. 其组成为: 第一个 bit 为未使用的符号位. 第二部分由 4 ...

  7. 详解如何基于Arduino兼容板Digispark实现虚拟键盘与鼠标

    目录 前言 硬件环境 USB协议 Digispark介绍 Attiny85介绍 开始前准备 1. 安装Arduino 兼容板设备文件 2. 安装下载驱动 模拟键盘 模拟鼠标 下载到开发板 前言 理论知 ...

  8. 【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)

    运行效果 代码结构 //黑客帝国数字雨 花心胡萝卜 #包含 <windows.h> #包含 <stdlib.h>#define 时钟编号 1 #define 最大长度 25 / ...

  9. 华为Mate40/华为Mate40Pro忘记密码怎么解锁激活手机设备已锁定恢复出厂无法解锁账户ID屏幕锁解除刷机方法教程

    今天带来一台用户华为Mate40Pro手机强制清除华为账号锁案例分享,这个台手机是用户公司手机,由于前使用者离职后未能退出手机的华为账号和锁屏密码,导致手机无法使用. 自己通过简单的恢复出厂设置后,发 ...

最新文章

  1. GetDlgItem的用法
  2. mysql的binary、char、varchar区别
  3. oracle删除定义变量,Oracle存储过程,临时表的创建、删除,变量的定义和使用
  4. 《C++ Primer》7.5.1节练习
  5. java mysubmail_关于MyBatis10种超好用的写法(收藏)
  6. logo计算机语言,LOGO语言
  7. 微信小程序之实现下拉刷新效果
  8. IT创业光技术好,谋略定位不好,你很可能会死得很惨,丢钱、丢客户、丢成果、丢商机、丢思路
  9. 计算机指令窗口如何放大,我电脑每次打开一个窗口都好小,怎么设置为每次都全屏啊?...
  10. Facebook账户 “ 解封、防封、养号 ” 知识要点,已收藏!
  11. 哀悼日很多网站都变成了灰色,这是怎么做到的?
  12. python爬虫——爬取小说
  13. Windows 11正式发布,新功能太绝了!
  14. 深度操作系统20.6发布
  15. Latex学习以及IEEE论文投稿Latex排版经历
  16. 【去雾】|GMAN 去雾
  17. kali安装teamviewer
  18. PHPExcel读取表格内容
  19. softmax分类器 matlab,softmax原理及Matlab实现
  20. 计算机专业需要考英语口语吗,既不考数学也不考英语,这些考研专业你知道吗?...

热门文章

  1. 笔记本电脑无法进入u盘启动界面怎么办?
  2. 高效率同步4开关Buck-Boost DC/DC控制器TMI5700
  3. 小破孩qq表情包 奥运版 怎么用
  4. 数独java界面基础_Java从基础到进阶学习之路—-数独小游戏制作(二) | 学步园...
  5. YACS20223月丙组——三扔硬币
  6. Anime head detection
  7. Java类集框架详细汇总
  8. mysql pooling 作用_关于池化(pooling)理解!!!
  9. Docker的基本概念讲解
  10. [GIS算法] 判断两线段是否相交的四种方案(快速排斥+跨立实验、参数方程求解、凸多边形、点在线的哪一侧)-附C语言实现