aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/base/power/domain.c8
-rw-r--r--include/linux/pm_domain.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 33086e9afaf..1aed94c73cf 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -450,6 +450,10 @@ static int pm_genpd_suspend_noirq(struct device *dev)
450 if (ret) 450 if (ret)
451 return ret; 451 return ret;
452 452
453 if (device_may_wakeup(dev)
454 && genpd->active_wakeup && genpd->active_wakeup(dev))
455 return 0;
456
453 if (genpd->stop_device) 457 if (genpd->stop_device)
454 genpd->stop_device(dev); 458 genpd->stop_device(dev);
455 459
@@ -670,6 +674,10 @@ static int pm_genpd_dev_poweroff_noirq(struct device *dev)
670 if (ret) 674 if (ret)
671 return ret; 675 return ret;
672 676
677 if (device_may_wakeup(dev)
678 && genpd->active_wakeup && genpd->active_wakeup(dev))
679 return 0;
680
673 if (genpd->stop_device) 681 if (genpd->stop_device)
674 genpd->stop_device(dev); 682 genpd->stop_device(dev);
675 683
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index 7961b0dac43..98491ee3510 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -38,6 +38,7 @@ struct generic_pm_domain {
38 int (*power_on)(struct generic_pm_domain *domain); 38 int (*power_on)(struct generic_pm_domain *domain);
39 int (*start_device)(struct device *dev); 39 int (*start_device)(struct device *dev);
40 int (*stop_device)(struct device *dev); 40 int (*stop_device)(struct device *dev);
41 bool (*active_wakeup)(struct device *dev);
41}; 42};
42 43
43static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd) 44static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd)