高通LCD移植流程及常见问题解决办法

LCD 驱动移植流程
1.制作驱动文件
XML 是一个配置文件,放置在 device/qcom/common/display/tools 目录下,通过命令 perl parser.pl panel_xxx_xxx_xxx.xml panel 调用 parser.pl 这个 perl 脚本生成一个 dsi_xxx_xxx_xxx.dtsi 文件和一个 panel_xxx_xxx_xxx.h 文件。其中 .dtsi 文件是 kernel LCD 的驱动文件,放置的目录为 kernel/arch/arm/boot/dts/qcom .h 文件是 lk LCD 的驱动文件,放置的目录为 bootable/bootloader/lk/dev/gcdb/display/include
2. XML 文件的命名
XML 文件的命名遵循 panel_(vendorname)_(module name)_(IC name)_(resolution)_(display type).xml 。例如模组厂为 truly ,模组名为 TDO-FWVGA0446G00002 ,驱动 IC hx8379c ,分辨率为 fwvga(480x854), 驱动方式为 video 的一款模组。其 XML 文件按上面的命名方式就为: panel_truly_tdo_fwvga0446g00002_hx8379c_fwvga_video.xml
3. XML 参数的修改
(1)   参数的修改
这几个参数与 .dtsi .h 文件的名称相关。按如下的格式修改成对应模组的信息即可:
truly-tdo-fwvga0446g00002v1-hx8379c-fwvga-video
truly_tdo_fwvga0446g00002v1_hx8379c_fwvga_video
"hx8379c fwvga video mode dsi panel"
(2)分辨率以及 porch 值的修改
分辨率按屏的分辨率对应修改,将厂商提供的 porch 值填入高通文档中选择对应的平台(例如 8937 )获得 timing 值和 post pre 值,修改 xml 文档里对应的地方。
(3) On-commond off-commond 的修改
On-commond off-commond 命令是屏的初始化命令。模组厂会提供一份 initial code 。厂商给的 initial code 中的参数得通过转换成 DCS 数据包才能通过 MIPI 接口写入 LCD 的寄存器中。 Command 数据第一个字节代表是数据包类型, 0x29 指的是 generic long write ;第二个字节写 0x01 表示 individual packet ;第三个字节代表的是虚拟通道;第四个字节主要配置需要从设备应答的值( dcs read command 用在读命令);第五个字节代表是延时;第六,七个字节代表的是数据长度;第八个字节代表的寄存器地址;第九个及以上的字节表示要写的 data 值。
 
4.获取目标屏文件
根据手机屏获取到代码中对应应该修改的文件 , 可根据 panel name hardware name 的信息来确认文件。
5. kernel 驱动的移植
将用 Perl 命令生成的 .dtsi 文件放到 kernel/arch/arm/boot/dts/qcom 下,然后参考要修改的
文件以前的代码将文件中原屏配置的几处地方修改成目标屏的即可。
6. lk 驱动的移植
.h 文件放入 bootable/bootloader/lk/dev/gcdb/display/include 下,然后修改对应目录下的 oem_panel.c 中相应的地方。对照着原屏的修改即可。还有要根据平台判断要不要手动添加 timing 值,如果需要,修改好 h 文件,将 timing 值添加进去。
7.刷机
编译 boot aboot 镜像,刷入手机,点屏。

LCD 常见问题与解决办法
(一) 图像错位, 图像左右位移几个像素,上方或下方有一条彩色条纹
这种情况一般是由于porch值不对造成的,修改 porch 值。
(二) 更改模组后编译出错

删除 /out/target/product/msm8916_32/obj/EMMC_BOOTLOADER_OBJ/build-msm8916/target/msm8916/oem_panel.d 文件的最后一行。如果不行可以直接删除 /out/target/product/msm8916_32/obj/EMMC_BOOTLOADER_OBJ/build-msm8916/target/msm8916 这个目录。
(三)lcd无显示,打印 log 出现 panel dt parse failed  
这是由于 xml 文件中 DCS 数据包的格式错误,一般是第 6 和第 7 字节所表示的数据长度和实际不符。
(四)LCD 屏幕闪屏
如果外接电源,可能是电压不稳,可以换成数字电源。

你可能感兴趣的:(LCD驱动)