SIMPLE_DEV_PM_OPS宏

SYSTEM_SLEEP_PM_OPS和dev_pm_ops的定义:

[cpp] view plain copy

SIMPLE_DEV_PM_OPS宏SIMPLE_DEV_PM_OPS宏

  1. #define SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn) \
  2. .suspend = suspend_fn, \
  3. .resume = resume_fn, \
  4. .freeze = suspend_fn, \
  5. .thaw = resume_fn, \
  6. .poweroff = suspend_fn, \
  7. .restore = resume_fn,
  8. struct dev_pm_ops {
  9. int (*prepare)(struct device *dev);
  10. void (*complete)(struct device *dev);
  11. int (*suspend)(struct device *dev);
  12. int (*resume)(struct device *dev);
  13. int (*freeze)(struct device *dev);
  14. int (*thaw)(struct device *dev);
  15. int (*poweroff)(struct device *dev);
  16. int (*restore)(struct device *dev);
  17. int (*suspend_noirq)(struct device *dev);
  18. int (*resume_noirq)(struct device *dev);
  19. int (*freeze_noirq)(struct device *dev);
  20. int (*thaw_noirq)(struct device *dev);
  21. int (*poweroff_noirq)(struct device *dev);
  22. int (*restore_noirq)(struct device *dev);
  23. int (*runtime_suspend)(struct device *dev);
  24. int (*runtime_resume)(struct device *dev);
  25. int (*runtime_idle)(struct device *dev);
  26. };

struct platform_driver中的driver成员也有一个dev_pm_ops

[cpp] view plain copy

SIMPLE_DEV_PM_OPS宏SIMPLE_DEV_PM_OPS宏

  1. struct platform_driver {
  2. int (*probe)(struct platform_device *);
  3. int (*remove)(struct platform_device *);
  4. void (*shutdown)(struct platform_device *);
  5. int (*suspend)(struct platform_device *, pm_message_t state);
  6. int (*resume)(struct platform_device *);
  7. struct device_driver driver;
  8. const struct platform_device_id *id_table;
  9. };
  10. struct device_driver {
  11. const char      *name;
  12. struct bus_type     *bus;
  13. struct module       *owner;
  14. const char      *mod_name;  /* used for built-in modules */
  15. bool suppress_bind_attrs;   /* disables bind/unbind via sysfs */
  16. const struct of_device_id   *of_match_table;
  17. int (*probe) (struct device *dev);
  18. int (*remove) (struct device *dev);
  19. void (*shutdown) (struct device *dev);
  20. int (*suspend) (struct device *dev, pm_message_t state);
  21. int (*resume) (struct device *dev);
  22. const struct attribute_group **groups;
  23. const struct dev_pm_ops *pm;
  24. struct driver_private *p;
  25. };

那么可以将宏SIMPLE_DEV_PM_OPS使用到struct platform_driver定义中,例如gpio-keys.c中:

[cpp] view plain copy

SIMPLE_DEV_PM_OPS宏SIMPLE_DEV_PM_OPS宏

  1. static SIMPLE_DEV_PM_OPS(gpio_keys_pm_ops, gpio_keys_suspend, gpio_keys_resume);
  2. static struct platform_driver gpio_keys_device_driver = {
  3. .probe      = gpio_keys_probe,
  4. .remove     = __devexit_p(gpio_keys_remove),
  5. .driver     = {
  6. .name   = "gpio-keys",
  7. .owner  = THIS_MODULE,
  8. .pm = &gpio_keys_pm_ops,
  9. .of_match_table = gpio_keys_of_match,
  10. }
  11. };
上一篇:在线教育服务:http://www.ablesky.com/


下一篇:android111 java中调用c代码