Annotation of ntddk/src/scsi/qic117/snsnt.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:     snsnt.c
        !             9: 
        !            10: Abstract:
        !            11: 
        !            12: 
        !            13: Revision History:
        !            14: 
        !            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: Q117iSenseSpeed(
        !            37:     IN PTAPE_EXTENSION TapeExtension
        !            38:     )
        !            39: 
        !            40: /*++
        !            41: 
        !            42: Routine Description:
        !            43: 
        !            44:     Sense the transfer rate of the FDC.
        !            45: 
        !            46: Arguments:
        !            47: 
        !            48:     TapeExtension -
        !            49: 
        !            50: Return Value:
        !            51: 
        !            52: 
        !            53: 
        !            54: --*/
        !            55: 
        !            56: {
        !            57:     UCHAR  fdcType;                         // flag to indicate an 82077 FDC
        !            58:     struct DriveConfiguration driveConfig;
        !            59:     STATUS retval;                           // return value
        !            60:     SHORT statLength;
        !            61: #if DBG
        !            62: 
        !            63:     UBYTE rate;
        !            64: 
        !            65: #endif
        !            66: 
        !            67:     Q117iResetFDC(TapeExtension);
        !            68:     if ((retval = Q117iDGetFDC(TapeExtension, &fdcType)) != NoErr) {
        !            69: 
        !            70:         return(retval);
        !            71: 
        !            72:     }
        !            73: 
        !            74:     if ((retval = Q117iReport(
        !            75:                     TapeExtension,
        !            76:                     Report_Confg,
        !            77:                     (USHORT *)&driveConfig,
        !            78:                     READ_BYTE,
        !            79:                     NULL)) != NoErr) {
        !            80: 
        !            81:         return(retval);
        !            82: 
        !            83:     }
        !            84: 
        !            85:     if (TapeExtension->DriveParms.DriveType == QIC40_DRIVE) {
        !            86: 
        !            87:         TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !            88:         TapeExtension->XferRate.MaxRate  = (UBYTE) FAST;
        !            89:         TapeExtension->XferRate.TapeSlow = (UBYTE) TAPE_250Kbps;
        !            90:         TapeExtension->XferRate.TapeFast = (UBYTE) TAPE_500Kbps;
        !            91:         TapeExtension->XferRate.FDC_Slow  = (UBYTE) FDC_250Kbps;
        !            92:         TapeExtension->XferRate.FDC_Fast  = (UBYTE) FDC_500Kbps;
        !            93:         TapeExtension->XferRate.SRT_Slow  = (UBYTE) SRT_250Kbps;
        !            94:         TapeExtension->XferRate.SRT_Fast  = (UBYTE) SRT_500Kbps;
        !            95: 
        !            96:     } else {
        !            97: 
        !            98:         TapeExtension->XferRate.XferRate = (UBYTE) SLOW;
        !            99:         TapeExtension->XferRate.MaxRate  = (UBYTE) SLOW;
        !           100:         TapeExtension->XferRate.TapeSlow = (UBYTE) TAPE_500Kbps;
        !           101:         TapeExtension->XferRate.TapeFast = (UBYTE) TAPE_1Mbps;
        !           102:         TapeExtension->XferRate.FDC_Slow  = (UBYTE) FDC_500Kbps;
        !           103:         TapeExtension->XferRate.FDC_Fast  = (UBYTE) FDC_1Mbps;
        !           104:         TapeExtension->XferRate.SRT_Slow  = (UBYTE) SRT_500Kbps;
        !           105:         TapeExtension->XferRate.SRT_Fast  = (UBYTE) SRT_1Mbps;
        !           106: 
        !           107:     }
        !           108: 
        !           109:     switch (TapeExtension->DriveParms.Flavor) {
        !           110: 
        !           111:     case CMS:
        !           112:     case IOMEGA:
        !           113:     case SUMMIT:
        !           114:     case WANGTEK:
        !           115: 
        !           116:         if (TapeExtension->DriveParms.DriveType == QIC80_DRIVE) {
        !           117: 
        !           118:             if (fdcType == FDC_82077 ||
        !           119:                     fdcType == FDC_82077AA ||
        !           120:                     fdcType == FDC_82078_44 ||
        !           121:                     fdcType == FDC_82078_64 ||
        !           122:                     fdcType == FDC_NATIONAL) {
        !           123: 
        !           124:                 CheckedDump(QIC117INFO,( "Q117i: sns spd megabit fdc\n"));
        !           125: 
        !           126:                 TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           127:                 TapeExtension->XferRate.MaxRate  = (UBYTE) FAST;
        !           128: 
        !           129:             }
        !           130: 
        !           131:         }
        !           132: 
        !           133:         break;
        !           134: 
        !           135:     case ARCHIVE:
        !           136: 
        !           137:         if (TapeExtension->DriveParms.ArchiveNativeMode) {
        !           138: 
        !           139:             if (TapeExtension->DriveParms.DriveType == QIC80_DRIVE) {
        !           140: 
        !           141:                 if ((fdcType == FDC_82077 ||
        !           142:                     fdcType == FDC_82077AA ||
        !           143:                     fdcType == FDC_82078_44 ||
        !           144:                     fdcType == FDC_82078_64 ||
        !           145:                     fdcType == FDC_NATIONAL) &&
        !           146:                     ((TapeExtension->DriveParms.ArchiveNativeMode &
        !           147:                     ARCHIVE_1MB_XFER) != 0)) {
        !           148: 
        !           149:                         TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           150:                         TapeExtension->XferRate.MaxRate  = (UBYTE) FAST;
        !           151: 
        !           152:                 }
        !           153: 
        !           154:             }
        !           155: 
        !           156:         } else {
        !           157: 
        !           158:             switch (driveConfig.XferRate) {
        !           159: 
        !           160:             case TAPE_1Mbps:
        !           161: 
        !           162:                 if ((fdcType == FDC_82077 ||
        !           163:                     fdcType == FDC_82077AA ||
        !           164:                     fdcType == FDC_82078_44 ||
        !           165:                     fdcType == FDC_82078_64 ||
        !           166:                     fdcType == FDC_NATIONAL) &&
        !           167:                     (TapeExtension->DriveParms.DriveType == QIC80_DRIVE)) {
        !           168: 
        !           169:                     TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           170:                     TapeExtension->XferRate.MaxRate  = (UBYTE) FAST;
        !           171: 
        !           172:                 } else {
        !           173: 
        !           174:                     CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = UNSUPPORTED_RATE\n"));
        !           175:                     return(UnspRate);
        !           176: 
        !           177:                 }
        !           178: 
        !           179:             case TAPE_500Kbps:
        !           180: 
        !           181:                 if (TapeExtension->DriveParms.DriveType == QIC40_DRIVE) {
        !           182: 
        !           183:                     TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           184:                     TapeExtension->XferRate.MaxRate = (UBYTE) FAST;
        !           185: 
        !           186:                 } else {
        !           187: 
        !           188:                     TapeExtension->XferRate.XferRate = (UBYTE) SLOW;
        !           189:                     TapeExtension->XferRate.MaxRate = (UBYTE) SLOW;
        !           190: 
        !           191:                 }
        !           192:                 break;
        !           193: 
        !           194:             case TAPE_250Kbps:
        !           195: 
        !           196:                 if (TapeExtension->DriveParms.DriveType == QIC40_DRIVE) {
        !           197: 
        !           198:                     TapeExtension->XferRate.XferRate = (UBYTE) SLOW;
        !           199:                     TapeExtension->XferRate.MaxRate = (UBYTE) SLOW;
        !           200: 
        !           201:                 } else {
        !           202: 
        !           203:                     return(UnspRate);
        !           204: 
        !           205:                 }
        !           206:                 break;
        !           207: 
        !           208:             default:
        !           209: 
        !           210:                 CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = UNSUPPORTED_RATE\n"));
        !           211:                 return(UnspRate);
        !           212: 
        !           213:             }
        !           214: 
        !           215:         }
        !           216: 
        !           217:         break;
        !           218: 
        !           219:     default:
        !           220: 
        !           221:         switch (driveConfig.XferRate) {
        !           222: 
        !           223:         case TAPE_1Mbps:
        !           224: 
        !           225:             if ((fdcType == FDC_82077 ||
        !           226:                 fdcType == FDC_82077AA ||
        !           227:                 fdcType == FDC_82078_44 ||
        !           228:                 fdcType == FDC_82078_64 ||
        !           229:                 fdcType == FDC_NATIONAL) &&
        !           230:                 (TapeExtension->DriveParms.DriveType == QIC80_DRIVE)) {
        !           231: 
        !           232:                 TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           233:                 TapeExtension->XferRate.MaxRate  = (UBYTE) FAST;
        !           234: 
        !           235:             } else {
        !           236: 
        !           237:                 CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = UNSUPPORTED_RATE\n"));
        !           238:                 return(UnspRate);
        !           239: 
        !           240:             }
        !           241: 
        !           242:         case TAPE_500Kbps:
        !           243: 
        !           244:             if (TapeExtension->DriveParms.DriveType == QIC40_DRIVE) {
        !           245: 
        !           246:                 TapeExtension->XferRate.XferRate = (UBYTE) FAST;
        !           247:                 TapeExtension->XferRate.MaxRate = (UBYTE) FAST;
        !           248: 
        !           249:             } else {
        !           250: 
        !           251:                 TapeExtension->XferRate.XferRate = (UBYTE) SLOW;
        !           252:                 TapeExtension->XferRate.MaxRate = (UBYTE) SLOW;
        !           253: 
        !           254:             }
        !           255:             break;
        !           256: 
        !           257:         case TAPE_250Kbps:
        !           258: 
        !           259:             if (TapeExtension->DriveParms.DriveType == QIC40_DRIVE) {
        !           260: 
        !           261:                 TapeExtension->XferRate.XferRate = (UBYTE) SLOW;
        !           262:                 TapeExtension->XferRate.MaxRate = (UBYTE) SLOW;
        !           263: 
        !           264:             } else {
        !           265: 
        !           266:                 return(UnspRate);
        !           267: 
        !           268:             }
        !           269:             break;
        !           270: 
        !           271:         default:
        !           272: 
        !           273:             CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = UNSUPPORTED_RATE\n"));
        !           274:             return(UnspRate);
        !           275: 
        !           276:         }
        !           277: 
        !           278:     }
        !           279: 
        !           280: 
        !           281: #if DBG
        !           282: 
        !           283:     if (TapeExtension->XferRate.MaxRate == FAST) {
        !           284:         rate = TapeExtension->XferRate.TapeFast;
        !           285:     } else {
        !           286:         rate = TapeExtension->XferRate.TapeSlow;
        !           287:     }
        !           288: 
        !           289:     switch (rate) {
        !           290:     case TAPE_250Kbps:
        !           291:         CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = 250Kbps\n"));
        !           292:         break;
        !           293:     case TAPE_500Kbps:
        !           294:         CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = 500Kbps\n"));
        !           295:         break;
        !           296:     case TAPE_1Mbps:
        !           297:         CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = 1Mbps\n"));
        !           298:         break;
        !           299:     case TAPE_2Mbps:
        !           300:         CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = 2Mbps\n"));
        !           301:         break;
        !           302:     default:
        !           303:         CheckedDump(QIC117INFO,( "Q117i: Transfer Rate = UNSUPPORTED_RATE\n"));
        !           304:     }
        !           305: 
        !           306: #endif
        !           307: 
        !           308:     return(Q117iConfigureFDC(TapeExtension));
        !           309: }
        !           310: 
        !           311: 
        !           312: 
        !           313: VOID
        !           314: Q117iDCR_Out(
        !           315:     IN PTAPE_EXTENSION TapeExtension,
        !           316:     IN SHORT speed
        !           317:     )
        !           318: 
        !           319: /*++
        !           320: 
        !           321: Routine Description:
        !           322: 
        !           323:     Output control data to the FDC digital control register.
        !           324: 
        !           325: Arguments:
        !           326: 
        !           327:     TapeExtension -
        !           328: 
        !           329:     Speed -
        !           330: 
        !           331: Return Value:
        !           332: 
        !           333:     None
        !           334: 
        !           335: --*/
        !           336: 
        !           337: {
        !           338:     speed = (SHORT)((UCHAR)speed & 0x03);
        !           339:     WRITE_CONTROLLER(&TapeExtension->QControllerData->FDC_Addr->dcr,speed);
        !           340: }

unix.superglobalmegacorp.com

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