Loading drivers/ide/ide-io.c +0 −24 Original line number Diff line number Diff line Loading @@ -527,30 +527,6 @@ static ide_startstop_t ide_do_devset(ide_drive_t *drive, struct request *rq) return ide_stopped; } static ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) { ide_task_t task; struct ide_taskfile *tf = &task.tf; memset(&task, 0, sizeof(task)); if (rq->cmd[0] == REQ_PARK_HEADS) { drive->sleep = *(unsigned long *)rq->special; drive->dev_flags |= IDE_DFLAG_SLEEPING; tf->command = ATA_CMD_IDLEIMMEDIATE; tf->feature = 0x44; tf->lbal = 0x4c; tf->lbam = 0x4e; tf->lbah = 0x55; task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; } else /* cmd == REQ_UNPARK_HEADS */ tf->command = ATA_CMD_CHK_POWER; task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; task.rq = rq; drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; return do_rw_taskfile(drive, &task); } static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq) { u8 cmd = rq->cmd[0]; Loading drivers/ide/ide-park.c +25 −0 Original line number Diff line number Diff line #include <linux/kernel.h> #include <linux/ide.h> #include <linux/hdreg.h> #include <linux/jiffies.h> #include <linux/blkdev.h> Loading Loading @@ -60,6 +61,30 @@ static void issue_park_cmd(ide_drive_t *drive, unsigned long timeout) return; } ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) { ide_task_t task; struct ide_taskfile *tf = &task.tf; memset(&task, 0, sizeof(task)); if (rq->cmd[0] == REQ_PARK_HEADS) { drive->sleep = *(unsigned long *)rq->special; drive->dev_flags |= IDE_DFLAG_SLEEPING; tf->command = ATA_CMD_IDLEIMMEDIATE; tf->feature = 0x44; tf->lbal = 0x4c; tf->lbam = 0x4e; tf->lbah = 0x55; task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; } else /* cmd == REQ_UNPARK_HEADS */ tf->command = ATA_CMD_CHK_POWER; task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; task.rq = rq; drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; return do_rw_taskfile(drive, &task); } ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading include/linux/ide.h +2 −0 Original line number Diff line number Diff line Loading @@ -1169,6 +1169,8 @@ int ide_busy_sleep(ide_hwif_t *, unsigned long, int); int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); extern ide_startstop_t ide_do_reset (ide_drive_t *); extern int ide_devset_execute(ide_drive_t *drive, Loading Loading
drivers/ide/ide-io.c +0 −24 Original line number Diff line number Diff line Loading @@ -527,30 +527,6 @@ static ide_startstop_t ide_do_devset(ide_drive_t *drive, struct request *rq) return ide_stopped; } static ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) { ide_task_t task; struct ide_taskfile *tf = &task.tf; memset(&task, 0, sizeof(task)); if (rq->cmd[0] == REQ_PARK_HEADS) { drive->sleep = *(unsigned long *)rq->special; drive->dev_flags |= IDE_DFLAG_SLEEPING; tf->command = ATA_CMD_IDLEIMMEDIATE; tf->feature = 0x44; tf->lbal = 0x4c; tf->lbam = 0x4e; tf->lbah = 0x55; task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; } else /* cmd == REQ_UNPARK_HEADS */ tf->command = ATA_CMD_CHK_POWER; task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; task.rq = rq; drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; return do_rw_taskfile(drive, &task); } static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq) { u8 cmd = rq->cmd[0]; Loading
drivers/ide/ide-park.c +25 −0 Original line number Diff line number Diff line #include <linux/kernel.h> #include <linux/ide.h> #include <linux/hdreg.h> #include <linux/jiffies.h> #include <linux/blkdev.h> Loading Loading @@ -60,6 +61,30 @@ static void issue_park_cmd(ide_drive_t *drive, unsigned long timeout) return; } ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq) { ide_task_t task; struct ide_taskfile *tf = &task.tf; memset(&task, 0, sizeof(task)); if (rq->cmd[0] == REQ_PARK_HEADS) { drive->sleep = *(unsigned long *)rq->special; drive->dev_flags |= IDE_DFLAG_SLEEPING; tf->command = ATA_CMD_IDLEIMMEDIATE; tf->feature = 0x44; tf->lbal = 0x4c; tf->lbam = 0x4e; tf->lbah = 0x55; task.tf_flags |= IDE_TFLAG_CUSTOM_HANDLER; } else /* cmd == REQ_UNPARK_HEADS */ tf->command = ATA_CMD_CHK_POWER; task.tf_flags |= IDE_TFLAG_TF | IDE_TFLAG_DEVICE; task.rq = rq; drive->hwif->data_phase = task.data_phase = TASKFILE_NO_DATA; return do_rw_taskfile(drive, &task); } ssize_t ide_park_show(struct device *dev, struct device_attribute *attr, char *buf) { Loading
include/linux/ide.h +2 −0 Original line number Diff line number Diff line Loading @@ -1169,6 +1169,8 @@ int ide_busy_sleep(ide_hwif_t *, unsigned long, int); int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); extern ide_startstop_t ide_do_reset (ide_drive_t *); extern int ide_devset_execute(ide_drive_t *drive, Loading