diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:32 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-05-11 12:59:37 +0200 | 
| commit | 7961386fe9596e6bf03d09948a73c5df9653325b (patch) | |
| tree | 60fa2586a0d340ef8f7473956eef17430d8250c7 /drivers/ide/ide-atapi.c | |
| parent | aa47b7e0f89b9998dad4d1667447e8cb7703ff4e (diff) | |
| parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) | |
| download | olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.tar.xz olio-linux-3.10-7961386fe9596e6bf03d09948a73c5df9653325b.zip  | |
Merge commit 'v2.6.30-rc5' into sched/core
Merge reason: sched/core was on .30-rc1 before, update to latest fixes
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/ide/ide-atapi.c')
| -rw-r--r-- | drivers/ide/ide-atapi.c | 38 | 
1 files changed, 16 insertions, 22 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c index 3e43b889dd6..7201b176d75 100644 --- a/drivers/ide/ide-atapi.c +++ b/drivers/ide/ide-atapi.c @@ -254,16 +254,13 @@ EXPORT_SYMBOL_GPL(ide_cd_get_xferlen);  void ide_read_bcount_and_ireason(ide_drive_t *drive, u16 *bcount, u8 *ireason)  { -	struct ide_cmd cmd; +	struct ide_taskfile tf; -	memset(&cmd, 0, sizeof(cmd)); -	cmd.tf_flags = IDE_TFLAG_IN_LBAH | IDE_TFLAG_IN_LBAM | -		       IDE_TFLAG_IN_NSECT; +	drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT | +				     IDE_VALID_LBAM | IDE_VALID_LBAH); -	drive->hwif->tp_ops->tf_read(drive, &cmd); - -	*bcount = (cmd.tf.lbah << 8) | cmd.tf.lbam; -	*ireason = cmd.tf.nsect & 3; +	*bcount = (tf.lbah << 8) | tf.lbam; +	*ireason = tf.nsect & 3;  }  EXPORT_SYMBOL_GPL(ide_read_bcount_and_ireason); @@ -439,12 +436,12 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)  	return ide_started;  } -static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags, +static void ide_init_packet_cmd(struct ide_cmd *cmd, u8 valid_tf,  				u16 bcount, u8 dma)  { -	cmd->protocol  = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO; -	cmd->tf_flags |= IDE_TFLAG_OUT_LBAH | IDE_TFLAG_OUT_LBAM | -			 IDE_TFLAG_OUT_FEATURE | tf_flags; +	cmd->protocol = dma ? ATAPI_PROT_DMA : ATAPI_PROT_PIO; +	cmd->valid.out.tf = IDE_VALID_LBAH | IDE_VALID_LBAM | +			    IDE_VALID_FEATURE | valid_tf;  	cmd->tf.command = ATA_CMD_PACKET;  	cmd->tf.feature = dma;		/* Use PIO/DMA */  	cmd->tf.lbam    = bcount & 0xff; @@ -453,14 +450,11 @@ static void ide_init_packet_cmd(struct ide_cmd *cmd, u32 tf_flags,  static u8 ide_read_ireason(ide_drive_t *drive)  { -	struct ide_cmd cmd; - -	memset(&cmd, 0, sizeof(cmd)); -	cmd.tf_flags = IDE_TFLAG_IN_NSECT; +	struct ide_taskfile tf; -	drive->hwif->tp_ops->tf_read(drive, &cmd); +	drive->hwif->tp_ops->tf_read(drive, &tf, IDE_VALID_NSECT); -	return cmd.tf.nsect & 3; +	return tf.nsect & 3;  }  static u8 ide_wait_ireason(ide_drive_t *drive, u8 ireason) @@ -588,12 +582,12 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)  	ide_expiry_t *expiry = NULL;  	struct request *rq = hwif->rq;  	unsigned int timeout; -	u32 tf_flags;  	u16 bcount; +	u8 valid_tf;  	u8 drq_int = !!(drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT);  	if (dev_is_idecd(drive)) { -		tf_flags = IDE_TFLAG_OUT_NSECT | IDE_TFLAG_OUT_LBAL; +		valid_tf = IDE_VALID_NSECT | IDE_VALID_LBAL;  		bcount = ide_cd_get_xferlen(rq);  		expiry = ide_cd_expiry;  		timeout = ATAPI_WAIT_PC; @@ -607,7 +601,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)  		pc->xferred = 0;  		pc->cur_pos = pc->buf; -		tf_flags = IDE_TFLAG_OUT_DEVICE; +		valid_tf = IDE_VALID_DEVICE;  		bcount = ((drive->media == ide_tape) ?  				pc->req_xfer :  				min(pc->req_xfer, 63 * 1024)); @@ -627,7 +621,7 @@ ide_startstop_t ide_issue_pc(ide_drive_t *drive, struct ide_cmd *cmd)  						       : WAIT_TAPE_CMD;  	} -	ide_init_packet_cmd(cmd, tf_flags, bcount, drive->dma); +	ide_init_packet_cmd(cmd, valid_tf, bcount, drive->dma);  	(void)do_rw_taskfile(drive, cmd);  |