diff options
Diffstat (limited to 'drivers/ide/ide-taskfile.c')
| -rw-r--r-- | drivers/ide/ide-taskfile.c | 31 | 
1 files changed, 13 insertions, 18 deletions
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index dc84f8bde52..3160be494aa 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c @@ -23,17 +23,16 @@  #include <asm/uaccess.h>  #include <asm/io.h> -void ide_tf_dump(const char *s, struct ide_taskfile *tf) +void ide_tf_dump(const char *s, struct ide_cmd *cmd)  {  #ifdef DEBUG  	printk("%s: tf: feat 0x%02x nsect 0x%02x lbal 0x%02x "  		"lbam 0x%02x lbah 0x%02x dev 0x%02x cmd 0x%02x\n", -		s, tf->feature, tf->nsect, tf->lbal, -		tf->lbam, tf->lbah, tf->device, tf->command); -	printk("%s: hob: nsect 0x%02x lbal 0x%02x " -		"lbam 0x%02x lbah 0x%02x\n", -		s, tf->hob_nsect, tf->hob_lbal, -		tf->hob_lbam, tf->hob_lbah); +	       s, cmd->tf.feature, cmd->tf.nsect, +	       cmd->tf.lbal, cmd->tf.lbam, cmd->tf.lbah, +	       cmd->tf.device, cmd->tf.command); +	printk("%s: hob: nsect 0x%02x lbal 0x%02x lbam 0x%02x lbah 0x%02x\n", +	       s, cmd->hob.nsect, cmd->hob.lbal, cmd->hob.lbam, cmd->hob.lbah);  #endif  } @@ -80,12 +79,12 @@ ide_startstop_t do_rw_taskfile(ide_drive_t *drive, struct ide_cmd *orig_cmd)  	memcpy(cmd, orig_cmd, sizeof(*cmd));  	if ((cmd->tf_flags & IDE_TFLAG_DMA_PIO_FALLBACK) == 0) { -		ide_tf_dump(drive->name, tf); +		ide_tf_dump(drive->name, cmd);  		tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);  		SELECT_MASK(drive, 0);  		if (cmd->ftf_flags & IDE_FTFLAG_OUT_DATA) { -			u8 data[2] = { tf->data, tf->hob_data }; +			u8 data[2] = { cmd->tf.data, cmd->hob.data };  			tp_ops->output_data(drive, cmd, data, 2);  		} @@ -490,10 +489,8 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)  	memset(&cmd, 0, sizeof(cmd)); -	memcpy(&cmd.tf_array[0], req_task->hob_ports, -	       HDIO_DRIVE_HOB_HDR_SIZE - 2); -	memcpy(&cmd.tf_array[6], req_task->io_ports, -	       HDIO_DRIVE_TASK_HDR_SIZE); +	memcpy(&cmd.hob, req_task->hob_ports, HDIO_DRIVE_HOB_HDR_SIZE - 2); +	memcpy(&cmd.tf,  req_task->io_ports,  HDIO_DRIVE_TASK_HDR_SIZE);  	cmd.valid.out.tf = IDE_VALID_DEVICE;  	cmd.valid.in.tf  = IDE_VALID_DEVICE | IDE_VALID_IN_TF; @@ -598,7 +595,7 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)  	if (req_task->req_cmd == IDE_DRIVE_TASK_NO_DATA)  		nsect = 0;  	else if (!nsect) { -		nsect = (cmd.tf.hob_nsect << 8) | cmd.tf.nsect; +		nsect = (cmd.hob.nsect << 8) | cmd.tf.nsect;  		if (!nsect) {  			printk(KERN_ERR "%s: in/out command without data\n", @@ -610,10 +607,8 @@ int ide_taskfile_ioctl(ide_drive_t *drive, unsigned long arg)  	err = ide_raw_taskfile(drive, &cmd, data_buf, nsect); -	memcpy(req_task->hob_ports, &cmd.tf_array[0], -	       HDIO_DRIVE_HOB_HDR_SIZE - 2); -	memcpy(req_task->io_ports, &cmd.tf_array[6], -	       HDIO_DRIVE_TASK_HDR_SIZE); +	memcpy(req_task->hob_ports, &cmd.hob, HDIO_DRIVE_HOB_HDR_SIZE - 2); +	memcpy(req_task->io_ports,  &cmd.tf,  HDIO_DRIVE_TASK_HDR_SIZE);  	if ((cmd.ftf_flags & IDE_FTFLAG_SET_IN_FLAGS) &&  	    req_task->in_flags.all == 0) {  |