aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-taskfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-taskfile.c')
-rw-r--r--drivers/ide/ide-taskfile.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 8a5a10fdcfcb..7ae4a42cfa5a 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -126,6 +126,7 @@ int taskfile_lib_get_identify (ide_drive_t *drive, u8 *buf)
126 args.tf.command = WIN_IDENTIFY; 126 args.tf.command = WIN_IDENTIFY;
127 else 127 else
128 args.tf.command = WIN_PIDENTIFY; 128 args.tf.command = WIN_PIDENTIFY;
129 args.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE;
129 args.command_type = IDE_DRIVE_TASK_IN; 130 args.command_type = IDE_DRIVE_TASK_IN;
130 args.data_phase = TASKFILE_IN; 131 args.data_phase = TASKFILE_IN;
131 args.handler = &task_in_intr; 132 args.handler = &task_in_intr;
@@ -619,6 +620,10 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
619 args.data_phase = req_task->data_phase; 620 args.data_phase = req_task->data_phase;
620 args.command_type = req_task->req_cmd; 621 args.command_type = req_task->req_cmd;
621 622
623 args.tf_flags = IDE_TFLAG_OUT_DEVICE;
624 if (drive->addressing == 1)
625 args.tf_flags |= IDE_TFLAG_LBA48;
626
622 if (req_task->out_flags.all) { 627 if (req_task->out_flags.all) {
623 args.tf_flags |= IDE_TFLAG_FLAGGED; 628 args.tf_flags |= IDE_TFLAG_FLAGGED;
624 629
@@ -644,6 +649,10 @@ int ide_taskfile_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
644 args.tf_flags |= IDE_TFLAG_OUT_LBAM; 649 args.tf_flags |= IDE_TFLAG_OUT_LBAM;
645 if (req_task->out_flags.b.hcyl) 650 if (req_task->out_flags.b.hcyl)
646 args.tf_flags |= IDE_TFLAG_OUT_LBAH; 651 args.tf_flags |= IDE_TFLAG_OUT_LBAH;
652 } else {
653 args.tf_flags |= IDE_TFLAG_OUT_TF;
654 if (args.tf_flags & IDE_TFLAG_LBA48)
655 args.tf_flags |= IDE_TFLAG_OUT_HOB;
647 } 656 }
648 657
649 drive->io_32bit = 0; 658 drive->io_32bit = 0;