diff options
-rw-r--r-- | drivers/scsi/libata-core.c | 5 | ||||
-rw-r--r-- | drivers/scsi/libata-scsi.c | 4 | ||||
-rw-r--r-- | drivers/scsi/scsi_sysfs.c | 2 | ||||
-rw-r--r-- | include/linux/libata.h | 4 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 2 |
5 files changed, 9 insertions, 8 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 6970f6867334..d8f77f2a5af1 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -4336,14 +4336,15 @@ int ata_device_resume(struct ata_port *ap, struct ata_device *dev) | |||
4336 | * Flush the cache on the drive, if appropriate, then issue a | 4336 | * Flush the cache on the drive, if appropriate, then issue a |
4337 | * standbynow command. | 4337 | * standbynow command. |
4338 | */ | 4338 | */ |
4339 | int ata_device_suspend(struct ata_port *ap, struct ata_device *dev) | 4339 | int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t state) |
4340 | { | 4340 | { |
4341 | if (!ata_dev_present(dev)) | 4341 | if (!ata_dev_present(dev)) |
4342 | return 0; | 4342 | return 0; |
4343 | if (dev->class == ATA_DEV_ATA) | 4343 | if (dev->class == ATA_DEV_ATA) |
4344 | ata_flush_cache(ap, dev); | 4344 | ata_flush_cache(ap, dev); |
4345 | 4345 | ||
4346 | ata_standby_drive(ap, dev); | 4346 | if (state.event != PM_EVENT_FREEZE) |
4347 | ata_standby_drive(ap, dev); | ||
4347 | ap->flags |= ATA_FLAG_SUSPENDED; | 4348 | ap->flags |= ATA_FLAG_SUSPENDED; |
4348 | return 0; | 4349 | return 0; |
4349 | } | 4350 | } |
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index a1259b242b8e..1fd3826da97e 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c | |||
@@ -414,12 +414,12 @@ int ata_scsi_device_resume(struct scsi_device *sdev) | |||
414 | return ata_device_resume(ap, dev); | 414 | return ata_device_resume(ap, dev); |
415 | } | 415 | } |
416 | 416 | ||
417 | int ata_scsi_device_suspend(struct scsi_device *sdev) | 417 | int ata_scsi_device_suspend(struct scsi_device *sdev, pm_message_t state) |
418 | { | 418 | { |
419 | struct ata_port *ap = (struct ata_port *) &sdev->host->hostdata[0]; | 419 | struct ata_port *ap = (struct ata_port *) &sdev->host->hostdata[0]; |
420 | struct ata_device *dev = &ap->device[sdev->id]; | 420 | struct ata_device *dev = &ap->device[sdev->id]; |
421 | 421 | ||
422 | return ata_device_suspend(ap, dev); | 422 | return ata_device_suspend(ap, dev, state); |
423 | } | 423 | } |
424 | 424 | ||
425 | /** | 425 | /** |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 89055494dfee..a6fde52946d6 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -286,7 +286,7 @@ static int scsi_bus_suspend(struct device * dev, pm_message_t state) | |||
286 | return err; | 286 | return err; |
287 | 287 | ||
288 | if (sht->suspend) | 288 | if (sht->suspend) |
289 | err = sht->suspend(sdev); | 289 | err = sht->suspend(sdev, state); |
290 | 290 | ||
291 | return err; | 291 | return err; |
292 | } | 292 | } |
diff --git a/include/linux/libata.h b/include/linux/libata.h index fbe8ba212598..c52f13498556 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -520,9 +520,9 @@ extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); | |||
520 | extern int ata_scsi_release(struct Scsi_Host *host); | 520 | extern int ata_scsi_release(struct Scsi_Host *host); |
521 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); | 521 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); |
522 | extern int ata_scsi_device_resume(struct scsi_device *); | 522 | extern int ata_scsi_device_resume(struct scsi_device *); |
523 | extern int ata_scsi_device_suspend(struct scsi_device *); | 523 | extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t state); |
524 | extern int ata_device_resume(struct ata_port *, struct ata_device *); | 524 | extern int ata_device_resume(struct ata_port *, struct ata_device *); |
525 | extern int ata_device_suspend(struct ata_port *, struct ata_device *); | 525 | extern int ata_device_suspend(struct ata_port *, struct ata_device *, pm_message_t state); |
526 | extern int ata_ratelimit(void); | 526 | extern int ata_ratelimit(void); |
527 | extern unsigned int ata_busy_sleep(struct ata_port *ap, | 527 | extern unsigned int ata_busy_sleep(struct ata_port *ap, |
528 | unsigned long timeout_pat, | 528 | unsigned long timeout_pat, |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index a6cf3e535c0b..dc6862d09e53 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -286,7 +286,7 @@ struct scsi_host_template { | |||
286 | * suspend support | 286 | * suspend support |
287 | */ | 287 | */ |
288 | int (*resume)(struct scsi_device *); | 288 | int (*resume)(struct scsi_device *); |
289 | int (*suspend)(struct scsi_device *); | 289 | int (*suspend)(struct scsi_device *, pm_message_t state); |
290 | 290 | ||
291 | /* | 291 | /* |
292 | * Name of proc directory | 292 | * Name of proc directory |