AM335x(TQ335x)学习笔记——LCD驱动移植
时间:11-28
来源:互联网
点击:
TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示。下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路。
首先是设置panel-info和display-times。我的TQ335x是用的我调试TQ210时使用的触摸屏,型号是TN92,这个屏是800*480的分辨率,因此,panel-info与evm开发板的配置是相同的,可以不做任何修改。但是,不同屏幕的display-times一般是不相同的,因此,需要查阅触摸屏的手册来确认display-times。
(1)初步分析
由于TQ335x使用的芯片是AM335x,故仍然可以参考am335x-evm.dts。当然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-evm.dts为例。大体上浏览下DTS文件,可以发现两个醒目的节点:一个是panel,一个是backlight。接下来我们逐个分析。
(2)panel节点信息分析及配置
从panel节点可以获得如下信息:
- 1.匹配内核驱动的关键词是:"ti,tilcdc,panel",可以通过这个关键字找到相应的驱动。
- 2.管脚配置在节点lcd_pins_s0内
- 3.panel-info中可以配置LCD的硬件信息,如LCD的分辨率等
- 4.display-times中记录了LCD刷屏的相关时序。
首先是设置panel-info和display-times。我的TQ335x是用的我调试TQ210时使用的触摸屏,型号是TN92,这个屏是800*480的分辨率,因此,panel-info与evm开发板的配置是相同的,可以不做任何修改。但是,不同屏幕的display-times一般是不相同的,因此,需要查阅触摸屏的手册来确认display-times。
TN92的水平扫描时序如下表:
垂直扫描时序如下图:
但是,如果对LCD各参数不怎么熟悉的话,很难建立这两个表与DTS中display-times的关系,这时应该去查阅一下linux内核的文档和芯片手册。在内核文档:”Documentation/devicetree/bindings/video/display-timing.txt"有相关的记载,该文件中有形象的描述,具体如下:
- +----------+-------------------------------------+----------+-------+
- ||↑|||
- |||vback_porch|||
- ||↓|||
- +----------#######################################----------+-------+
- |#↑#||
- |#|#||
- |hback#|#hfront|hsync|
- |porch#|hactive#porch|len|
- |<-------->#<-------+--------------------------->#<-------->|<----->|
- |#|#||
- |#|vactive#||
- |#|#||
- |#↓#||
- +----------#######################################----------+-------+
- ||↑|||
- |||vfront_porch|||
- ||↓|||
- +----------+-------------------------------------+----------+-------+
- ||↑|||
- |||vsync_len|||
- ||↓|||
- +----------+-------------------------------------+----------+-------+
综合这三份资料,很容易确定下LCD的屏的时序参数的范围(需要强调的是,上述参数不一定精确,还需要使用图片实机测下效果),经过多次实验,最终确定下了LCD的时序参数,详情如下:
- panel{
- compatible="ti,tilcdc,panel";
- status="okay";
- pinctrl-names="default";
- pinctrl-0=<&lcd_pins_s0>;
- panel-info{
- ac-bias=<255>;
- ac-bias-intrpt=<0>;
- dma-burst-sz=<16>;
- bpp=<32>;
- fdd=<0x80>;
- sync-edge=<0>;
- sync-ctrl=<1>;
- raster-order=<0>;
- fifo-th=<0>;
- };
- display-timings{
- 800x480p62{
- clock-frequency=<30000000>;
- hactive=<800>;
- vactive=<480>;
- hfront-porch=<214>;
- hback-porch=<40>;
- hsync-len=<4>;
- vback-porch=<20>;
- vfront-porch=<23>;
- vsync-len=<4>;
- hsync-active=<0>;
- vsync-active=<0>;
- };
- };
- };
(3)backlight节点分析及配置
从backlight节点中可以获得如下信息:
- 1.匹配内核驱动的关键词是"pwm-backlight"。
- 2.使用的ECAP0进行PWM输出。
- 3.有8个亮度等级。
- 4.默认的亮度等级是8,也就是最亮。
- Step1.将backlight节点中&eacp0改为&eacp2。
- Step2.将&epwmss0改为&epwmss2,并将该节点内的ecap0:ecap@48304100改成ecap0:ecap@48304100,然后将该节点中的&ecap0_pins改成&ecap2_pins。
- Step3.将ecap0_pins节点改名为ecap2_pins,然后将pinctrl-single,pins内的内
AM335xTQ335xLCD驱动移 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)