如何用android / linux电源驱动注册设备驱动程序?

时间:2013-03-11 09:05:19

标签: android linux-device-driver power-management

我正在为Android设备开发一个与lcd相关的内核级设备驱动程序。有人可以帮我解决Android中与电源管理相关的API,通过它我可以注册我的驱动程序来接收设备状态的任何变化。

更确切地说,我希望我的驱动程序在系统状态发生变化时(例如从运行状态到睡眠状态或暂停状态)接收来自电源驱动程序的任何事件(或者还有其他事件)。我希望我的司机也能睡觉,这在当前的情况下正在吃掉所有的电池......

我的链接很少http://www.kandroid.org/online-pdk/guide/power_management.htmlhttp://developer.android.com/reference/android/os/PowerManager.html

讨论android_register_early_suspend和android_register_early_resume等函数,但我在整个内核源代码中找不到对这些函数的调用(基于linux 3.0)

我听说过“Linux电源管理”,可以在我当前的基线代码中找到驱动程序/基础/电源和驱动程序/电源等文件夹。如何在我的代码中使用此驱动程序。

如果我遗漏任何细节,请告诉我。 任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

您的驱动程序应实现运行时挂起/恢复回调。检查此doc

在'struct dev_pm_ops'中实现Device PM回调的示例代码(在linux / pm.h中定义)

static int lcdxxx_suspend(struct device *dev)
{
    //Your Code to suspend your device
}

static int lcdxxx_resume(struct device *dev)
{
    //Your code to resume your device
}

static const struct dev_pm_ops lcd_pm_ops = {
    .suspend    = lcdxxx_suspend,
    .resume     = lcdxxx_resume,
};

struct device_driver lcd_driver = {
    ....
    .pm = &lcd_pm_ops,
    ....
}

这只是示例impl。真正的实施取决于您的要求。