pnp_bus_suspend() and pnp_bus_resume() invoke legacy pm_ops from
pnp_driver. Changed pnp_bus_suspend() and pnp_bus_resume() to check
if pnp driver has dev_pm_ops and call. If dev_pm_ops don't exist, then
call use legacy pm_ops. Without this change, pnp_driver dev_pm_ops will
not get called.

Signed-off-by: Shuah Khan <shuah...@samsung.com>
---
 drivers/pnp/driver.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c
index 00e9403..c3f9e89 100644
--- a/drivers/pnp/driver.c
+++ b/drivers/pnp/driver.c
@@ -163,6 +163,13 @@ static int pnp_bus_suspend(struct device *dev, 
pm_message_t state)
        if (!pnp_drv)
                return 0;
 
+       if (pnp_drv->driver.pm && pnp_drv->driver.pm->suspend) {
+               error = pnp_drv->driver.pm->suspend(dev);
+               suspend_report_result(pnp_drv->driver.pm->suspend, error);
+               if (error)
+                       return error;
+       }
+
        if (pnp_drv->suspend) {
                error = pnp_drv->suspend(pnp_dev, state);
                if (error)
@@ -201,6 +208,12 @@ static int pnp_bus_resume(struct device *dev)
                        return error;
        }
 
+       if (pnp_drv->driver.pm && pnp_drv->driver.pm->resume) {
+               error = pnp_drv->driver.pm->resume(dev);
+               if (error)
+                       return error;
+       }
+
        if (pnp_drv->resume) {
                error = pnp_drv->resume(pnp_dev);
                if (error)
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to