很久之前android刚兴起时候从事battery ,charge驱动顺带着把PMS差不多也看了一遍,最开始看的很多不理解。后来在各家公司经历不同的角色,对PMS这块了解越来越多,也越来越深。特别是前前面搞fingerprint快速亮屏时,修改指纹服务以为PMS逻辑控制,以达到更快的亮屏速。进一步加深了对PMS的理解,目前的我正从事高通平台LCD驱动开发工作,由于遇到一个LCD下电时序的问题,与surfaceflinger和PMS再次打交道,这里就记录下个人对PMS如何对LCD进行正电控制的,这里大体可以分四层
1.framework层逻辑控制,最终调用native方法与surfaceflinger进行通信
2.jni获取surfaceflinger服务与surfaceflinger进行通信,而surfaceflinger又通过HWC与hardware层的compose服务进行通信
3.composer服务层通过节点访问驱动,写入blank,unblank命令
4.驱动层LCD收到上下电命令,进行背光IC,偏压IC,mipi(HS,LP),lcd的上下电的时序控制
由于驱动各家实现方案都不太一样,差异比较大。这里只对前三层进行简单的分析。
1.framework层LCD下电的逻辑控制

上图就是大体的逻辑调用控制,当我们按下power键进行休眠时就会调用goToSleep函数。而updatePowerStateLocked是实现屏上下电控制的核心函数,这个函数很多地方调用。gotosleep只是其中一个,毕竟休眠是最常见的操作

具体的流程及函数实现这里就不具体说了,可以自行对照代码来看。需要特别注意的是setScreenSt

最低0.47元/天 解锁文章
1787

被折叠的 条评论
为什么被折叠?



