Annotation of ntddk/src/scsi/qic117/select.c, revision 1.1.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.