Annotation of ntddk/src/scsi/qic117/select.c, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) 1993 - Colorado Memory Systems, Inc.
        !             4: All Rights Reserved
        !             5: 
        !             6: Module Name:
        !             7: 
        !             8:     select.c
        !             9: 
        !            10: Abstract:
        !            11: 
        !            12:     Code to select the tape drive (using one of many different schemes
        !            13: 
        !            14: Revision History:
        !            15: 
        !            16: 
        !            17: 
        !            18: 
        !            19: --*/
        !            20: 
        !            21: //
        !            22: // include files
        !            23: //
        !            24: 
        !            25: #include <ntddk.h>                        // various NT definitions
        !            26: #include <ntdddisk.h>                    // disk device driver I/O control codes
        !            27: #include <ntiologc.h>
        !            28: #include "common.h"
        !            29: #include "drvtask.h"                     // this driver's data declarations
        !            30: #include "mt1defs.h"                     // this driver's data declarations
        !            31: #include "mt1strc.h"                     // this driver's data declarations
        !            32: #include "q117data.h"                    // this driver's data declarations
        !            33: 
        !            34: 
        !            35: STATUS
        !            36: Q117iSelectDrive(
        !            37:     IN PTAPE_EXTENSION TapeExtension
        !            38:     )
        !            39: 
        !            40: /*++
        !            41: 
        !            42: Routine Description:
        !            43: 
        !            44:     Select the tape drive by making the select line active (low).
        !            45: 
        !            46: Agruments:
        !            47: 
        !            48:     TapeExtension -
        !            49: 
        !            50: Return Value:
        !            51: 
        !            52: 
        !            53: 
        !            54: --*/
        !            55: 
        !            56: {
        !            57:     STATUS retval = NoErr;
        !            58: 
        !            59:     if (TapeExtension->QControllerData->DriveSelect.Selected == FALSE) {
        !            60: 
        !            61:         WRITE_CONTROLLER(&TapeExtension->QControllerData->FDC_Addr->dor,TapeExtension->QControllerData->DriveSelect.SelectByte);
        !            62: 
        !            63:         if ((TapeExtension->QControllerData->DriveSelect.SelectByte == selu ||
        !            64:             TapeExtension->QControllerData->DriveSelect.SelectByte == selub) &&
        !            65:             TapeExtension->DriveParms.DriveSelect != curb) {
        !            66: 
        !            67:             if (TapeExtension->DriveParms.Flavor == CMS) {
        !            68: 
        !            69:                 if ((retval = Q117iSendByte(TapeExtension, Select_Drive)) == NoErr) {
        !            70: 
        !            71:                     Q117iSleep(TapeExtension, mt_wt2ticks, FALSE);
        !            72:                     retval = Q117iSendByte(TapeExtension, 2);
        !            73: 
        !            74:                 }
        !            75: 
        !            76:             }
        !            77: 
        !            78:             if ((retval == NoErr) && (TapeExtension->DriveParms.Flavor == SUMMIT ||
        !            79:                 TapeExtension->DriveParms.Flavor == ARCHIVE ||
        !            80:                 TapeExtension->DriveParms.Flavor == CORE)) {
        !            81: 
        !            82:                 retval = Q117iMtnPreamble(TapeExtension, TRUE);
        !            83: 
        !            84:             }
        !            85: 
        !            86:         }
        !            87:         if (retval == NoErr) {
        !            88: 
        !            89:             TapeExtension->QControllerData->DriveSelect.Selected = TRUE;
        !            90: 
        !            91:         }
        !            92: 
        !            93:         Q117iSleep(TapeExtension, mt_wt2ticks, FALSE);
        !            94:     }
        !            95: 
        !            96:     return(retval);
        !            97: }
        !            98: 
        !            99: 
        !           100: STATUS
        !           101: Q117iDeselectDrive(
        !           102:     IN PTAPE_EXTENSION TapeExtension
        !           103:     )
        !           104: 
        !           105: /*++
        !           106: 
        !           107: Routine Description:
        !           108: 
        !           109:     Deselect the tape drive by making the select line inactive (high).
        !           110: 
        !           111: Arguments:
        !           112: 
        !           113:     TapeExtension -
        !           114: 
        !           115: Return Value:
        !           116: 
        !           117: 
        !           118: 
        !           119: --*/
        !           120: 
        !           121: {
        !           122:     STATUS retval = NoErr;
        !           123: 
        !           124:     if (TapeExtension->QControllerData->DriveSelect.Selected == TRUE) {
        !           125: 
        !           126:         if ((TapeExtension->QControllerData->DriveSelect.SelectByte == selu ||
        !           127:             TapeExtension->QControllerData->DriveSelect.SelectByte == selub) &&
        !           128:             TapeExtension->DriveParms.DriveSelect != curb) {
        !           129: 
        !           130:             if (TapeExtension->DriveParms.Flavor == CMS ||
        !           131:                 TapeExtension->DriveParms.Flavor == UNKNOWN) {
        !           132: 
        !           133:                 retval = Q117iSendByte(TapeExtension, Deselect_Drive);
        !           134: 
        !           135:             }
        !           136: 
        !           137:             if ((retval == NoErr) &&
        !           138:                 (TapeExtension->DriveParms.Flavor == SUMMIT ||
        !           139:                 TapeExtension->DriveParms.Flavor == ARCHIVE ||
        !           140:                 TapeExtension->DriveParms.Flavor == CORE)) {
        !           141: 
        !           142:                 retval = Q117iMtnPreamble(TapeExtension, FALSE);
        !           143: 
        !           144:             }
        !           145: 
        !           146:         }
        !           147: 
        !           148:         WRITE_CONTROLLER(
        !           149:             &TapeExtension->QControllerData->FDC_Addr->dor,
        !           150:             TapeExtension->QControllerData->DriveSelect.DeselectByte);
        !           151:         TapeExtension->QControllerData->DriveSelect.Selected = FALSE;
        !           152:         Q117iSleep(TapeExtension, mt_wt2ticks, FALSE);
        !           153:     }
        !           154: 
        !           155:     return(retval);
        !           156: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.