diff options
author | Martin Petermann <martin.petermann@de.ibm.com> | 2009-06-16 04:30:34 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-06-16 04:31:14 -0400 |
commit | daa70fa960fb5625d762988cca7e4733573d90a3 (patch) | |
tree | c697af091edb28975aa9bc8018d46088b5c6dcd0 /drivers/s390 | |
parent | 88efc2c503e82072a19b531d54e02f22de14a132 (diff) |
[S390] pm: zfcp driver power management callbacks
Signed-off-by: Martin Petermann <martin.petermann@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/scsi/zfcp_ccw.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/s390/scsi/zfcp_ccw.c b/drivers/s390/scsi/zfcp_ccw.c index b2fe5cdbcaee..d9da5c42ccbe 100644 --- a/drivers/s390/scsi/zfcp_ccw.c +++ b/drivers/s390/scsi/zfcp_ccw.c | |||
@@ -13,6 +13,36 @@ | |||
13 | 13 | ||
14 | #define ZFCP_MODEL_PRIV 0x4 | 14 | #define ZFCP_MODEL_PRIV 0x4 |
15 | 15 | ||
16 | static int zfcp_ccw_suspend(struct ccw_device *cdev) | ||
17 | |||
18 | { | ||
19 | struct zfcp_adapter *adapter = dev_get_drvdata(&cdev->dev); | ||
20 | |||
21 | down(&zfcp_data.config_sema); | ||
22 | |||
23 | zfcp_erp_adapter_shutdown(adapter, 0, "ccsusp1", NULL); | ||
24 | zfcp_erp_wait(adapter); | ||
25 | |||
26 | up(&zfcp_data.config_sema); | ||
27 | |||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | static int zfcp_ccw_activate(struct ccw_device *cdev) | ||
32 | |||
33 | { | ||
34 | struct zfcp_adapter *adapter = dev_get_drvdata(&cdev->dev); | ||
35 | |||
36 | zfcp_erp_modify_adapter_status(adapter, "ccresu1", NULL, | ||
37 | ZFCP_STATUS_COMMON_RUNNING, ZFCP_SET); | ||
38 | zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, | ||
39 | "ccresu2", NULL); | ||
40 | zfcp_erp_wait(adapter); | ||
41 | flush_work(&adapter->scan_work); | ||
42 | |||
43 | return 0; | ||
44 | } | ||
45 | |||
16 | static struct ccw_device_id zfcp_ccw_device_id[] = { | 46 | static struct ccw_device_id zfcp_ccw_device_id[] = { |
17 | { CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) }, | 47 | { CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, 0x3) }, |
18 | { CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, ZFCP_MODEL_PRIV) }, | 48 | { CCW_DEVICE_DEVTYPE(0x1731, 0x3, 0x1732, ZFCP_MODEL_PRIV) }, |
@@ -227,6 +257,9 @@ static struct ccw_driver zfcp_ccw_driver = { | |||
227 | .set_offline = zfcp_ccw_set_offline, | 257 | .set_offline = zfcp_ccw_set_offline, |
228 | .notify = zfcp_ccw_notify, | 258 | .notify = zfcp_ccw_notify, |
229 | .shutdown = zfcp_ccw_shutdown, | 259 | .shutdown = zfcp_ccw_shutdown, |
260 | .freeze = zfcp_ccw_suspend, | ||
261 | .thaw = zfcp_ccw_activate, | ||
262 | .restore = zfcp_ccw_activate, | ||
230 | }; | 263 | }; |
231 | 264 | ||
232 | /** | 265 | /** |