aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-park.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-park.c')
-rw-r--r--drivers/ide/ide-park.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c
index f30e52152fcb..9490b446519f 100644
--- a/drivers/ide/ide-park.c
+++ b/drivers/ide/ide-park.c
@@ -1,6 +1,5 @@
1#include <linux/kernel.h> 1#include <linux/kernel.h>
2#include <linux/ide.h> 2#include <linux/ide.h>
3#include <linux/hdreg.h>
4#include <linux/jiffies.h> 3#include <linux/jiffies.h>
5#include <linux/blkdev.h> 4#include <linux/blkdev.h>
6 5
@@ -63,10 +62,10 @@ out:
63 62
64ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) 63ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
65{ 64{
66 ide_task_t task; 65 struct ide_cmd cmd;
67 struct ide_taskfile *tf = &task.tf; 66 struct ide_taskfile *tf = &cmd.tf;
68 67
69 memset(&task, 0, sizeof(task)); 68 memset(&cmd, 0, sizeof(cmd));
70 if (rq->cmd[0] == REQ_PARK_HEADS) { 69 if (rq->cmd[0] == REQ_PARK_HEADS) {
71 drive->sleep = *(unsigned long *)rq->special; 70 drive->sleep = *(unsigned long *)rq->special;
72 drive->dev_flags |= IDE_DFLAG_SLEEPING; 71 drive->dev_flags |= IDE_DFLAG_SLEEPING;
@@ -75,14 +74,16 @@ ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
75 tf->lbal = 0x4c; 74 tf->lbal = 0x4c;
76 tf->lbam = 0x4e; 75 tf->lbam = 0x4e;
77 tf->lbah = 0x55; 76 tf->lbah = 0x55;
78 task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; 77 cmd.tf_flags = IDE_TFLAG_TF | IDE_TFLAG_DEVICE;
79 } else /* cmd == REQ_UNPARK_HEADS */ 78 } else /* cmd == REQ_UNPARK_HEADS */
80 tf->command = ATA_CMD_CHK_POWER; 79 tf->command = ATA_CMD_CHK_POWER;
81 80
82 task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; 81 cmd.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER;
83 task.rq = rq; 82 cmd.protocol = ATA_PROT_NODATA;
84 drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; 83
85 return do_rw_taskfile(drive, &task); 84 cmd.rq = rq;
85
86 return do_rw_taskfile(drive, &cmd);
86} 87}
87 88
88ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, 89ssize_t ide_park_show(struct device *dev, struct device_attribute *attr,