diff options
Diffstat (limited to 'drivers/ide/ide-park.c')
-rw-r--r-- | drivers/ide/ide-park.c | 19 |
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 | ||
64 | ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) | 63 | ide_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 | ||
88 | ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, | 89 | ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, |