Commit 9f62fa16 authored by Stefan Weinhuber's avatar Stefan Weinhuber Committed by Martin Schwidefsky

[S390] pm: vmlogrdr power management callbacks

Signed-off-by: default avatarStefan Weinhuber <wein@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent b241f7bc
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* character device driver for reading z/VM system service records * character device driver for reading z/VM system service records
* *
* *
* Copyright 2004 IBM Corporation * Copyright IBM Corp. 2004, 2009
* character device driver for reading z/VM system service records, * character device driver for reading z/VM system service records,
* Version 1.0 * Version 1.0
* Author(s): Xenia Tkatschow <xenia@us.ibm.com> * Author(s): Xenia Tkatschow <xenia@us.ibm.com>
...@@ -660,6 +660,29 @@ static struct attribute *vmlogrdr_attrs[] = { ...@@ -660,6 +660,29 @@ static struct attribute *vmlogrdr_attrs[] = {
NULL, NULL,
}; };
static int vmlogrdr_pm_prepare(struct device *dev)
{
int rc;
struct vmlogrdr_priv_t *priv = dev->driver_data;
rc = 0;
if (priv) {
spin_lock_bh(&priv->priv_lock);
if (priv->dev_in_use)
rc = -EBUSY;
spin_unlock_bh(&priv->priv_lock);
}
if (rc)
pr_err("vmlogrdr: device %s is busy. Refuse to suspend.\n",
dev_name(dev));
return rc;
}
static struct dev_pm_ops vmlogrdr_pm_ops = {
.prepare = vmlogrdr_pm_prepare,
};
static struct attribute_group vmlogrdr_attr_group = { static struct attribute_group vmlogrdr_attr_group = {
.attrs = vmlogrdr_attrs, .attrs = vmlogrdr_attrs,
}; };
...@@ -668,6 +691,7 @@ static struct class *vmlogrdr_class; ...@@ -668,6 +691,7 @@ static struct class *vmlogrdr_class;
static struct device_driver vmlogrdr_driver = { static struct device_driver vmlogrdr_driver = {
.name = "vmlogrdr", .name = "vmlogrdr",
.bus = &iucv_bus, .bus = &iucv_bus,
.pm = &vmlogrdr_pm_ops,
}; };
...@@ -729,6 +753,7 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv) ...@@ -729,6 +753,7 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv)
dev->bus = &iucv_bus; dev->bus = &iucv_bus;
dev->parent = iucv_root; dev->parent = iucv_root;
dev->driver = &vmlogrdr_driver; dev->driver = &vmlogrdr_driver;
dev->driver_data = priv;
/* /*
* The release function could be called after the * The release function could be called after the
* module has been unloaded. It's _only_ task is to * module has been unloaded. It's _only_ task is to
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment