|
@@ -11,6 +11,7 @@
|
|
|
|
|
|
#include <linux/device.h>
|
|
|
#include <linux/err.h>
|
|
|
+#include <linux/of.h>
|
|
|
|
|
|
enum gpd_status {
|
|
|
GPD_STATE_ACTIVE = 0, /* PM domain is active */
|
|
@@ -70,6 +71,7 @@ struct generic_pm_domain {
|
|
|
s64 break_even_ns; /* Power break even for the entire domain. */
|
|
|
s64 max_off_time_ns; /* Maximum allowed "suspended" time. */
|
|
|
ktime_t power_off_time;
|
|
|
+ struct device_node *of_node; /* Node in device tree */
|
|
|
};
|
|
|
|
|
|
static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd)
|
|
@@ -117,12 +119,22 @@ extern int __pm_genpd_add_device(struct generic_pm_domain *genpd,
|
|
|
struct device *dev,
|
|
|
struct gpd_timing_data *td);
|
|
|
|
|
|
+extern int __pm_genpd_of_add_device(struct device_node *genpd_node,
|
|
|
+ struct device *dev,
|
|
|
+ struct gpd_timing_data *td);
|
|
|
+
|
|
|
static inline int pm_genpd_add_device(struct generic_pm_domain *genpd,
|
|
|
struct device *dev)
|
|
|
{
|
|
|
return __pm_genpd_add_device(genpd, dev, NULL);
|
|
|
}
|
|
|
|
|
|
+static inline int pm_genpd_of_add_device(struct device_node *genpd_node,
|
|
|
+ struct device *dev)
|
|
|
+{
|
|
|
+ return __pm_genpd_of_add_device(genpd_node, dev, NULL);
|
|
|
+}
|
|
|
+
|
|
|
extern int pm_genpd_remove_device(struct generic_pm_domain *genpd,
|
|
|
struct device *dev);
|
|
|
extern int pm_genpd_add_subdomain(struct generic_pm_domain *genpd,
|