@@ -1,3 +1,3 @@
# Makefile for device boot constraints
-obj-y := clk.o core.o supply.o
+obj-y := clk.o core.o pm.o supply.o
@@ -109,6 +109,10 @@ static struct constraint *constraint_allocate(struct constraint_dev *cdev,
add = constraint_clk_add;
remove = constraint_clk_remove;
break;
+ case DEV_BOOT_CONSTRAINT_PM:
+ add = constraint_pm_add;
+ remove = constraint_pm_remove;
+ break;
case DEV_BOOT_CONSTRAINT_SUPPLY:
add = constraint_supply_add;
remove = constraint_supply_remove;
@@ -33,6 +33,9 @@ struct constraint {
int constraint_clk_add(struct constraint *constraint, void *data);
void constraint_clk_remove(struct constraint *constraint);
+int constraint_pm_add(struct constraint *constraint, void *data);
+void constraint_pm_remove(struct constraint *constraint);
+
int constraint_supply_add(struct constraint *constraint, void *data);
void constraint_supply_remove(struct constraint *constraint);
new file mode 100644
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2017 Linaro.
+ * Viresh Kumar <viresh.kumar@linaro.org>
+ *
+ * This file is released under the GPLv2.
+ */
+
+#define pr_fmt(fmt) "PM Boot Constraints: " fmt
+
+#include <linux/pm_domain.h>
+
+#include "core.h"
+
+int constraint_pm_add(struct constraint *constraint, void *data)
+{
+ struct device *dev = constraint->cdev->dev;
+
+ return dev_pm_domain_attach(dev, true);
+}
+
+void constraint_pm_remove(struct constraint *constraint)
+{
+ /* Nothing to do for now */
+}
@@ -16,6 +16,7 @@ struct device;
enum dev_boot_constraint_type {
DEV_BOOT_CONSTRAINT_CLK,
+ DEV_BOOT_CONSTRAINT_PM,
DEV_BOOT_CONSTRAINT_SUPPLY,
};