lkml.org 
[lkml]   [2008]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 20/22] ide: add ->pc_{update,io}_buffers methods
    Add ->pc_{update,io}_buffers methods to ide_drive_t and use
    them instead of {update,io}_buffers ide_pc_intr() arguments.

    There should be no functional changes caused by this patch.

    Cc: Borislav Petkov <petkovbb@gmail.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    ---
    drivers/ide/ide-atapi.c | 14 ++++++--------
    drivers/ide/ide-floppy.c | 7 ++++---
    drivers/ide/ide-tape.c | 7 ++++---
    drivers/scsi/ide-scsi.c | 6 ++++--
    include/linux/ide.h | 9 +++++----
    5 files changed, 23 insertions(+), 20 deletions(-)

    Index: b/drivers/ide/ide-atapi.c
    ===================================================================
    --- a/drivers/ide/ide-atapi.c
    +++ b/drivers/ide/ide-atapi.c
    @@ -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;
    @@ -290,8 +287,8 @@ ide_startstop_t ide_pc_intr(ide_drive_t
    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);
    }
    @@ -386,7 +383,8 @@ cmd_finished:
    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);
    @@ -410,7 +408,7 @@ cmd_finished:
    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 */
    Index: b/drivers/ide/ide-floppy.c
    ===================================================================
    --- a/drivers/ide/ide-floppy.c
    +++ b/drivers/ide/ide-floppy.c
    @@ -195,8 +195,7 @@ static void ide_floppy_callback(ide_driv
    /* 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);
    }

    /*
    @@ -635,7 +634,9 @@ static void idefloppy_setup(ide_drive_t

    *((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;
    Index: b/drivers/ide/ide-tape.c
    ===================================================================
    --- a/drivers/ide/ide-tape.c
    +++ b/drivers/ide/ide-tape.c
    @@ -627,8 +627,7 @@ static int ide_tape_io_buffers(ide_drive
    */
    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);
    }

    /*
    @@ -2210,7 +2209,9 @@ static void idetape_setup(ide_drive_t *d
    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;
    Index: b/drivers/scsi/ide-scsi.c
    ===================================================================
    --- a/drivers/scsi/ide-scsi.c
    +++ b/drivers/scsi/ide-scsi.c
    @@ -275,7 +275,7 @@ static int idescsi_end_request (ide_driv
    */
    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)
    @@ -407,7 +407,9 @@ static void idescsi_setup (ide_drive_t *
    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);
    }
    Index: b/include/linux/ide.h
    ===================================================================
    --- a/include/linux/ide.h
    +++ b/include/linux/ide.h
    @@ -552,6 +552,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;
    @@ -1173,10 +1177,7 @@ static inline unsigned long ide_scsi_get

    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 *,

    \
     
     \ /
      Last update: 2008-08-10 17:47    [W:0.030 / U:59.260 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site