summaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-tape.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-15 21:22:01 +0200
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-15 21:22:01 +0200
commit08424ac24a35b505463919a897b097f27e4dca96 (patch)
treead78a1c794e8d22174b5e84d2ef9e1813f7c3336 /drivers/ide/ide-tape.c
parentide-tape: factor out DSC handling from idetape_pc_intr() (diff)
downloadlinux-08424ac24a35b505463919a897b097f27e4dca96.tar.xz
linux-08424ac24a35b505463919a897b097f27e4dca96.zip
ide-tape: add ide_tape_io_buffers() helper
* Add ide_tape_io_buffers() helper which is a wrapper for idetape_{in,out}put_buffers() and convert idetape_pc_intr() to use it. * Remove no longer used idetape_io_buf typedef. There should be no functional changes caused by this patch. Cc: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>---
Diffstat (limited to '')
-rw-r--r--drivers/ide/ide-tape.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index b224823a8ae7..6801c68ee7da 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -780,7 +780,14 @@ static void ide_tape_handle_dsc(ide_drive_t *drive)
idetape_postpone_request(drive);
}
-typedef void idetape_io_buf(ide_drive_t *, struct ide_atapi_pc *, unsigned int);
+static void ide_tape_io_buffers(ide_drive_t *drive, struct ide_atapi_pc *pc,
+ unsigned int bcount, int write)
+{
+ if (write)
+ idetape_output_buffers(drive, pc, bcount);
+ else
+ idetape_input_buffers(drive, pc, bcount);
+}
/*
* This is the usual interrupt handler which will be called during a packet
@@ -795,7 +802,6 @@ static ide_startstop_t idetape_pc_intr(ide_drive_t *drive)
idetape_tape_t *tape = drive->driver_data;
struct ide_atapi_pc *pc = tape->pc;
xfer_func_t *xferfunc;
- idetape_io_buf *iobuf;
unsigned int temp;
u16 bcount;
u8 stat, ireason;
@@ -895,15 +901,14 @@ static ide_startstop_t idetape_pc_intr(ide_drive_t *drive)
debug_log(DBG_SENSE, "The device wants to send us more "
"data than expected - allowing transfer\n");
}
- iobuf = &idetape_input_buffers;
xferfunc = hwif->input_data;
} else {
- iobuf = &idetape_output_buffers;
xferfunc = hwif->output_data;
}
if (pc->bh)
- iobuf(drive, pc, bcount);
+ ide_tape_io_buffers(drive, pc, bcount,
+ !!(pc->flags & PC_FLAG_WRITING));
else
xferfunc(drive, NULL, pc->cur_pos, bcount);