aboutsummaryrefslogtreecommitdiff
path: root/drivers/i2c/chips
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/chips')
-rw-r--r--drivers/i2c/chips/pcf50633.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 58f85d2ba58..0a8daf40a3e 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -183,6 +183,7 @@ struct pcf50633_data {
} standby_regs;
struct resume_dependency resume_dependency;
+ int is_suspended;
#endif
};
@@ -2372,6 +2373,8 @@ void pcf50633_register_resume_dependency(struct pcf50633_data *pcf,
struct resume_dependency *dep)
{
register_resume_dependency(&pcf->resume_dependency, dep);
+ if (pcf->is_suspended)
+ activate_all_resume_dependencies(&pcf->resume_dependency);
}
EXPORT_SYMBOL_GPL(pcf50633_register_resume_dependency);
@@ -2468,6 +2471,8 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state)
mutex_unlock(&pcf->lock);
+ pcf->is_suspended = 1;
+ activate_all_resume_dependencies(&pcf->resume_dependency);
return 0;
}
@@ -2600,6 +2605,7 @@ static int pcf50633_resume(struct device *dev)
get_device(&pcf->client.dev);
pcf50633_work(&pcf->work);
+ pcf->is_suspended = 0;
callback_all_resume_dependencies(&pcf->resume_dependency);
return 0;