高通安卓调试LCD几方面总结(二)
最近工作太忙了,而且经常出差,所以有一个多月没有来得及更新博客了,唉,之前一个项目LCD也遇到几个棘手的问题,压力山大。
闲话少说,直接进入正题了,在上一篇里写了高通平台android2.3里的kernel和bootloader(LK)里LCD驱动的移植,这一篇主要写一下在4.0里LCD驱动的移植。
(1) kernel
高通的android4.0和2.3在kernel里的LCD驱动是有区别的,主要在于4.0里少了latedisplay.c这个文件。这里我以renesas公司的r61408这颗IC来介绍。我使用的是RGB565的接口,由于kernel里有高通公司提供的其它家IC的代码,我同样是以truly的来作为参考的,代码的框架不变。首先就是在kernel\drivers\video\msm下以truly的代码为模板,创建一个名为lcdc_r61408.c的文件,文件里的内容照着truly的来做。
这里先来把Makefile和Kconfig文件修改好。在kernel\drivers\video\msm文件夹下的Makefile里添加:
obj-$(CONFIG_FB_MSM_LCDC_RENESAS_R61408) += lcdc_renesas_r61408.o
在此目录下打开Kconfig文件,在里面添加:
config FB_MSM_LCDC_RENESAS_R61408
bool
select FB_MSM_LCDC_PANEL
default n
config FB_MSM_LCDC_RENESAS_R61408_PT_PANEL
depends on FB_MSM_LCDC_HW
bool "LCDC Renesas PT Panel"
select FB_MSM_LCDC_RENESAS_R61408
default n
---help---
Support for LCDC Renesas PT panel
还要在kernel\arch\arm\configs目录下的board config文件里添加:
CONFIG_FB_MSM_LCDC_RENESAS_R61408_PT_PANEL=y
在lcdc_r61408.c文件里主要就是要写向LCD用SPI发指令和发数据的函数,我们的这个项目里使用的是GPIO口模拟的SPI总线,所以SPI的时序一定要写正确,R61408在用SPI发指令的时候data和command是在写8bit数据前通过SDO口的高和低来判别的,但是有些LCD的IC,比如NT35510,需要在发8bit数据之前要发送R/W,H/L,D/C几个信号来区别接下来发的数据表示