lkml.org 
[lkml]   [2008]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 24/40] ide-tape: factor out waiting for good ireason from idetape_transfer_pc()
    Factor out waiting for good ireason from idetape_transfer_pc()
    to ide_tape_wait_ireason() as a preparation for adding generic
    ide_transfer_pc() helper.

    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-tape.c | 34 +++++++++++++++++++++++-----------
    1 file changed, 23 insertions(+), 11 deletions(-)

    Index: b/drivers/ide/ide-tape.c
    ===================================================================
    --- a/drivers/ide/ide-tape.c
    +++ b/drivers/ide/ide-tape.c
    @@ -947,21 +947,12 @@ static ide_startstop_t idetape_pc_intr(i
    * again, the callback function will be called and then we will handle the next
    * request.
    */
    -static ide_startstop_t idetape_transfer_pc(ide_drive_t *drive)
    +
    +static u8 ide_tape_wait_ireason(ide_drive_t *drive, u8 ireason)
    {
    ide_hwif_t *hwif = drive->hwif;
    - idetape_tape_t *tape = drive->driver_data;
    - struct ide_atapi_pc *pc = tape->pc;
    int retries = 100;
    - ide_startstop_t startstop;
    - u8 ireason;

    - if (ide_wait_stat(&startstop, drive, DRQ_STAT, BUSY_STAT, WAIT_READY)) {
    - printk(KERN_ERR "%s: Strange, packet command initiated yet "
    - "DRQ isn't asserted\n", drive->name);
    - return startstop;
    - }
    - ireason = hwif->INB(hwif->io_ports.nsect_addr);
    while (retries-- && ((ireason & CD) == 0 || (ireason & IO))) {
    printk(KERN_ERR "%s: (IO,CoD != (0,1) while issuing "
    "a packet command, retrying\n", drive->name);
    @@ -975,6 +966,27 @@ static ide_startstop_t idetape_transfer_
    ireason &= ~IO;
    }
    }
    +
    + return ireason;
    +}
    +
    +static ide_startstop_t idetape_transfer_pc(ide_drive_t *drive)
    +{
    + ide_hwif_t *hwif = drive->hwif;
    + idetape_tape_t *tape = drive->driver_data;
    + struct ide_atapi_pc *pc = tape->pc;
    + ide_startstop_t startstop;
    + u8 ireason;
    +
    + if (ide_wait_stat(&startstop, drive, DRQ_STAT, BUSY_STAT, WAIT_READY)) {
    + printk(KERN_ERR "%s: Strange, packet command initiated yet "
    + "DRQ isn't asserted\n", drive->name);
    + return startstop;
    + }
    +
    + ireason = hwif->INB(hwif->io_ports.nsect_addr);
    + ireason = ide_tape_wait_ireason(drive, ireason);
    +
    if ((ireason & CD) == 0 || (ireason & IO)) {
    printk(KERN_ERR "%s: (IO,CoD) != (0,1) while issuing "
    "a packet command\n", drive->name);

    \
     
     \ /
      Last update: 2008-05-18 20:49    [W:3.873 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site