主要代码:
LINUX\android\kernel\arch\arm\boot\dts\qcom\dsi-panel-trust-hx8379c-fwvga-video.dtsi
LINUX\android\kernel\arch\arm\boot\dts\qcom\msm8916-qrd-skum.dtsi 
LINUX/android/bootable/bootloader/lk/dev/pmic/pm8x41/pm8x41_adc.c
LINUX/android/bootable/bootloader/lk/dev/pmic/pm8x41/include/pm8x41_adc.h
LINUX/android/bootable/bootloader/lk/target/msm8916/include/target/display.h
LINUX/android/bootable/bootloader/lk/target/msm8916/init.c
LINUX\android\bootable\bootloader\lk\dev\gcdb\display\include\panel_trust_hx8379c_fwvga_video.h 
\\192.168.142.144\chenhaibing\MSM8916_R113502NEW\LINUX\android\bootable\bootloader\lk\target\msm8916\oem_panel.c

1.Lk :

Adc 兼容

android/bootable/bootloader/lk/dev/pmic/pm8x41/include/pm8x41_adc.h

#defineMPP_2_CHAN_ID 33//chenhaibing 20140925 定义相应的adc通道
voidpm8x41_enable_mpp_as_adc_for_mpp2(uint16_tmpp_num);//chenhaibing 20140925 add for lcm adc

android/bootable/bootloader/lk/dev/pmic/pm8x41/pm8x41_adc.c
Static struct adc_conf adc_data[]={ CHAN_INIT(VADC_USR1_BASE,VADC_BAT_CHAN_ID,VADC_MODE_NORMAL,VADC_DECIM_RATIO_VAL,HW_SET_DELAY_100US,FAST_AVG_SAMP_1,CALIB_RATIO),CHAN_INIT(VADC_USR1_BASE,VADC_BAT_VOL_CHAN_ID,VADC_MODE_NORMAL,VADC_DECIM_RATIO_VAL,HW_SET_DELAY_100US,FAST_AVG_SAMP_1,CALIB_ABS),CHAN_INIT(VADC_USR1_BASE, MPP_2_CHAN_ID,VADC_MODE_NORMAL,VADC_DECIM_RATIO_VAL,HW_SET_DELA
Y_100US,FAST_AVG_SAMP_1,CALIB_ABS),
添加到adc_data初始化数组
读adc数据前,需要使能此接口
/*begin:add by chenhaibing for pm8x41 mpp2 adc enable 20140925*/
voidpm8x41_enable_mpp_as_adc_for_mpp2(uint16_tmpp_num)
{ uint32_tval;
if(mpp_num >MPP_MAX_NUM)
{dprintf(CRITICAL,"Error: The MPP pin number is unavailable\n");
return;}
/* set the MPP mode as AIN */
val =(MPP_MODE_AIN <<Q_REG_MODE_SEL_SHIFT)\ |(0x1<<Q_REG_OUT_INVERT_SHIFT)\ |(0x0<<Q_REG_SRC_SEL_SHIFT);
REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_MODE_CTL),val);
/* Enable the MPP */
val =(MPP_MASTER_ENABLE <<Q_REG_MASTER_EN_SHIFT);
REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_EN_CTL),val);
/* AIN route to AMUX8 */
val =(0x1<<Q_REG_AIN_ROUTE_SHIFT);//AMUX1 
REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_AIN_CTL),val);
}
android/bootable/bootloader/lk/target/msm8916/oem_panel.c
#include"include/panel_trust_hx8379c_fwvga_video.h"//chenhaibing add 0923

主要接口:
oem_panel_select: 主要是根据adc判断lcd兼容
pm8x41_enable_mpp_as_adc_for_mpp2(0x01);
lcm_type =get_vendor_from_adc(MPP_2_CHAN_ID);
if(LCM_TYPE_HS==lcm_type)
{
panel_id =ILI9806E_FWVGA_VIDEO_PANEL;//chenhaibing add 
}
elseif(LCM_TYPE_TS==lcm_type)
{
panel_id =HX8379C_FWVGA_VIDEO_PANEL;
}
Else
{
panel_id =UNKNOWN_PANEL;
ret =false;
Return ret;
}
oem_panel_on负责把.h相关宏和指令,时序设置等,根据oem_panel_select:指定的panel_id给屏驱动所使用的结构体。

kernel篇.

Panel id 会通过command line的方式传递到kernel层, kernel video mdss驱动会通过调用dtsi相关节点信息进行访问,使得lcm被正常驱动。
dtsi相关节点信息:
时序设置:
qcom,mdss-dsi-panel-timings = [4D 1A 12 00 40 42 16 1E 14 03 04 00];

80-NH713-1_DSI_TIMING_PARAMETERS_USER_INTERACTIVE_SPREADSHEET.xlsm
DSI and MDP registers sheet 页写入下面信息:
frame rate ,lane config,pixel format BPP,Active Width,Active Height
Hsync Pulse Width,Hori. Back Porch,Hori. Front Porch,Vsync Pulse Width,Vert. Back Porch,Vert. Front Porch

