手机驱动工程师基础知识教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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接口