系统休眠唤醒的时候会涉及到亮灭屏,下面分析下系统(高通8155平台)Display亮灭屏流程
1. 点亮屏幕
点亮屏幕入口在framework/base/下面LightsService.java,然后通过调用SurfaceControl.java ,最终调用到framework/native下面的SurfaceFlinger.cpp,SurfaceFlinger与hal层通信都是通过ComposerHal.cpp。hwc_session_services.cpp是在hardware/qcom/display/sdm/下面,在hw_peripheral_drm.cpp中调用Sys::pwrite_写参数到驱动。
2. 休眠灭屏
灭屏是LocalDisplayAdapter.java中调用 SurfaceControl.java,后面也是通过SurfaceFlinger.cpp与HAL层通信。HAL层会调用到hwc_session_services.cpp,后面通过display_base.cpp调用到drm中:hw_device_drm.cpp,drm会调用到vendor/qcom/proprietary/display/sde-drm中的drm_atomic_req.cpp后面通过Perform来与drm驱动通信。