| From 8a37ea50e7acf8db6821ba094ca41384e7d8c70c Mon Sep 17 00:00:00 2001 |
| From: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Date: Thu, 5 Dec 2013 02:01:55 +0100 |
| Subject: PNP: fix restoring devices after hibernation |
| |
| From: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| |
| commit 8a37ea50e7acf8db6821ba094ca41384e7d8c70c upstream. |
| |
| On returning from hibernation 'restore' callback is called, |
| not 'resume'. Fix it. |
| |
| Fixes: eaf140b60ec9 (PNP: convert PNP driver bus legacy pm_ops to dev_pm_ops) |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/pnp/driver.c | 12 +++++++++++- |
| 1 file changed, 11 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/pnp/driver.c |
| +++ b/drivers/pnp/driver.c |
| @@ -197,6 +197,11 @@ static int pnp_bus_freeze(struct device |
| return __pnp_bus_suspend(dev, PMSG_FREEZE); |
| } |
| |
| +static int pnp_bus_poweroff(struct device *dev) |
| +{ |
| + return __pnp_bus_suspend(dev, PMSG_HIBERNATE); |
| +} |
| + |
| static int pnp_bus_resume(struct device *dev) |
| { |
| struct pnp_dev *pnp_dev = to_pnp_dev(dev); |
| @@ -234,9 +239,14 @@ static int pnp_bus_resume(struct device |
| } |
| |
| static const struct dev_pm_ops pnp_bus_dev_pm_ops = { |
| + /* Suspend callbacks */ |
| .suspend = pnp_bus_suspend, |
| - .freeze = pnp_bus_freeze, |
| .resume = pnp_bus_resume, |
| + /* Hibernate callbacks */ |
| + .freeze = pnp_bus_freeze, |
| + .thaw = pnp_bus_resume, |
| + .poweroff = pnp_bus_poweroff, |
| + .restore = pnp_bus_resume, |
| }; |
| |
| struct bus_type pnp_bus_type = { |