我正在尝试开发一个在android中注册了GPIO中断的驱动程序。在这里,我需要通过GPIO中断唤醒器件。我已经在我的驱动程序中使用设备驱动程序PM结构注册了暂停/恢复回调。我的代码片段是
static int my_suspend(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
disable_irq(client->irq);
if (device_may_wakeup(&client->dev))
enable_irq_wake(client->irq);
return 0;
}
static int my_resume(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
if (device_may_wakeup(&client->dev))
disable_irq_wake(client->irq);
enable_irq(client->irq);
return 0;
}
static const struct dev_pm_ops i2c_pm_ops = {
.suspend = my_suspend,
.resume = my_resume,
};
struct device_driver lcd_driver = {
....
.pm = &i2c_pm_ops,
....
}
但系统暂停操作时不会调用我的挂起函数。