summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/base/power/main.c14
-rw-r--r--include/linux/suspend.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index eebe699fdf4f..63f3a48f434c 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -66,6 +66,20 @@ static pm_message_t pm_transition;
static DEFINE_MUTEX(async_wip_mtx);
static int async_error;
+/**
+ * pm_hibernate_is_recovering - if recovering from hibernate due to error.
+ *
+ * Used to query if dev_pm_ops.thaw() is called for normal hibernation case or
+ * recovering from some error.
+ *
+ * Return: true for error case, false for normal case.
+ */
+bool pm_hibernate_is_recovering(void)
+{
+ return pm_transition.event == PM_EVENT_RECOVER;
+}
+EXPORT_SYMBOL_GPL(pm_hibernate_is_recovering);
+
static const char *pm_verb(int event)
{
switch (event) {
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index b1c76c8f2c82..293137210fdf 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -426,6 +426,8 @@ int is_hibernate_resume_dev(dev_t dev);
static inline int is_hibernate_resume_dev(dev_t dev) { return 0; }
#endif
+bool pm_hibernate_is_recovering(void);
+
/* Hibernation and suspend events */
#define PM_HIBERNATION_PREPARE 0x0001 /* Going to hibernate */
#define PM_POST_HIBERNATION 0x0002 /* Hibernation finished */