拷贝下面的值填入上面数组。
2. DSI PHY registers
PHY Registers value in hex
DSIPHY_TIMING_CTRL_0 #VALUE!
DSIPHY_TIMING_CTRL_1 1A
DSIPHY_TIMING_CTRL_2 12
DSIPHY_TIMING_CTRL_3 0
DSIPHY_TIMING_CTRL_4 40
DSIPHY_TIMING_CTRL_5 42
DSIPHY_TIMING_CTRL_6 16
DSIPHY_TIMING_CTRL_7 1E
DSIPHY_TIMING_CTRL_8 14
DSIPHY_TIMING_CTRL_9 3
DSIPHY_TIMING_CTRL_10 4

ESD:

qcom,mdss-dsi-panel-status-command = [06 01 00 01 05 00 02 09 08]; 
qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode"; 
qcom,mdss-dsi-panel-status-check-mode = "reg_read"; 
qcom,mdss-dsi-panel-status-value = <0x90>; 
qcom,esd-check-enabled;

比如:

若需要返回多个参数,需要改写代码:
Mdss_dsi_host.c
static int mdss_dsi_read_status(struct mdss_dsi_ctrl_pdata *ctrl)
{
struct dcs_cmd_req cmdreq;

memset(&cmdreq, 0, sizeof(cmdreq));
cmdreq.cmds = ctrl->status_cmds.cmds;
cmdreq.cmds_cnt = ctrl->status_cmds.cmd_cnt;
cmdreq.flags = CMD_REQ_COMMIT | CMD_CLK_CTRL | CMD_REQ_RX;
cmdreq.rlen =0;
cmdreq.cb = NULL;
cmdreq.rbuf = ctrl->status_buf.data;

return mdss_dsi_cmdlist_put(ctrl, &cmdreq);
}

/*begin: add by chenhaibing for hx8379c read status 20141021*/
static int mdss_dsi_read_status_for_trust(struct mdss_dsi_ctrl_pdata *ctrl)
{
struct dcs_cmd_req cmdreq;

memset(&cmdreq, 0, sizeof(cmdreq));
cmdreq.cmds = ctrl->status_cmds.cmds;
cmdreq.cmds_cnt = ctrl->status_cmds.cmd_cnt;
cmdreq.flags = CMD_REQ_COMMIT | CMD_CLK_CTRL | CMD_REQ_RX;
cmdreq.rlen = 4; //modified 4 这个会发送37指令,指定返回4个参数.
cmdreq.cb = NULL;
cmdreq.rbuf = ctrl->status_buf.data;

return mdss_dsi_cmdlist_put(ctrl, &cmdreq);
}

/*end: add by chenhaibing for hx8379c read status 20141021*/

mdss_dsi_reg_status_check添加相关军客制化判断逻辑.

在msm8916调试 Himax 8379C 时遇到功耗问题:

原因分析:

量测试开机或唤醒的波形图,是因为此IC不能自己进入ulps模式,msm8916默认的source code 也没有开启ulps.导致上面实测试波满足与IC spec不符。

引起屏漏电.

解决方案在dtsi配置下面节点.

qcom,mdss-dsi-lp11-init; //确保reset 信号拉低时,clock和data都要及时被拉高,某些IC时序有此要求.

qcom,suspend-ulps-enabled;

上面节点打开后,还需要高通释放相关patch合入才能最终解决此问题。

客制化启动logo方法

How to customize splash image
ntroduction and Background:

For LK display (boot loader) logo, there are two methods:
a) Read the splash image data from splash.h file.
b) Get the splash image data from Splash Partition.

Solution Statement:

For a), please see the below source codes:

bootable/bootloader/lk/platform/msm_shared/include/splash.h
bootable/bootloader/lk/dev/fbcon/fbcon.c

When fbimg is NULL, LK display data gets from imageBuffer_rgb888 arrays. Please see the below snippet codes.

void display_image_on_screen()
{
struct fbimage default_fbimg, *fbimg;
bool flag = true;

fbcon_clear();
fbimg = fetch_image_from_partition(); // Splash image from partition

if(!fbimg) {
flag = false;
fbimg = &default_fbimg;
fbimg->header.width = SPLASH_IMAGE_HEIGHT;
fbimg->header.height = SPLASH_IMAGE_WIDTH;
#if DISPLAY_TYPE_MIPI
fbimg->image = (unsigned char *)imageBuffer_rgb888;
#else
fbimg->image = (unsigned char *)imageBuffer;
#endif
}

fbcon_putImage(fbimg, flag);
}

For b), the steps to generate the splash.img:

1). Install the python on Linux desktop OS.
sudo apt-get install python-imaging

2). Prepare the logo picture with the PNG format in "device/qcom/common/display/logo" folder, such as "test.png".
python ./logo_gen.py test.png

