diff options
Diffstat (limited to 'drivers/ide/ide-pm.c')
| -rw-r--r-- | drivers/ide/ide-pm.c | 32 | 
1 files changed, 17 insertions, 15 deletions
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c index 74c7c2bbe0f..5c9fc20f95b 100644 --- a/drivers/ide/ide-pm.c +++ b/drivers/ide/ide-pm.c @@ -8,7 +8,7 @@ int generic_ide_suspend(struct device *dev, pm_message_t mesg)  	ide_hwif_t *hwif = drive->hwif;  	struct request *rq;  	struct request_pm_state rqpm; -	ide_task_t args; +	struct ide_cmd cmd;  	int ret;  	/* call ACPI _GTM only once */ @@ -16,10 +16,10 @@ int generic_ide_suspend(struct device *dev, pm_message_t mesg)  		ide_acpi_get_timing(hwif);  	memset(&rqpm, 0, sizeof(rqpm)); -	memset(&args, 0, sizeof(args)); +	memset(&cmd, 0, sizeof(cmd));  	rq = blk_get_request(drive->queue, READ, __GFP_WAIT);  	rq->cmd_type = REQ_TYPE_PM_SUSPEND; -	rq->special = &args; +	rq->special = &cmd;  	rq->data = &rqpm;  	rqpm.pm_step = IDE_PM_START_SUSPEND;  	if (mesg.event == PM_EVENT_PRETHAW) @@ -42,7 +42,7 @@ int generic_ide_resume(struct device *dev)  	ide_hwif_t *hwif = drive->hwif;  	struct request *rq;  	struct request_pm_state rqpm; -	ide_task_t args; +	struct ide_cmd cmd;  	int err;  	/* call ACPI _PS0 / _STM only once */ @@ -54,11 +54,11 @@ int generic_ide_resume(struct device *dev)  	ide_acpi_exec_tfs(drive);  	memset(&rqpm, 0, sizeof(rqpm)); -	memset(&args, 0, sizeof(args)); +	memset(&cmd, 0, sizeof(cmd));  	rq = blk_get_request(drive->queue, READ, __GFP_WAIT);  	rq->cmd_type = REQ_TYPE_PM_RESUME;  	rq->cmd_flags |= REQ_PREEMPT; -	rq->special = &args; +	rq->special = &cmd;  	rq->data = &rqpm;  	rqpm.pm_step = IDE_PM_START_RESUME;  	rqpm.pm_state = PM_EVENT_ON; @@ -109,9 +109,9 @@ void ide_complete_power_step(ide_drive_t *drive, struct request *rq)  ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)  {  	struct request_pm_state *pm = rq->data; -	ide_task_t *args = rq->special; +	struct ide_cmd *cmd = rq->special; -	memset(args, 0, sizeof(*args)); +	memset(cmd, 0, sizeof(*cmd));  	switch (pm->pm_step) {  	case IDE_PM_FLUSH_CACHE:	/* Suspend step 1 (flush cache) */ @@ -124,12 +124,12 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)  			return ide_stopped;  		}  		if (ata_id_flush_ext_enabled(drive->id)) -			args->tf.command = ATA_CMD_FLUSH_EXT; +			cmd->tf.command = ATA_CMD_FLUSH_EXT;  		else -			args->tf.command = ATA_CMD_FLUSH; +			cmd->tf.command = ATA_CMD_FLUSH;  		goto out_do_tf;  	case IDE_PM_STANDBY:		/* Suspend step 2 (standby) */ -		args->tf.command = ATA_CMD_STANDBYNOW1; +		cmd->tf.command = ATA_CMD_STANDBYNOW1;  		goto out_do_tf;  	case IDE_PM_RESTORE_PIO:	/* Resume step 1 (restore PIO) */  		ide_set_max_pio(drive); @@ -142,7 +142,7 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)  			ide_complete_power_step(drive, rq);  		return ide_stopped;  	case IDE_PM_IDLE:		/* Resume step 2 (idle) */ -		args->tf.command = ATA_CMD_IDLEIMMEDIATE; +		cmd->tf.command = ATA_CMD_IDLEIMMEDIATE;  		goto out_do_tf;  	case IDE_PM_RESTORE_DMA:	/* Resume step 3 (restore DMA) */  		/* @@ -160,12 +160,14 @@ ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *rq)  	}  	pm->pm_step = IDE_PM_COMPLETED; +  	return ide_stopped;  out_do_tf: -	args->tf_flags	 = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; -	args->data_phase = TASKFILE_NO_DATA; -	return do_rw_taskfile(drive, args); +	cmd->tf_flags	 = IDE_TFLAG_TF | IDE_TFLAG_DEVICE; +	cmd->data_phase = TASKFILE_NO_DATA; + +	return do_rw_taskfile(drive, cmd);  }  /**  |