本文共 1436 字,大约阅读时间需要 4 分钟。
1.添加头文件
#ifdef CONFIG_HAS_EARLYSUSPEND#include2. 在驱动结构体中添加early_suspend结构体#endif
#ifdef CONFIG_HAS_EARLYSUSPEND struct early_suspend early_suspend;#endif /* CONFIG_HAS_EARLYSUSPEND */3. 在驱动probe结构函数中,注册相应early_suspend结构体
#ifdef CONFIG_HAS_EARLYSUSPEND1 /* * The higher the level, the earlier it resume, * and the later it suspend. */ dev_info(&client->dev, "%s register_early_suspend\n", __func__); par->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; par->early_suspend.suspend = ssd1307fb_earlysuspend; par->early_suspend.resume = ssd1307fb_earlyresume; register_early_suspend(&par->early_suspend);#endif /* CONFIG_HAS_EARLYSUSPEND */
4. 在驱动remove函数中取消earlay_suspend结构体的注册
#ifdef CONFIG_HAS_EARLYSUSPEND unregister_early_suspend(&par->early_suspend);#endif /* CONFIG_HAS_EARLYSUSPEND */5. 定义相关suspend 和 resume 函数
#ifdef CONFIG_HAS_EARLYSUSPENDvoid ssd1307fb_earlysuspend(struct early_suspend *h){ printk(KERN_ACCT "%s: suspend bklight\n", __func__); ssd1305fb_full_screen(global_par, 0); gpio_set_value(global_par->bklight, 0); return;}void ssd1307fb_earlyresume(struct early_suspend *h){ printk(KERN_ACCT, "%s: resume bklight\n", __func__); ssd1305fb_update_display(global_par); gpio_set_value(global_par->bklight, 1); return;}#endif /* CONFIG_HAS_EARLYSUSPEND */
6. 在系统驱动结构体中设置没有使用的suspend和resume的函数接口
#ifndef CONFIG_HAS_EARLYSUSPEND.suspend = xxxx_suspend,.resume = xxxx_resume,#endif
转载地址:http://ipngi.baihongyu.com/