diff options
Diffstat (limited to 'drivers/i2c/chips')
-rw-r--r-- | drivers/i2c/chips/pcf50633.c | 6 |
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; |