3). Add splash partition on your partition.xml, such as 
<partition label="splash" size_in_kb="10240" type="20117f86-E985-4357-B9EE-374BC1D8487D" bootable="false" readonly="false" filename=""/>

4). Check if have "splash.img", and then flash splash image to your device.
fastboot flash splash splash.img

第二种:python ./logo_gen.py test.png (MSM8916平台没有看到logo_gen.py) ,flash.img4). 
Check if have "splash.img", and then flash splash image to your device.

原文:http://www.cnblogs.com/lexuele/p/4688581.html

msm8916 lcd 相关调试点指导相关推荐

  1. QualcommMTK平台lcd/tp调试及问题总结(一)----背光

    Qualcomm&MTK平台lcd/tp调试及问题总结 LCD原理结构 LCD背光板 下偏光板 薄膜基板(TFT) 液晶 彩色滤光片 上偏光片 原理 视图如下 高通平台 lk启动方式下(主要安 ...

  2. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

  3. 全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853

    1 概述 编写目的 本文档将介绍sunxi 平台Display Engine 模块中LCD 的调试方法. LCD 调试方法,调试手段. LCD 驱动编写. lcd0 节点下各个属性的解释. 典型LCD ...

  4. 【转贴】gdb中的信号(signal)相关调试技巧

    一篇不错的帖子,讲的是gdb中的信号(signal)相关调试技巧 转自Magic C++论坛  http://www.magicunix.com/index_ch.html  http://www.m ...

  5. Xilinx AXI Crossbar相关调试记录

    Xilinx AXI Crossbar相关调试记录 本文记录在使用Xilinx AXI Crossbar IPcore现象 ** AXI Crossbar IPcore设置如下** 使用AXI Cro ...

  6. 埃斯顿工业机器人控制柜_埃斯顿机器人调试作业指导书.PDF

    埃斯顿机器人调试作业指导书 埃斯顿机器人调试作业指导书 1. 目的 为了保证成品机器人的质量,特制定本标准. 2.适用范围 该规范适用于所有产品机器人调试流程. 3.引用标准 GB/T 5226.1- ...

  7. gdb中的信号(signal)相关调试技巧

    一篇不错的帖子,讲的是gdb中的信号(signal)相关调试技巧 转自Magic C++论坛 http://www.magicunix.com/index_ch.html http://www.mag ...

  8. LCD驱动调试中部分常见问题的分析及解决办法

    点击打开链接http://www.52rd.com/Blog/Detail_RD.Blog_DamonKabo_30355.html 点击打开链接 http://blog.csdn.net/color ...

  9. LCD驱动调试以及Framebuffer

    内容提要: 1. android display相关的名词 2. 调试LCD驱动需要注意的步骤 3. 关于帧缓冲区及I/O内存 ------------------------------------ ...

  10. linux lcd驱动调试 echo dev/fb0,LCD驱动程序 - osc_msmij2gf的个人空间 - OSCHINA - 中文开源技术交流社区...

    LCD驱动程序 假设 app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 kernel: fb_open int fbidx = iminor ...

最新文章

  1. JavaEE路径陷阱之getRealPath
  2. 微生物组-扩增子16S分析研讨会(2020.1)
  3. 如何数据整合IBM Tivoli
  4. 分拣外观残缺的机器人_复合机器人AGV+协作机器人的应用领域
  5. 【Java】灵活使用自定义注解和反射
  6. python模拟登录webspare_全面解读python web 程序的9种部署方式
  7. 【报告分享】2020-2021年中国职业教育投融资发展报告.pdf(附下载链接)
  8. 20190613 一个SQL问题
  9. labelimg方框改变颜色
  10. 一文看懂中国的金融体系
  11. 计算机网络自学之路,必看的网络工程师学习路线
  12. iTunes 12恢复.ipsw固件
  13. 唐峻:互联网内容产业永远有机会
  14. 劳务派遣能解决哪些用工难题?企业关心的都在这里!
  15. 使用beeline/hive时,该如何停止打印INFO日志
  16. 读书笔记:《软件架构师应该知道的97件事》
  17. ICPC2017网络赛(西安)B coin (概率计算)
  18. Android Results API
  19. windows 10 搭建Omnipeek环境
  20. 周期性无功电流扰动的孤岛检测仿真

热门文章

  1. 山东科技大学2015-2016学年第一学期程序设计基础期末考试第一场 题解
  2. 训练CV模型新思路来了:用NLP大火的Prompt替代微调,性能全面提升
  3. [每日短篇] 5 - Sublime Text 的正则表达式 Capturing Group
  4. 关于XShell下载安装和连接Ubuntu(linux)
  5. 0922CSP-S模拟测试赛后总结
  6. 用MPI进行分布式内存编程(二)MPI_allreduce MPI_scatt MPI_bcast.....
  7. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest
  8. Ubuntu修改时区和更新时间
  9. 笔记本计算机回收站在哪里,笔记本电脑如何设置回收站自动清空
  10. Android APP升级时解析程序包时出现问题