diff options
Diffstat (limited to 'drivers/ide/ide-pm.c')
| -rw-r--r-- | drivers/ide/ide-pm.c | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c index f6767aba7cfb..0c1296815dfa 100644 --- a/drivers/ide/ide-pm.c +++ b/drivers/ide/ide-pm.c @@ -20,7 +20,8 @@ int generic_ide_suspend(struct device *dev, pm_message_t mesg)  	memset(&rqpm, 0, sizeof(rqpm));  	rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);  	scsi_req_init(rq); -	rq->cmd_type = REQ_TYPE_ATA_PM_SUSPEND; +	rq->cmd_type = REQ_TYPE_DRV_PRIV; +	ide_req(rq)->type = ATA_PRIV_PM_SUSPEND;  	rq->special = &rqpm;  	rqpm.pm_step = IDE_PM_START_SUSPEND;  	if (mesg.event == PM_EVENT_PRETHAW) @@ -91,7 +92,8 @@ int generic_ide_resume(struct device *dev)  	memset(&rqpm, 0, sizeof(rqpm));  	rq = blk_get_request(drive->queue, READ, __GFP_RECLAIM);  	scsi_req_init(rq); -	rq->cmd_type = REQ_TYPE_ATA_PM_RESUME; +	rq->cmd_type = REQ_TYPE_DRV_PRIV; +	ide_req(rq)->type = ATA_PRIV_PM_RESUME;  	rq->rq_flags |= RQF_PREEMPT;  	rq->special = &rqpm;  	rqpm.pm_step = IDE_PM_START_RESUME; @@ -223,10 +225,10 @@ void ide_complete_pm_rq(ide_drive_t *drive, struct request *rq)  #ifdef DEBUG_PM  	printk("%s: completing PM request, %s\n", drive->name, -	       (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND) ? "suspend" : "resume"); +	       (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) ? "suspend" : "resume");  #endif  	spin_lock_irqsave(q->queue_lock, flags); -	if (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND) +	if (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND)  		blk_stop_queue(q);  	else  		drive->dev_flags &= ~IDE_DFLAG_BLOCKED; @@ -242,11 +244,13 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq)  {  	struct ide_pm_state *pm = rq->special; -	if (rq->cmd_type == REQ_TYPE_ATA_PM_SUSPEND && +	if (rq->cmd_type == REQ_TYPE_DRV_PRIV && +	    ide_req(rq)->type == ATA_PRIV_PM_SUSPEND &&  	    pm->pm_step == IDE_PM_START_SUSPEND)  		/* Mark drive blocked when starting the suspend sequence. */  		drive->dev_flags |= IDE_DFLAG_BLOCKED; -	else if (rq->cmd_type == REQ_TYPE_ATA_PM_RESUME && +	else if (rq->cmd_type == REQ_TYPE_DRV_PRIV && +	         ide_req(rq)->type == ATA_PRIV_PM_RESUME &&  		 pm->pm_step == IDE_PM_START_RESUME) {  		/*  		 * The first thing we do on wakeup is to wait for BSY bit to | 
