基于SDM450 兼容st7701s不同id屏幕

authordaisy.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 )

…… }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Linux内核提供的GPIO子系统来检测SDM660 USB端口的插入和拔出事件。通过查询GPIO子系统可知,SDM660 USB端口上的插入和拔出事件可以通过检测GPIO电平变化来实现。具体实现方式如下: 1. 首先,您需要查询SDM660芯片手册,以确定USB端口的GPIO编号。通常,SDM660芯片手册中将会提供GPIO编号的列表。 2. 在Linux内核中,您可以通过/sys/class/gpio目录下的GPIO文件系统来访问GPIO引脚。您可以使用以下命令将GPIO引脚导出为文件系统: ``` echo [GPIO编号] > /sys/class/gpio/export ``` 其中,[GPIO编号]是您在第一步中查询到的SDM660 USB端口GPIO编号。 3. 接下来,您可以使用poll或者epoll等系统调用监控GPIO文件系统中的值变化。当USB插入或拔出时,GPIO文件系统中相应的值将会发生变化。 例如,您可以使用以下命令来监控GPIO文件系统中的值变化: ``` # 在GPIO文件系统中打开GPIO引脚 echo in > /sys/class/gpio/gpio[GPIO编号]/direction # 监听GPIO文件系统中的值变化 cat /sys/class/gpio/gpio[GPIO编号]/value ``` 每当USB插入或拔出时,cat命令将会阻塞,直到GPIO文件系统中相应的值发生变化。 4. 最后,您可以在用户空间编写一个程序,以实现对SDM660 USB端口插入和拔出事件的监控。您可以在程序中使用Linux内核提供的poll或者epoll等系统调用来监听GPIO文件系统中的值变化,并在USB插入或拔出时执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值