Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 114168
b: refs/heads/master
c: 85e3903
h: refs/heads/master
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Oct 13, 2008
1 parent cafe72b commit 792f24b
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6b0da28b2d0f4f4e2c55689fc062db569075ff60
refs/heads/master: 85e39035ca381846b031690f4d1ac1f0660da0a2
14 changes: 6 additions & 8 deletions trunk/drivers/ide/ide-atapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,10 +246,7 @@ int ide_scsi_expiry(ide_drive_t *drive)
}
EXPORT_SYMBOL_GPL(ide_scsi_expiry);

/* TODO: unify the code thus making some arguments go away */
ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler,
void (*update_buffers)(ide_drive_t *, struct ide_atapi_pc *),
int (*io_buffers)(ide_drive_t *, struct ide_atapi_pc *, unsigned, int))
ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler)
{
struct ide_atapi_pc *pc = drive->pc;
ide_hwif_t *hwif = drive->hwif;
Expand Down Expand Up @@ -290,8 +287,8 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler,
pc->flags |= PC_FLAG_DMA_ERROR;
} else {
pc->xferred = pc->req_xfer;
if (update_buffers)
update_buffers(drive, pc);
if (drive->pc_update_buffers)
drive->pc_update_buffers(drive, pc);
}
debug_log("%s: DMA finished\n", drive->name);
}
Expand Down Expand Up @@ -386,7 +383,8 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler,
temp = 0;
if (temp) {
if (pc->sg)
io_buffers(drive, pc, temp, 0);
drive->pc_io_buffers(drive, pc,
temp, 0);
else
tp_ops->input_data(drive, NULL,
pc->cur_pos, temp);
Expand All @@ -410,7 +408,7 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler,
if ((drive->media == ide_floppy && !scsi && !pc->buf) ||
(drive->media == ide_tape && !scsi && pc->bh) ||
(scsi && pc->sg)) {
int done = io_buffers(drive, pc, bcount,
int done = drive->pc_io_buffers(drive, pc, bcount,
!!(pc->flags & PC_FLAG_WRITING));

/* FIXME: don't do partial completions */
Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/ide/ide-floppy.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,7 @@ static void ide_floppy_callback(ide_drive_t *drive, int dsc)
/* The usual interrupt handler called during a packet command. */
static ide_startstop_t idefloppy_pc_intr(ide_drive_t *drive)
{
return ide_pc_intr(drive, idefloppy_pc_intr, idefloppy_update_buffers,
ide_io_buffers);
return ide_pc_intr(drive, idefloppy_pc_intr);
}

/*
Expand Down Expand Up @@ -636,7 +635,9 @@ static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy)

*((u16 *)&gcw) = id[ATA_ID_CONFIG];

drive->pc_callback = ide_floppy_callback;
drive->pc_callback = ide_floppy_callback;
drive->pc_update_buffers = idefloppy_update_buffers;
drive->pc_io_buffers = ide_io_buffers;

if (((gcw[0] & 0x60) >> 5) == 1)
drive->atapi_flags |= IDE_AFLAG_DRQ_INTERRUPT;
Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/ide/ide-tape.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,8 +627,7 @@ static int ide_tape_io_buffers(ide_drive_t *drive, struct ide_atapi_pc *pc,
*/
static ide_startstop_t idetape_pc_intr(ide_drive_t *drive)
{
return ide_pc_intr(drive, idetape_pc_intr, idetape_update_buffers,
ide_tape_io_buffers);
return ide_pc_intr(drive, idetape_pc_intr);
}

/*
Expand Down Expand Up @@ -2211,7 +2210,9 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor)
u8 gcw[2];
u16 *ctl = (u16 *)&tape->caps[12];

drive->pc_callback = ide_tape_callback;
drive->pc_callback = ide_tape_callback;
drive->pc_update_buffers = idetape_update_buffers;
drive->pc_io_buffers = ide_tape_io_buffers;

spin_lock_init(&tape->lock);
drive->dsc_overlap = 1;
Expand Down
6 changes: 4 additions & 2 deletions trunk/drivers/scsi/ide-scsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ static int idescsi_end_request (ide_drive_t *drive, int uptodate, int nrsecs)
*/
static ide_startstop_t idescsi_pc_intr (ide_drive_t *drive)
{
return ide_pc_intr(drive, idescsi_pc_intr, NULL, ide_io_buffers);
return ide_pc_intr(drive, idescsi_pc_intr);
}

static ide_startstop_t idescsi_transfer_pc(ide_drive_t *drive)
Expand Down Expand Up @@ -407,7 +407,9 @@ static void idescsi_setup (ide_drive_t *drive, idescsi_scsi_t *scsi)
set_bit(IDESCSI_LOG_CMD, &scsi->log);
#endif /* IDESCSI_DEBUG_LOG */

drive->pc_callback = ide_scsi_callback;
drive->pc_callback = ide_scsi_callback;
drive->pc_update_buffers = NULL;
drive->pc_io_buffers = ide_io_buffers;

ide_proc_register_driver(drive, scsi->driver);
}
Expand Down
9 changes: 5 additions & 4 deletions trunk/include/linux/ide.h
Original file line number Diff line number Diff line change
Expand Up @@ -555,6 +555,10 @@ struct ide_drive_s {
/* callback for packet commands */
void (*pc_callback)(struct ide_drive_s *, int);

void (*pc_update_buffers)(struct ide_drive_s *, struct ide_atapi_pc *);
int (*pc_io_buffers)(struct ide_drive_s *, struct ide_atapi_pc *,
unsigned int, int);

unsigned long atapi_flags;

struct ide_atapi_pc request_sense_pc;
Expand Down Expand Up @@ -1184,10 +1188,7 @@ static inline unsigned long ide_scsi_get_timeout(struct ide_atapi_pc *pc)

int ide_scsi_expiry(ide_drive_t *);

ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler,
void (*update_buffers)(ide_drive_t *, struct ide_atapi_pc *),
int (*io_buffers)(ide_drive_t *, struct ide_atapi_pc *, unsigned int,
int));
ide_startstop_t ide_pc_intr(ide_drive_t *drive, ide_handler_t *handler);
ide_startstop_t ide_transfer_pc(ide_drive_t *,
ide_handler_t *, unsigned int, ide_expiry_t *);
ide_startstop_t ide_issue_pc(ide_drive_t *,
Expand Down

0 comments on commit 792f24b

Please sign in to comment.