aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-04-07 04:09:15 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-04-07 04:09:15 -0400
commita32aaf14513da776556ad9995de8d83cd76ae60a (patch)
tree4c78e27fe922a18cff088e41e0fe0c615a870cde
parent8260cf6f40014860cb857f5245194900dd6c9b94 (diff)
powerpc/vio: Add power management support
Adds support for suspend/resume for VIO devices. This is needed for support for HMC initiated hibernation. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/kernel/vio.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
index 2a3428bef83a..b8e311d64ad5 100644
--- a/arch/powerpc/kernel/vio.c
+++ b/arch/powerpc/kernel/vio.c
@@ -1381,6 +1381,29 @@ static int vio_hotplug(struct device *dev, struct kobj_uevent_env *env)
1381 return 0; 1381 return 0;
1382} 1382}
1383 1383
1384static int vio_pm_suspend(struct device *dev)
1385{
1386 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
1387
1388 if (pm && pm->suspend)
1389 return pm->suspend(dev);
1390 return 0;
1391}
1392
1393static int vio_pm_resume(struct device *dev)
1394{
1395 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
1396
1397 if (pm && pm->resume)
1398 return pm->resume(dev);
1399 return 0;
1400}
1401
1402const struct dev_pm_ops vio_dev_pm_ops = {
1403 .suspend = vio_pm_suspend,
1404 .resume = vio_pm_resume,
1405};
1406
1384static struct bus_type vio_bus_type = { 1407static struct bus_type vio_bus_type = {
1385 .name = "vio", 1408 .name = "vio",
1386 .dev_attrs = vio_dev_attrs, 1409 .dev_attrs = vio_dev_attrs,
@@ -1388,6 +1411,7 @@ static struct bus_type vio_bus_type = {
1388 .match = vio_bus_match, 1411 .match = vio_bus_match,
1389 .probe = vio_bus_probe, 1412 .probe = vio_bus_probe,
1390 .remove = vio_bus_remove, 1413 .remove = vio_bus_remove,
1414 .pm = &vio_dev_pm_ops,
1391}; 1415};
1392 1416
1393/** 1417/**