最近看到Gt的driver有电源管理部分之前没有看到过,今天写一下
struct goodix_ts_data {
struct early_suspend early_suspend;
};
static int gtp_register_powermanger(struct goodix_ts_data *ts)
{
ts->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1;
ts->early_suspend.suspend = goodix_ts_early_suspend;
ts->early_suspend.resume = goodix_ts_late_resume;
register_early_suspend(&ts->early_suspend);
return 0;
}
希望执行early suspend的设备,他的设备驱动程序需要向电源管理系统注册,该结构体用于向电源管理系统注册earlysuspend/lateresume,当电源管理系统启动suspend流程时,回调函数suspend会被调用,相反,resume的最后阶段,回调函数resume会被调用,ts->early_suspend.level字段用于调整该结构体在注册链表中的位置,suspend时,level的数值越小,回调函数的被调用的时间越早,resume时则反过来。Android预先定义了3个level等级:
1 2 3 4 5 | enum{ EARLY_SUSPEND_LEVEL_BLANK_SCREEN=50, EARLY_SUSPEND_LEVEL_STOP_DRAWING=100, EARLY_SUSPEND_LEVEL_DISABLE_FB=150, }; |