diff options
Diffstat (limited to 'include/linux/pm_domain.h')
-rw-r--r-- | include/linux/pm_domain.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index 91f8286106ea..30f794eb3826 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/pm.h> | 14 | #include <linux/pm.h> |
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <linux/of.h> | 16 | #include <linux/of.h> |
17 | #include <linux/notifier.h> | ||
17 | 18 | ||
18 | enum gpd_status { | 19 | enum gpd_status { |
19 | GPD_STATE_ACTIVE = 0, /* PM domain is active */ | 20 | GPD_STATE_ACTIVE = 0, /* PM domain is active */ |
@@ -70,9 +71,9 @@ struct generic_pm_domain { | |||
70 | int (*power_on)(struct generic_pm_domain *domain); | 71 | int (*power_on)(struct generic_pm_domain *domain); |
71 | s64 power_on_latency_ns; | 72 | s64 power_on_latency_ns; |
72 | struct gpd_dev_ops dev_ops; | 73 | struct gpd_dev_ops dev_ops; |
73 | s64 break_even_ns; /* Power break even for the entire domain. */ | ||
74 | s64 max_off_time_ns; /* Maximum allowed "suspended" time. */ | 74 | s64 max_off_time_ns; /* Maximum allowed "suspended" time. */ |
75 | ktime_t power_off_time; | 75 | bool max_off_time_changed; |
76 | bool cached_power_down_ok; | ||
76 | struct device_node *of_node; /* Node in device tree */ | 77 | struct device_node *of_node; /* Node in device tree */ |
77 | }; | 78 | }; |
78 | 79 | ||
@@ -93,13 +94,17 @@ struct gpd_timing_data { | |||
93 | s64 start_latency_ns; | 94 | s64 start_latency_ns; |
94 | s64 save_state_latency_ns; | 95 | s64 save_state_latency_ns; |
95 | s64 restore_state_latency_ns; | 96 | s64 restore_state_latency_ns; |
96 | s64 break_even_ns; | 97 | s64 effective_constraint_ns; |
98 | bool constraint_changed; | ||
99 | bool cached_stop_ok; | ||
97 | }; | 100 | }; |
98 | 101 | ||
99 | struct generic_pm_domain_data { | 102 | struct generic_pm_domain_data { |
100 | struct pm_domain_data base; | 103 | struct pm_domain_data base; |
101 | struct gpd_dev_ops ops; | 104 | struct gpd_dev_ops ops; |
102 | struct gpd_timing_data td; | 105 | struct gpd_timing_data td; |
106 | struct notifier_block nb; | ||
107 | struct mutex lock; | ||
103 | bool need_restore; | 108 | bool need_restore; |
104 | bool always_on; | 109 | bool always_on; |
105 | }; | 110 | }; |
@@ -141,6 +146,7 @@ static inline int pm_genpd_of_add_device(struct device_node *genpd_node, | |||
141 | extern int pm_genpd_remove_device(struct generic_pm_domain *genpd, | 146 | extern int pm_genpd_remove_device(struct generic_pm_domain *genpd, |
142 | struct device *dev); | 147 | struct device *dev); |
143 | extern void pm_genpd_dev_always_on(struct device *dev, bool val); | 148 | extern void pm_genpd_dev_always_on(struct device *dev, bool val); |
149 | extern void pm_genpd_dev_need_restore(struct device *dev, bool val); | ||
144 | extern int pm_genpd_add_subdomain(struct generic_pm_domain *genpd, | 150 | extern int pm_genpd_add_subdomain(struct generic_pm_domain *genpd, |
145 | struct generic_pm_domain *new_subdomain); | 151 | struct generic_pm_domain *new_subdomain); |
146 | extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, | 152 | extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, |
@@ -184,6 +190,7 @@ static inline int pm_genpd_remove_device(struct generic_pm_domain *genpd, | |||
184 | return -ENOSYS; | 190 | return -ENOSYS; |
185 | } | 191 | } |
186 | static inline void pm_genpd_dev_always_on(struct device *dev, bool val) {} | 192 | static inline void pm_genpd_dev_always_on(struct device *dev, bool val) {} |
193 | static inline void pm_genpd_dev_need_restore(struct device *dev, bool val) {} | ||
187 | static inline int pm_genpd_add_subdomain(struct generic_pm_domain *genpd, | 194 | static inline int pm_genpd_add_subdomain(struct generic_pm_domain *genpd, |
188 | struct generic_pm_domain *new_sd) | 195 | struct generic_pm_domain *new_sd) |
189 | { | 196 | { |