aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/eeprom
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-09-25 01:30:51 +0200
committerWolfram Sang <wsa@the-dreams.de>2017-10-05 13:00:29 +0200
commit541527728341b4bb9a5e3428b0eec450f1b3d8d5 (patch)
treee6d10b5567973cdee07209939d3f2cbf298e01a3 /Documentation/devicetree/bindings/eeprom
parentPM / mfd: intel-lpss: Push system sleep callbacks to late/early stages (diff)
downloadlinux-dev-541527728341b4bb9a5e3428b0eec450f1b3d8d5.tar.xz
linux-dev-541527728341b4bb9a5e3428b0eec450f1b3d8d5.zip
PM: i2c-designware-platdrv: Suspend/resume at the late/early stages
As reported by Rajat Jain, there are problems when ACPI operation region handlers or similar, called at the ->resume_early() time, for I2C client devices try to access an I2C controller that has already been suspended at that point. To avoid that, move the suspend/resume of i2c-designware-platdrv to the late/early stages, respectively. While at it, avoid resuming the device from runtime suspend in the driver's ->suspend callback which isn't particularly nice. [A better approach would be to make the driver track the PM state of the device so that it doesn't need to resume it in ->suspend, so implement it.] First, drop dw_i2c_plat_suspend() added by commit a23318feeff6 (i2c: designware: Fix system suspend) and rename dw_i2c_plat_runtime_suspend() back to dw_i2c_plat_suspend(). Second, point the driver's ->late_suspend and ->early_resume callbacks, rather than its ->suspend and ->resume callbacks, to dw_i2c_plat_suspend() and dw_i2c_plat_resume(), respectively, so that they are not executed in parallel with each other, for example if runtime resume of the device takes place during system suspend. Finally, add "suspended" and "skip_resume" flags to struct dw_i2c_dev and make dw_i2c_plat_suspend() and dw_i2c_plat_resume() use them to avoid suspending or resuming the device twice in a row and to avoid resuming a previously runtime-suspended device during system resume. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com> Tested-by: Johannes Stezenbach <js@sig21.net> Tested-by: Rajat Jain <rajatja@google.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'Documentation/devicetree/bindings/eeprom')
0 files changed, 0 insertions, 0 deletions