手机驱动工程师基础知识教程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MTK Android Driver知识大全

时间 2014-11-08 23:24:37 ? CSDN博客

原文 /cbk861110/article/details/40931835

转载请注明出处:/cbk861110/article/details/40931835

一、Display

1.lcm 相关概念

1.1) MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口)、DPI(也叫RGB接口)、DSI.

在使用DSI接口时,目前75/77都只支持到2条data lane,加上一条clock lane.

使用DPI接口时,根据LCM IC支持的情况,可以选择16bus、18bus传输RGB格式文件,在GPIO部分分为R、G、B 分别对应 8个GPIO(GPIO20~46期间),客户采用DPI接口需要根据选择的bus方式进行配置,推荐RGB端口全部配置为对应的复选模 式,并设置为OUT输出。

采用DBI接口,有两种模式选择,一种是选择共用DPI的bus脚 +DPI控制线,另一种是共用nand data pin+CPU 控制线。

1.2) DSI接口有两种sync 模式:video mode和command mode,其中video mode是BB端一直刷数据到LCM,cmd mode是在有数 据更新时刷数据到LCM GRAM中)

和DSI command mode相比,video mode 是需要实时传输image data到lcm端,DSI 的refresh rate决定了lcm

1.3)EDS机制:

92平台LCM driver中定义了esd_check和esd_recovery的接口,但ESD线程不工作。

目前在MT6589之前平台,video mode的ESD实现有三种模式,分别是:ext TE(外部TE信号检测)、int TE(内部TE信号检 测)、non cout clk

不同ESD方式需要注意的方面

a) int TE和ext TE的检测,都不需要实现lcm_esd_check函数,而需要实现lcm_esd_recover函数。

non cont clk则不需要实现lcm_esd_check函数和lcm_esd_recover函数,而只需要在上面 params中配置为TRUE即可

b) ext TE的实现,需要LCM外接TE pin到BB端,同时在inital code中配置寄存器打开TE信号的输出 (一般是写0x35寄存器,具体需要和LCM IC FAE确认)

1.4)HDMI/MHL:

目前我司HDMI/MHL的相关code和driver都是有集成在codebase中的,要使用的话,只需要只需要在对应的 ProjectConfig.mk文件中开启,并且在dct中配置好对应的引脚定义即可。

以下以MHL为例:

ProjectConfig中配置:

MTK_HDMI_SUPPORT=yes #表明开启HDMI/MHL功能

CUSTOM_KERNEL_HDMI=Sii8338 #表明配置为MHL的IC型号

1.4)TE 信号:

大部分TE问题是由于没有正常开启TE所导致,首先检查TE是否开启。

89平台使用内部TE,lcm driver中只需要在init过程中打开LCM TE即可,一般是写0x35寄存器,部分IC需要额外写其他 寄存器,可与FAE确认。

检查TE是否正常开启,如果是工版,则可使用如下方式打开fps的log,查看TE信息:

adb shell

cd sys/kernel/debug

echo fps:on>mtkfb

然后查看mtklog, 搜索“FPS”,若看到等待TE时间为0, 表示TE未正常开启,需要与LCM IC的FAE进一步确认开启流程 。

若TE已经成功开启,依然有Teering现象,可从如下方面思考分析。

1)是否使用了竖屏横用,导致对GRAM的读写方向不一致,一般会出现斜线切屏现象。

2)是否clock速度过低,FPS低于LCM自刷新率的1/2?

3)是否clock速率过快,超过LCM的自刷新率,导致写GRAM时可能从后面赶上读,导致Teering发生。

HS:high speed , clock切为HS模式,高速模式。

LP:low power,低电平

有些LCM在开机的时候,如果使用LP下发init code,可能会不准确或者导致花屏等问题,这时候需要使用HS mode发送init code,比如三星的某款OLED(D53D6EA8061V-Amoled)。

continuous clock/no-continuous clock模式

1.6)dithering:

抖动显示技术:

MT6572 如所用lcm不支持RGB888 color format, 显示效果差需要开启dithering的。

1.7)其他概念:

AAL:BB端CABC(即AAL),为1种方式控制背光

continuous clock/Non-continuous clock : Switch clock lane from HS to LP

2.LCM时钟配置

MT6582 LCM Driver中配置:params->dsi.PLL_CLOCK = 234;

计算方法:

如果MIPI Clock对RF/WCN产生干扰,并且在尝试寻找相应的频点依然无法解除 EMI,可以尝试做Frequency Hopping;

82平台默认打开展频开关,不同于72/89平台,将展频的开关以及展频幅度的选择 ,都开放到LCM Driver中,以如下为例:

params->dsi.ssc_range =4;

params->dsi.ssc_disable = 0;

代表:展频打开,ssc_range = 4%

3.AAL与CABC背光选择(两种方式控制背光):

参考[FAQ05966]

89平台支持BB端CABC(即AAL)或LCM端CABC方式控制背光,两种方式使用方法如下

【BB端CABC(即AAL)】

- 打开功能,向MTK申请patch,并在ProjectConfig.mk中打开MTK_AAL_SUPPORT = yes

【LCM端CABC】

- 对于Video Mode,ALPS.JB2.MP.V1.3(包括1.3)之前的版本,请向MTK申请patch

- lcm driver中实现set_backlight接口

相关文档
最新文档