diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-24 18:22:44 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-24 18:22:44 -0400 |
commit | c4e66c36cce3f23d68013c4112013123ffe80bdb (patch) | |
tree | 9ea3551dd639acd23bf66f44a3da54d0c7b5eb8e /drivers/ide/ide-park.c | |
parent | 1bc6daae4aba9194f8ff6801af8367a1a4718965 (diff) |
ide: move ide_do_park_unpark() to ide-park.c
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-park.c')
-rw-r--r-- | drivers/ide/ide-park.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/ide/ide-park.c b/drivers/ide/ide-park.c index c875a957596c..f30e52152fcb 100644 --- a/drivers/ide/ide-park.c +++ b/drivers/ide/ide-park.c | |||
@@ -1,5 +1,6 @@ | |||
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> | ||
3 | #include <linux/jiffies.h> | 4 | #include <linux/jiffies.h> |
4 | #include <linux/blkdev.h> | 5 | #include <linux/blkdev.h> |
5 | 6 | ||
@@ -60,6 +61,30 @@ out: | |||
60 | return; | 61 | return; |
61 | } | 62 | } |
62 | 63 | ||
64 | ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) | ||
65 | { | ||
66 | ide_task_t task; | ||
67 | struct ide_taskfile *tf = &task.tf; | ||
68 | |||
69 | memset(&task, 0, sizeof(task)); | ||
70 | if (rq->cmd[0] == REQ_PARK_HEADS) { | ||
71 | drive->sleep = *(unsigned long *)rq->special; | ||
72 | drive->dev_flags |= IDE_DFLAG_SLEEPING; | ||
73 | tf->command = ATA_CMD_IDLEIMMEDIATE; | ||
74 | tf->feature = 0x44; | ||
75 | tf->lbal = 0x4c; | ||
76 | tf->lbam = 0x4e; | ||
77 | tf->lbah = 0x55; | ||
78 | task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; | ||
79 | } else /* cmd == REQ_UNPARK_HEADS */ | ||
80 | tf->command = ATA_CMD_CHK_POWER; | ||
81 | |||
82 | task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; | ||
83 | task.rq = rq; | ||
84 | drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; | ||
85 | return do_rw_taskfile(drive, &task); | ||
86 | } | ||
87 | |||
63 | ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, | 88 | ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, |
64 | char *buf) | 89 | char *buf) |
65 | { | 90 | { |