|
|
1.1 ! root 1: /*********************************************************************** ! 2: ;* File Name : TMSCSIW.H * ! 3: ;* TEKRAM DC-390 PCI Wide SCSI Bus Master Host Adapter* ! 4: ;* Device Driver * ! 5: ;***********************************************************************/ ! 6: ! 7: #ifndef TMSCSIW_H ! 8: #define TMSCSIW_H ! 9: ! 10: #define IRQ_NONE 255 ! 11: ! 12: typedef unsigned char UCHAR; ! 13: typedef unsigned short USHORT; ! 14: typedef unsigned long ULONG; ! 15: typedef unsigned int UINT; ! 16: ! 17: typedef UCHAR *PUCHAR; ! 18: typedef USHORT *PUSHORT; ! 19: typedef ULONG *PULONG; ! 20: typedef Scsi_Host_Template *PSHT; ! 21: typedef struct Scsi_Host *PSH; ! 22: typedef Scsi_Device *PSCSIDEV; ! 23: typedef Scsi_Cmnd *PSCSICMD; ! 24: typedef void *PVOID; ! 25: typedef struct scatterlist *PSGL, SGL; ! 26: ! 27: ! 28: typedef struct _AddWkSpace ! 29: { ! 30: USHORT WKIOCtrlFlag; /* ;b7-Done, b6-wrtVerify, b0-in process */ ! 31: USHORT XferredBlkCnt; ! 32: USHORT WKToXferBlkCnt; ! 33: USHORT WKcSGListDone; ! 34: USHORT WKMaxSGIndex; ! 35: ULONG WKToXferLen; ! 36: USHORT NxtSGoffset; ! 37: } AddWkSpace; ! 38: ! 39: /*;-----------------------------------------------------------------------*/ ! 40: typedef struct _SyncMsg ! 41: { ! 42: UCHAR ExtendMsg; ! 43: UCHAR ExtMsgLen; ! 44: UCHAR SyncXferReq; ! 45: UCHAR Period; ! 46: UCHAR ReqOffset; ! 47: } SyncMsg; ! 48: /*;-----------------------------------------------------------------------*/ ! 49: typedef struct _Capacity ! 50: { ! 51: ULONG BlockCount; ! 52: ULONG BlockLength; ! 53: } Capacity; ! 54: /*;-----------------------------------------------------------------------*/ ! 55: typedef struct _SGentry ! 56: { ! 57: ULONG SGXferDataPtr; ! 58: ULONG SGXferDataLen; ! 59: } SGentry; ! 60: ! 61: typedef struct _SGentry1 ! 62: { ! 63: ULONG SGXLen; ! 64: ULONG SGXPtr; ! 65: } SGentry1, *PSGE; ! 66: ! 67: ! 68: #define MAX_ADAPTER_NUM 4 ! 69: #define MAX_DEVICES 10 ! 70: #define MAX_SG_LIST_BUF 32 ! 71: #define MAX_CMD_QUEUE 20 ! 72: #define MAX_CMD_PER_LUN 8 ! 73: #define MAX_SCSI_ID 16 ! 74: #define MAX_SRB_CNT MAX_CMD_QUEUE+4 ! 75: #define END_SCAN 2 ! 76: ! 77: /* ! 78: ;----------------------------------------------------------------------- ! 79: ; SCSI Request Block ! 80: ;----------------------------------------------------------------------- ! 81: */ ! 82: struct _SRB ! 83: { ! 84: UCHAR CmdBlock[12]; ! 85: ULONG Segment0[MAX_SG_LIST_BUF+1][2]; ! 86: ULONG SegmentPad[2]; ! 87: ! 88: ULONG __select; ! 89: ULONG __command[2]; /* ;len,ptr */ ! 90: ULONG __msgout0[2]; /* ;len,ptr */ ! 91: ! 92: ULONG PhysSRB; ! 93: ULONG ReturnAddr; ! 94: ULONG RemainSegPtr; ! 95: PSCSICMD pcmd; ! 96: struct _SRB *pNextSRB; ! 97: struct _DCB *pSRBDCB; ! 98: PSGL pSegmentList; ! 99: ULONG XferredLen; ! 100: ! 101: ULONG SGPhysAddr; /*;a segment starting address */ ! 102: ULONG XferredLen1; ! 103: ! 104: SGL Segmentx; /* make a one entry of S/G list table */ ! 105: ! 106: PUCHAR pMsgPtr; ! 107: USHORT SRBState; ! 108: USHORT Revxx2; /* ??? */ ! 109: ! 110: UCHAR MsgInBuf[6]; ! 111: UCHAR MsgOutBuf[6]; ! 112: UCHAR SenseDataBuf[0x12]; ! 113: UCHAR AdaptStatus; ! 114: UCHAR TargetStatus; ! 115: ! 116: UCHAR MsgCnt; ! 117: UCHAR EndMessage; ! 118: UCHAR TagNumber; ! 119: UCHAR InternalReq; /*; 1-ADD internal request, 0-DMD request */ ! 120: ! 121: UCHAR SGcount; ! 122: UCHAR SGIndex; ! 123: UCHAR IORBFlag; /*;81h-Reset, 2-retry */ ! 124: UCHAR SRBStatus; ! 125: ! 126: UCHAR RetryCnt; ! 127: UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ ! 128: /*; b4-settimeout,b5-Residual valid */ ! 129: UCHAR ScratchABuf; ! 130: UCHAR Reserved3[1]; /*;for dword alignment */ ! 131: }; ! 132: ! 133: typedef struct _SRB DC390W_SRB, *PSRB; ! 134: ! 135: /* ! 136: ;----------------------------------------------------------------------- ! 137: ; Device Control Block ! 138: ;----------------------------------------------------------------------- ! 139: */ ! 140: struct _DCB ! 141: { ! 142: UCHAR DCBselect; ! 143: UCHAR DCBsxfer; ! 144: UCHAR DCBsdid; ! 145: UCHAR DCBscntl3; ! 146: ! 147: UCHAR DCBscntl0; ! 148: UCHAR IdentifyMsg; ! 149: UCHAR DevMode; ! 150: UCHAR AdpMode; ! 151: ! 152: struct _DCB *pNextDCB; ! 153: struct _ACB *pDCBACB; ! 154: ! 155: PSCSICMD pQIORBhead; ! 156: PSCSICMD pQIORBtail; ! 157: PSCSICMD AboIORBhead; ! 158: PSCSICMD AboIORBtail; ! 159: USHORT QIORBCnt; ! 160: USHORT AboIORBcnt; ! 161: ! 162: PSRB pWaitingSRB; ! 163: PSRB pWaitLast; ! 164: PSRB pGoingSRB; ! 165: PSRB pGoingLast; ! 166: PSRB pActiveSRB; ! 167: USHORT GoingSRBCnt; ! 168: USHORT WaitSRBCnt; /* ??? */ ! 169: ! 170: ULONG TagMask; ! 171: ! 172: USHORT MaxCommand; ! 173: USHORT AdaptIndex; /*; UnitInfo struc start */ ! 174: USHORT UnitIndex; /*; nth Unit on this card */ ! 175: UCHAR UnitSCSIID; /*; SCSI Target ID (SCSI Only) */ ! 176: UCHAR UnitSCSILUN; /*; SCSI Log. Unit (SCSI Only) */ ! 177: ! 178: UCHAR InqDataBuf[8]; ! 179: UCHAR CapacityBuf[8]; ! 180: UCHAR SyncMode; /*; 0:async mode */ ! 181: UCHAR NegoPeriod; /*;for nego. */ ! 182: UCHAR SyncPeriod; /*;for reg. */ ! 183: UCHAR SyncOffset; /*;for reg. and nego.(low nibble) */ ! 184: UCHAR UnitCtrlFlag; ! 185: UCHAR DCBFlag; ! 186: UCHAR DevType; ! 187: UCHAR Reserved2[1]; /*;for dword alignment */ ! 188: }; ! 189: ! 190: typedef struct _DCB DC390W_DCB, *PDCB; ! 191: /* ! 192: ;----------------------------------------------------------------------- ! 193: ; Adapter Control Block ! 194: ;----------------------------------------------------------------------- ! 195: */ ! 196: struct _ACB ! 197: { ! 198: ULONG PhysACB; ! 199: ULONG DevVendorID; ! 200: PSH pScsiHost; ! 201: struct _ACB *pNextACB; ! 202: USHORT IOPortBase; ! 203: USHORT Revxx1; /* ??? */ ! 204: ! 205: PDCB pLinkDCB; ! 206: PDCB pDCBRunRobin; ! 207: PDCB pActiveDCB; ! 208: PDCB pDCB_free; ! 209: PSRB pFreeSRB; ! 210: USHORT SRBCount; ! 211: USHORT AdapterIndex; /*; nth Adapter this driver */ ! 212: USHORT max_id; ! 213: USHORT max_lun; ! 214: ! 215: ULONG jmp_reselect; ! 216: ULONG jmp_select; ! 217: ULONG jmp_table8; ! 218: ULONG jmp_set_atn; ! 219: ULONG jmp_clear_ack; ! 220: ULONG jmp_next; ! 221: ULONG jmp_din8; ! 222: ULONG jmp_dout8; ! 223: ULONG jmp_clear_atn; ! 224: ULONG jmp_reselecttag; ! 225: ! 226: UCHAR msgin123[4]; ! 227: UCHAR status; ! 228: UCHAR AdaptSCSIID; /*; Adapter SCSI Target ID */ ! 229: UCHAR AdaptSCSILUN; /*; Adapter SCSI LUN */ ! 230: UCHAR DeviceCnt; ! 231: UCHAR IRQLevel; ! 232: UCHAR AdaptType; /*;1:390W, 2:390U, 3:390F */ ! 233: UCHAR TagMaxNum; ! 234: UCHAR ACBFlag; ! 235: UCHAR Gmode2; ! 236: UCHAR LUNchk; ! 237: UCHAR scan_devices; ! 238: UCHAR Reserved1[1]; /*;for dword alignment */ ! 239: UCHAR DCBmap[MAX_SCSI_ID]; ! 240: DC390W_DCB DCB_array[MAX_DEVICES]; /* +74h, Len=3E8 */ ! 241: DC390W_SRB SRB_array[MAX_SRB_CNT]; /* +45Ch, Len= */ ! 242: }; ! 243: ! 244: typedef struct _ACB DC390W_ACB, *PACB; ! 245: ! 246: /*;-----------------------------------------------------------------------*/ ! 247: ! 248: #define PCI_DEVICE_ID_NCR53C825A 0x0003 ! 249: #define PCI_DEVICE_ID_NCR53C875 0x000f ! 250: ! 251: #define CHIP810_ID 0x00011000 ! 252: #define CHIP820_ID 0x00021000 ! 253: #define CHIP825_ID 0x00031000 ! 254: #define CHIP815_ID 0x00041000 ! 255: #define CHIP875_ID 0x000f1000 ! 256: ! 257: #define DC390W 1 /*;825A - 16 BIT*/ ! 258: #define DC390U 2 /*;875 - 8 BIT*/ ! 259: #define DC390F 3 /*;875 - 16 BIT*/ ! 260: ! 261: #define BIT31 0x80000000 ! 262: #define BIT30 0x40000000 ! 263: #define BIT29 0x20000000 ! 264: #define BIT28 0x10000000 ! 265: #define BIT27 0x08000000 ! 266: #define BIT26 0x04000000 ! 267: #define BIT25 0x02000000 ! 268: #define BIT24 0x01000000 ! 269: #define BIT23 0x00800000 ! 270: #define BIT22 0x00400000 ! 271: #define BIT21 0x00200000 ! 272: #define BIT20 0x00100000 ! 273: #define BIT19 0x00080000 ! 274: #define BIT18 0x00040000 ! 275: #define BIT17 0x00020000 ! 276: #define BIT16 0x00010000 ! 277: #define BIT15 0x00008000 ! 278: #define BIT14 0x00004000 ! 279: #define BIT13 0x00002000 ! 280: #define BIT12 0x00001000 ! 281: #define BIT11 0x00000800 ! 282: #define BIT10 0x00000400 ! 283: #define BIT9 0x00000200 ! 284: #define BIT8 0x00000100 ! 285: #define BIT7 0x00000080 ! 286: #define BIT6 0x00000040 ! 287: #define BIT5 0x00000020 ! 288: #define BIT4 0x00000010 ! 289: #define BIT3 0x00000008 ! 290: #define BIT2 0x00000004 ! 291: #define BIT1 0x00000002 ! 292: #define BIT0 0x00000001 ! 293: ! 294: /*;---WKIOCtrlFlag */ ! 295: #define IN_PROCESSING BIT0 ! 296: #define BAD_WRITE_V_CMD BIT1 ! 297: #define VERIFY_CMD BIT2 ! 298: #define RESIDUAL_SG BIT3 ! 299: ! 300: /*;---UnitCtrlFlag */ ! 301: #define UNIT_ALLOCATED BIT0 ! 302: #define UNIT_INFO_CHANGED BIT1 ! 303: #define FORMATING_MEDIA BIT2 ! 304: #define UNIT_RETRY BIT3 ! 305: ! 306: /*;---UnitFlags */ ! 307: #define DASD_SUPPORT BIT0 ! 308: #define SCSI_SUPPORT BIT1 ! 309: #define ASPI_SUPPORT BIT2 ! 310: ! 311: /*;----SRBState machine definition */ ! 312: #define SRB_FREE 0 ! 313: #define SRB_WAIT BIT0 ! 314: #define SRB_READY BIT1 ! 315: #define SRB_MSGOUT BIT2 /*;arbitration+msg_out 1st byte*/ ! 316: #define SRB_MSGIN BIT3 ! 317: #define SRB_MSGIN_MULTI BIT4 ! 318: #define SRB_COMMAND BIT5 ! 319: #define SRB_START_ BIT6 /*;arbitration+msg_out+command_out*/ ! 320: #define SRB_DISCONNECT BIT7 ! 321: #define SRB_DATA_XFER BIT8 ! 322: #define SRB_XFERPAD BIT9 ! 323: #define SRB_STATUS BIT10 ! 324: #define SRB_COMPLETED BIT11 ! 325: ! 326: #define DO_WIDE_NEGO BIT12 ! 327: #define DO_SYNC_NEGO BIT13 ! 328: #define SRB_UNEXPECT_RESEL BIT14 ! 329: ! 330: /*;---ACBFlag */ ! 331: #define RESET_DEV BIT0 ! 332: #define RESET_DETECT BIT1 ! 333: #define RESET_DONE BIT2 ! 334: ! 335: /*;---DCBFlag */ ! 336: #define ABORT_DEV_ BIT0 ! 337: ! 338: /*;---SRBstatus */ ! 339: #define SRB_OK BIT0 ! 340: #define ABORTION BIT1 ! 341: #define OVER_RUN BIT2 ! 342: #define UNDER_RUN BIT3 ! 343: #define SRB_ERROR BIT4 ! 344: ! 345: /*;---SRBFlag */ ! 346: #define DATAOUT BIT7 ! 347: #define DATAIN BIT6 ! 348: #define RESIDUAL_VALID BIT5 ! 349: #define ENABLE_TIMER BIT4 ! 350: #define RESET_DEV0 BIT2 ! 351: #define ABORT_DEV BIT1 ! 352: #define AUTO_REQSENSE BIT0 ! 353: ! 354: /*;---Adapter status */ ! 355: #define H_STATUS_GOOD 0 ! 356: #define H_SEL_TIMEOUT 0x11 ! 357: #define H_OVER_UNDER_RUN 0x12 ! 358: #define H_UNEXP_BUS_FREE 0x13 ! 359: #define H_TARGET_PHASE_F 0x14 ! 360: #define H_INVALID_CCB_OP 0x16 ! 361: #define H_LINK_CCB_BAD 0x17 ! 362: #define H_BAD_TARGET_DIR 0x18 ! 363: #define H_DUPLICATE_CCB 0x19 ! 364: #define H_BAD_CCB_OR_SG 0x1A ! 365: #define H_ABORT 0x0FF ! 366: ! 367: /*; SCSI Status byte codes*/ ! 368: #define SCSI_STAT_GOOD 0x0 /*; Good status */ ! 369: #define SCSI_STAT_CHECKCOND 0x02 /*; SCSI Check Condition */ ! 370: #define SCSI_STAT_CONDMET 0x04 /*; Condition Met */ ! 371: #define SCSI_STAT_BUSY 0x08 /*; Target busy status */ ! 372: #define SCSI_STAT_INTER 0x10 /*; Intermediate status */ ! 373: #define SCSI_STAT_INTERCONDMET 0x14 /*; Intermediate condition met */ ! 374: #define SCSI_STAT_RESCONFLICT 0x18 /*; Reservation conflict */ ! 375: #define SCSI_STAT_CMDTERM 0x22 /*; Command Terminated */ ! 376: #define SCSI_STAT_QUEUEFULL 0x28 /*; Queue Full */ ! 377: ! 378: #define SCSI_STAT_UNEXP_BUS_F 0xFD /*; Unexpect Bus Free */ ! 379: #define SCSI_STAT_BUS_RST_DETECT 0xFE /*; Scsi Bus Reset detected */ ! 380: #define SCSI_STAT_SEL_TIMEOUT 0xFF /*; Selection Time out */ ! 381: ! 382: /*;---Sync_Mode */ ! 383: #define SYNC_DISABLE 0 ! 384: #define SYNC_ENABLE BIT0 ! 385: #define SYNC_NEGO_DONE BIT1 ! 386: #define WIDE_ENABLE BIT2 ! 387: #define WIDE_NEGO_DONE BIT3 ! 388: #define EN_TAG_QUEUING BIT4 ! 389: ! 390: #define SYNC_NEGO_OFFSET 16 ! 391: ! 392: /*;---SCSI bus phase*/ ! 393: #define SCSI_DATA_OUT 0 ! 394: #define SCSI_DATA_IN 1 ! 395: #define SCSI_COMMAND 2 ! 396: #define SCSI_STATUS_ 3 ! 397: #define SCSI_NOP0 4 ! 398: #define SCSI_NOP1 5 ! 399: #define SCSI_MSG_OUT 6 ! 400: #define SCSI_MSG_IN 7 ! 401: ! 402: /*;----SCSI MSG BYTE*/ ! 403: #define MSG_COMPLETE 0x00 ! 404: #define MSG_EXTENDED 0x01 ! 405: #define MSG_SAVE_PTR 0x02 ! 406: #define MSG_RESTORE_PTR 0x03 ! 407: #define MSG_DISCONNECT 0x04 ! 408: #define MSG_INITIATOR_ERROR 0x05 ! 409: #define MSG_ABORT 0x06 ! 410: #define MSG_REJECT_ 0x07 ! 411: #define MSG_NOP 0x08 ! 412: #define MSG_PARITY_ERROR 0x09 ! 413: #define MSG_LINK_CMD_COMPL 0x0A ! 414: #define MSG_LINK_CMD_COMPL_FLG 0x0B ! 415: #define MSG_BUS_RESET 0x0C ! 416: #define MSG_ABORT_TAG 0x0D ! 417: #define MSG_SIMPLE_QTAG 0x20 ! 418: #define MSG_HEAD_QTAG 0x21 ! 419: #define MSG_ORDER_QTAG 0x22 ! 420: #define MSG_IDENTIFY 0x80 ! 421: #define MSG_HOST_ID 0x0C0 ! 422: ! 423: /*;----SCSI STATUS BYTE*/ ! 424: #define STATUS_GOOD 0x00 ! 425: #define CHECK_CONDITION_ 0x02 ! 426: #define STATUS_BUSY 0x08 ! 427: #define STATUS_INTERMEDIATE 0x10 ! 428: #define RESERVE_CONFLICT 0x18 ! 429: ! 430: /* cmd->result */ ! 431: #define STATUS_MASK_ 0xFF ! 432: #define MSG_MASK 0xFF00 ! 433: #define RETURN_MASK 0xFF0000 ! 434: ! 435: /* ! 436: ** Inquiry Data format ! 437: */ ! 438: ! 439: typedef struct _SCSIInqData { /* INQ */ ! 440: ! 441: UCHAR DevType; /* Periph Qualifier & Periph Dev Type*/ ! 442: UCHAR RMB_TypeMod; /* rem media bit & Dev Type Modifier */ ! 443: UCHAR Vers; /* ISO, ECMA, & ANSI versions */ ! 444: UCHAR RDF; /* AEN, TRMIOP, & response data format*/ ! 445: UCHAR AddLen; /* length of additional data */ ! 446: UCHAR Res1; /* reserved */ ! 447: UCHAR Res2; /* reserved */ ! 448: UCHAR Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */ ! 449: UCHAR VendorID[8]; /* Vendor Identification */ ! 450: UCHAR ProductID[16]; /* Product Identification */ ! 451: UCHAR ProductRev[4]; /* Product Revision */ ! 452: ! 453: ! 454: } SCSI_INQDATA, *PSCSI_INQDATA; ! 455: ! 456: ! 457: /* Inquiry byte 0 masks */ ! 458: ! 459: ! 460: #define SCSI_DEVTYPE 0x1F /* Peripheral Device Type */ ! 461: #define SCSI_PERIPHQUAL 0xE0 /* Peripheral Qualifier */ ! 462: ! 463: ! 464: /* Inquiry byte 1 mask */ ! 465: ! 466: #define SCSI_REMOVABLE_MEDIA 0x80 /* Removable Media bit (1=removable) */ ! 467: ! 468: ! 469: /* Peripheral Device Type definitions */ ! 470: ! 471: #define SCSI_DASD 0x00 /* Direct-access Device */ ! 472: #define SCSI_SEQACESS 0x01 /* Sequential-access device */ ! 473: #define SCSI_PRINTER 0x02 /* Printer device */ ! 474: #define SCSI_PROCESSOR 0x03 /* Processor device */ ! 475: #define SCSI_WRITEONCE 0x04 /* Write-once device */ ! 476: #define SCSI_CDROM 0x05 /* CD-ROM device */ ! 477: #define SCSI_SCANNER 0x06 /* Scanner device */ ! 478: #define SCSI_OPTICAL 0x07 /* Optical memory device */ ! 479: #define SCSI_MEDCHGR 0x08 /* Medium changer device */ ! 480: #define SCSI_COMM 0x09 /* Communications device */ ! 481: #define SCSI_NODEV 0x1F /* Unknown or no device type */ ! 482: ! 483: /* ! 484: ** Inquiry flag definitions (Inq data byte 7) ! 485: */ ! 486: ! 487: #define SCSI_INQ_RELADR 0x80 /* device supports relative addressing*/ ! 488: #define SCSI_INQ_WBUS32 0x40 /* device supports 32 bit data xfers */ ! 489: #define SCSI_INQ_WBUS16 0x20 /* device supports 16 bit data xfers */ ! 490: #define SCSI_INQ_SYNC 0x10 /* device supports synchronous xfer */ ! 491: #define SCSI_INQ_LINKED 0x08 /* device supports linked commands */ ! 492: #define SCSI_INQ_CMDQUEUE 0x02 /* device supports command queueing */ ! 493: #define SCSI_INQ_SFTRE 0x01 /* device supports soft resets */ ! 494: ! 495: ! 496: /* ! 497: ;========================================================== ! 498: ; EEPROM byte offset ! 499: ;========================================================== ! 500: */ ! 501: typedef struct _EEprom ! 502: { ! 503: UCHAR EE_MODE1; ! 504: UCHAR EE_SPEED; ! 505: UCHAR xx1; ! 506: UCHAR xx2; ! 507: } EEprom, *PEEprom; ! 508: ! 509: #define EE_ADAPT_SCSI_ID 64 ! 510: #define EE_MODE2 65 ! 511: #define EE_DELAY 66 ! 512: #define EE_TAG_CMD_NUM 67 ! 513: ! 514: /*; EE_MODE1 bits definition*/ ! 515: #define PARITY_CHK_ BIT0 ! 516: #define SYNC_NEGO_ BIT1 ! 517: #define EN_DISCONNECT_ BIT2 ! 518: #define SEND_START_ BIT3 ! 519: #define TAG_QUEUING_ BIT4 ! 520: #define WIDE_NEGO_ BIT5 ! 521: ! 522: /*; EE_MODE2 bits definition*/ ! 523: #define MORE2_DRV BIT0 ! 524: #define GREATER_1G BIT1 ! 525: #define RST_SCSI_BUS BIT2 ! 526: #define ACTIVE_NEGATION BIT3 ! 527: #define NO_SEEK BIT4 ! 528: #define LUN_CHECK BIT5 ! 529: ! 530: #define ENABLE_CE 1 ! 531: #define DISABLE_CE 0 ! 532: #define EEPROM_READ 0x80 ! 533: ! 534: /* ! 535: ;========================================================== ! 536: ; NCR 53C825 Registers Structure ! 537: ;========================================================== ! 538: */ ! 539: typedef struct _OperatingReg ! 540: { ! 541: UCHAR SCSICtrl0; /*; (+00)*/ ! 542: UCHAR SCSICtrl1; /*; (+01)*/ ! 543: UCHAR SCSICtrl2; /*; (+02)*/ ! 544: UCHAR SCSICtrl3; /*; (+03)*/ ! 545: UCHAR SCSIChipID; /*; (+04)*/ ! 546: UCHAR SCSIXfer; /*; (+05)*/ ! 547: UCHAR SCSIDestID; /*; (+06)*/ ! 548: UCHAR GeneralPReg; /*; (+07)*/ ! 549: UCHAR SCSI1stByteR; /*; (+08)*/ ! 550: UCHAR SCSIOPCtrlL; /*; (+09)*/ ! 551: UCHAR SCSISelID; /*; (+0A)*/ ! 552: UCHAR SCSIBusCtrlLin; /*; (+0B)*/ ! 553: UCHAR DMAStatus; /*; (+0C)*/ ! 554: UCHAR SCSIStatus0; /*; (+0D)*/ ! 555: UCHAR SCSIStatus1; /*; (+0E)*/ ! 556: UCHAR SCSIStatus2; /*; (+0F)*/ ! 557: ULONG DataStrucAddr; /*; (+10)*/ ! 558: UCHAR InterruptStatus;/*; (+14)*/ ! 559: UCHAR Reser1; /*; (+15)*/ ! 560: UCHAR Reser2; /*; (+16)*/ ! 561: UCHAR Reser3; /*; (+17)*/ ! 562: UCHAR ChipTest0; /*; (+18)*/ ! 563: UCHAR ChipTest1; /*; (+19)*/ ! 564: UCHAR ChipTest2; /*; (+1A)*/ ! 565: UCHAR ChipTest3; /*; (+1B)*/ ! 566: ULONG TempStack; /*; (+1C)*/ ! 567: UCHAR DMAFIFO; /*; (+20)*/ ! 568: UCHAR ChipTest4; /*; (+21)*/ ! 569: UCHAR ChipTest5; /*; (+22)*/ ! 570: UCHAR ChipTest6; /*; (+23)*/ ! 571: UCHAR DMAByteCnt[3]; /*; (+24)*/ ! 572: UCHAR DMACommand; /*; (+27)*/ ! 573: ULONG DMANextAddr; /*; (+28)*/ ! 574: ULONG DMAScriptsPtr; /*; (+2C)*/ ! 575: ULONG DMAScriptPtrSav;/*; (+30)*/ ! 576: ULONG ScratchA; /*; (+34)*/ ! 577: UCHAR DMAMode; /*; (+38)*/ ! 578: UCHAR DMAIntEnable; /*; (+39)*/ ! 579: UCHAR DMAWatchDog; /*; (+3A)*/ ! 580: UCHAR DMACtrl; /*; (+3B)*/ ! 581: ULONG ADDer; /*; (+3C)*/ ! 582: UCHAR SCSIIntEnable0; /*; (+40)*/ ! 583: UCHAR SCSIIntEnable1; /*; (+41)*/ ! 584: UCHAR SCSIIntStatus0; /*; (+42)*/ ! 585: UCHAR SCSIIntStatus1; /*; (+43)*/ ! 586: UCHAR SCSILongParity; /*; (+44)*/ ! 587: UCHAR WideResiData; /*; (+45)*/ ! 588: UCHAR MemAccessCtrl; /*; (+46)*/ ! 589: UCHAR GeneralPCtrl; /*; (+47)*/ ! 590: UCHAR SCSITimer0; /*; (+48)*/ ! 591: UCHAR SCSITimer1; /*; (+49)*/ ! 592: UCHAR ResponseID0; /*; (+4A)*/ ! 593: UCHAR ResponseID1; /*; (+4B)*/ ! 594: UCHAR SCSITest0; /*; (+4C)*/ ! 595: UCHAR SCSITest1; /*; (+4D)*/ ! 596: UCHAR SCSITest2; /*; (+4E)*/ ! 597: UCHAR SCSITest3; /*; (+4F)*/ ! 598: USHORT SCSIIPDataL; /*; (+50)*/ ! 599: USHORT Reser4; /*; (+52)*/ ! 600: USHORT SCSIOPDataL; /*; (+54)*/ ! 601: USHORT Reser5; /*; (+56)*/ ! 602: USHORT SCSIBusDataLin; /*; (+58)*/ ! 603: USHORT Reser6; /*; (+5A)*/ ! 604: ULONG ScratchB; /*; (+5C)*/ ! 605: ULONG ScratchC; /*; (+60)*/ ! 606: ULONG ScratchD; /*; (+64)*/ ! 607: ULONG ScratchE; /*; (+68)*/ ! 608: ULONG ScratchF; /*; (+6C)*/ ! 609: ULONG ScratchG; /*; (+70)*/ ! 610: ULONG ScratchH; /*; (+74)*/ ! 611: ULONG ScratchI; /*; (+78)*/ ! 612: ULONG ScratchJ; /*; (+7C)*/ ! 613: } OperatingReg; ! 614: /* ! 615: ;========================================================== ! 616: ; NCR 53C825 Registers bit Definition ! 617: ;========================================================== ! 618: */ ! 619: /*; SCSICtrl0 (+00)*/ ! 620: #define FULL_ARBITRATION (BIT7+BIT6) ! 621: #define START_ARBIT BIT5 ! 622: #define SEL_W_SATN BIT4 ! 623: #define EN_PARITY_CHK BIT3 ! 624: #define SATN_IF_PARITY_ERR BIT1 ! 625: #define TARGET_MODE BIT0 ! 626: ! 627: /*; SCSICtrl1 (+01)*/ ! 628: #define ASSERT_RST BIT3 ! 629: #define ASSERT_EVEN_P BIT2 ! 630: #define START_SCSI_XFER BIT0 ! 631: ! 632: /*; SCSICtrl2 (+02)*/ ! 633: #define DISC_UNEXPECTED BIT7 ! 634: #define CHAIN_MODE BIT6 ! 635: #define WIDE_SCSI_SEND BIT3 ! 636: #define WIDE_SCSI_RECV BIT0 ! 637: ! 638: /*; SCSICtrl3 (+03)*/ ! 639: #define EN_FAST_20 BIT7 ! 640: #define SYNC_CLK_F4 (BIT6+BIT4) ! 641: #define SYNC_CLK_F3 BIT6 ! 642: #define SYNC_CLK_F2 (BIT5+BIT4) ! 643: #define SYNC_CLK_F1_5 BIT5 ! 644: #define SYNC_CLK_F1 BIT4 ! 645: #define EN_WIDE_SCSI BIT3 ! 646: #define ASYNC_CLK_F4 (BIT2+BIT0) ! 647: #define ASYNC_CLK_F3 BIT2 ! 648: #define ASYNC_CLK_F2 (BIT1+BIT0) ! 649: #define ASYNC_CLK_F1_5 BIT1 ! 650: #define ASYNC_CLK_F1 BIT0 ! 651: ! 652: /*; SCSIChipID (+04)*/ ! 653: #define ENABLE_RESEL BIT6 ! 654: #define ENABLE_SEL BIT5 ! 655: #define CHIP_ID_MASK 0FH ! 656: ! 657: /*; SCSIXfer (+05)*/ ! 658: #define PERIOD_MASK (BIT7+BIT6+BIT5) ! 659: #define SYNC_PERIOD_F11 (BIT7+BIT6+BIT5) ! 660: #define SYNC_PERIOD_F10 (BIT7+BIT6) ! 661: #define SYNC_PERIOD_F9 (BIT7+BIT5) ! 662: #define SYNC_PERIOD_F8 BIT7 ! 663: #define SYNC_PERIOD_F7 (BIT6+BIT5) ! 664: #define SYNC_PERIOD_F6 BIT6 ! 665: #define SYNC_PERIOD_F5 BIT5 ! 666: #define SYNC_PERIOD_F4 0 ! 667: #define OFFSET_MASK (BIT4+BIT3+BIT2+BIT1+BIT0) ! 668: #define SYNC_OFFSET_16 BIT4 ! 669: #define SYNC_OFFSET_8 BIT3 ! 670: #define SYNC_OFFSET_7 (BIT2+BIT1+BIT0) ! 671: #define SYNC_OFFSET_6 (BIT2+BIT1) ! 672: #define SYNC_OFFSET_5 (BIT2+BIT0) ! 673: #define SYNC_OFFSET_4 BIT2 ! 674: #define SYNC_OFFSET_3 (BIT1+BIT0) ! 675: #define SYNC_OFFSET_2 BIT1 ! 676: #define SYNC_OFFSET_1 BIT0 ! 677: #define SYNC_OFFSET_0 0 ! 678: #define ASYNCHRONOUS SYNC_OFFSET_0 ! 679: /* ! 680: ; SCSIDestID (+06) ! 681: ! 682: ; GeneralPReg (+07) ! 683: ! 684: ; SCSI1stByteR (+08) ! 685: */ ! 686: /*; SCSIOPCtrlL (+09)*/ ! 687: #define ASSERT_REQ BIT7 ! 688: #define ASSERT_ACK BIT6 ! 689: #define ASSERT_BSY BIT5 ! 690: #define ASSERT_SEL BIT4 ! 691: #define ASSERT_ATN BIT3 ! 692: #define ASSERT_MSG BIT2 ! 693: #define ASSERT_C_D BIT1 ! 694: #define ASSERT_I_O BIT0 ! 695: ! 696: /*; SCSISelID (+0A) Read*/ ! 697: #define SCSI_ID_VALID BIT7 ! 698: ! 699: /*; SCSIBusCtrlLin (+0B) Read*/ ! 700: #define REQ_SIGNAL BIT7 ! 701: #define ACK_SIGNAL BIT6 ! 702: #define BSY_SIGNAL BIT5 ! 703: #define SEL_SIGNAL BIT4 ! 704: #define ATN_SIGNAL BIT3 ! 705: #define MSG_SIGNAL BIT2 ! 706: #define C_D_SIGNAL BIT1 ! 707: #define I_O_SIGNAL BIT0 ! 708: ! 709: /*; DMAStatus (+0C) Read*/ ! 710: #define DMA_FIFO_EMPTY BIT7 ! 711: #define MASTER_PARITY_ERR BIT6 ! 712: #define BUS_FAULT BIT5 ! 713: #define ABORT_ BIT4 ! 714: #define SINGLE_STEP_INT BIT3 ! 715: #define SCRIPTS_INT BIT2 ! 716: #define ILLEGAL_INSTRUC BIT0 ! 717: ! 718: /*; SCSIStatus0 (+0D) Read*/ ! 719: #define SIDL_LSB_FULL BIT7 ! 720: #define SODR_LSB_FULL BIT6 ! 721: #define SODL_LSB_FULL BIT5 ! 722: #define IN_ARBITRATION BIT4 ! 723: #define LOST_ARBITRATION BIT3 ! 724: #define WIN_ARBITRATION BIT2 ! 725: #define RST_SIGNAL BIT1 ! 726: #define PARITY_SIGNAL BIT0 ! 727: ! 728: /*; SCSIStatus1 (+0E) Read*/ ! 729: #define SCSI_FIFO_MASK (BIT7+BIT6+BIT5+BIT4) ! 730: ! 731: /*; SCSIStatus2 (+0F) Read*/ ! 732: #define SIDL_MSB_FULL BIT7 ! 733: #define SODR_MSB_FULL BIT6 ! 734: #define SODL_MSB_FULL BIT5 ! 735: #define SCSI_FIFO_MSB BIT4 ! 736: ! 737: /*; DataStrucAddr (+10)*/ ! 738: ! 739: /*; InterruptStatus (+14)*/ ! 740: #define ABORT_OP BIT7 ! 741: #define SOFTWARE_RST BIT6 ! 742: #define SIGNAL_PROC BIT5 ! 743: #define SEMAPHORE BIT4 ! 744: #define CONNECTED BIT3 ! 745: #define INT_ON_FLY BIT2 ! 746: #define SCSI_INT_PENDING BIT1 ! 747: #define DMA_INT_PENDING BIT0 ! 748: ! 749: /*; ChipTest0 (+18)*/ ! 750: /*; ChipTest1 (+19)*/ ! 751: #define FIFO_BYTE_EMPTY (BIT7+BIT6+BIT5+BIT4) ! 752: #define FIFO_BYTE_FULL (BIT3+BIT2+BIT1+BIT0) ! 753: ! 754: /*; ChipTest2 (+1A)*/ ! 755: #define READ_DIR BIT7 ! 756: #define WRITE_DIR 0 ! 757: #define SIGNAL_PROC_ BIT6 ! 758: #define CFG_AS_IO_MAP BIT5 ! 759: #define CFG_AS_MEM_MAP BIT4 ! 760: #define SCRATCHAB_AS_BASE BIT3 ! 761: #define TRUE_EOP BIT2 ! 762: #define INTERNAL_DREQ BIT1 ! 763: #define INTERNAL_DACK BIT0 ! 764: ! 765: /*; ChipTest3 (+1B)*/ ! 766: #define CHIP_REV_MASK (BIT7+BIT6+BIT5+BIT4) ! 767: #define FLUSH_DMA_FIFO BIT3 ! 768: #define CLR_DMA_FIFO BIT2 ! 769: #define FETCH_PIN_MODE BIT1 ! 770: #define WRT_EN_INVALIDATE BIT0 ! 771: ! 772: /*; TempStack (+1C)*/ ! 773: ! 774: /*; DMAFIFO (+20)*/ ! 775: /*; 2 upper bits in ChipTest5*/ ! 776: ! 777: /*; ChipTest4 (+21)*/ ! 778: #define BURST_DISABLE BIT7 ! 779: ! 780: /*; ChipTest5 (+22) */ ! 781: #define EN_DMA_FIFO_536 BIT5 ! 782: #define BURST_LEN_MSB BIT2 ! 783: #define DMAFIFO_MS2B (BIT1+BIT0) ! 784: /* ! 785: ; ChipTest6 (+23) ! 786: ; DMAByteCnt (+24) ! 787: ; DMACommand (+27) ! 788: ; DMANextAddr (+28) ! 789: ; DMAScriptsPtr (+2C) ! 790: ; DMAScriptPtrSav (+30) ! 791: */ ! 792: /*; ScratchA (+34)*/ ! 793: #define COMPLETED_OK_ BIT0 ! 794: #define RE_SELECTED_ BIT1 ! 795: #define OVER_RUN_ BIT2 ! 796: ! 797: /*; DMAMode (+38)*/ ! 798: #define BURST_LEN16 (BIT7+BIT6) ! 799: #define BURST_LEN8 BIT7 ! 800: #define BURST_LEN4 BIT6 ! 801: #define BURST_LEN2 0 ! 802: #define SRC_IO_MAP BIT5 ! 803: #define SRC_MEM_MAP 0 ! 804: #define DEST_IO_MAP BIT4 ! 805: #define DEST_MEM_MAP 0 ! 806: #define EN_READ_LINE BIT3 ! 807: #define EN_READ_MULTIPLE BIT2 ! 808: #define BURST_OPCODE_FETCH BIT1 ! 809: #define MANUAL_START BIT0 ! 810: #define AUTO_START 0 ! 811: ! 812: /*; DMAIntEnable (+39)*/ ! 813: #define EN_MDPE BIT6 ! 814: #define EN_BUS_FAULT BIT5 ! 815: #define EN_ABORTED BIT4 ! 816: #define EN_SINGLE_STEP BIT3 ! 817: #define EN_SCRIPT_INT BIT2 ! 818: #define EN_ILLEGAL_INST BIT0 ! 819: ! 820: ! 821: /*; DMAWatchDog (+3A)*/ ! 822: ! 823: /*; DMACtrl (+3B)*/ ! 824: #define EN_CACHE_LINE_SIZE BIT7 ! 825: #define PRE_FETCH_FLUSH BIT6 ! 826: #define EN_PRE_FETCH BIT5 ! 827: #define SINGLE_STEP_MIDE BIT4 ! 828: #define TOTEM_POLE_IRQ BIT3 ! 829: #define OPEN_DRAIN_IRQ 0 ! 830: #define START_DMA BIT2 ! 831: #define IRQ_DISABLE BIT1 ! 832: #define COMPATIBLE_700 BIT0 ! 833: ! 834: /*; ADDer (+3C)*/ ! 835: ! 836: /*; SCSIIntEnable0 (+40)*/ ! 837: #define EN_PHASE_MISMATCH BIT7 ! 838: #define EN_ARB_SEL_DONE BIT6 ! 839: #define EN_BE_SELECTED BIT5 ! 840: #define EN_BE_RESELECTED BIT4 ! 841: #define EN_SCSI_GERROR BIT3 ! 842: #define EN_UNEXPECT_DISC BIT2 ! 843: #define EN_SCSI_RESET BIT1 ! 844: #define EN_PARITY_ERROR BIT0 ! 845: ! 846: /*; SCSIIntEnable1 (+41)*/ ! 847: #define EN_SEL_TIMEOUT BIT2 ! 848: #define EN_GENERAL_TIMEOUT BIT1 ! 849: #define EN_HANDSHAKE_TIMEOUT BIT0 ! 850: ! 851: /*; SCSIIntStatus0 (+42)*/ ! 852: #define PHASE_MISMATCH BIT7 ! 853: #define ARB_SEL_DONE BIT6 ! 854: #define BE_SELECTED BIT5 ! 855: #define BE_RESELECTED BIT4 ! 856: #define SCSI_GERROR BIT3 ! 857: #define UNEXPECT_DISC BIT2 ! 858: #define SCSI_RESET BIT1 ! 859: #define PARITY_ERROR BIT0 ! 860: ! 861: /*; SCSIIntStatus1 (+43)*/ ! 862: #define SEL_TIMEOUT BIT2 ! 863: #define GENERAL_TIMEOUT BIT1 ! 864: #define HANDSHAKE_TIMEOUT BIT0 ! 865: /* ! 866: ; SCSILongParity (+44) ! 867: ; WideResiData (+45) ! 868: ; MemAccessCtrl (+46) ! 869: ; GeneralPCtrl (+47) ! 870: */ ! 871: /*; SCSITimer0 (+48)*/ ! 872: #define HTH_TO_DISABLE 0 ! 873: #define SEL_TO_204ms (BIT3+BIT2) ! 874: /* ! 875: ; SCSITimer1 (+49) ! 876: ; ResponseID0 (+4A) ! 877: ; ResponseID1 (+4B) ! 878: ; SCSITest0 (+4C) ! 879: ; SCSITest1 (+4D) ! 880: ; SCSITest2 (+4E) ! 881: */ ! 882: /*; SCSITest3 (+4F)*/ ! 883: #define ACTIVE_NEGATION_ BIT7 ! 884: #define FIFO_TEST_READ BIT6 ! 885: #define HALT_SCSI_CLK BIT5 ! 886: #define DIS_SINGLE_INIT BIT4 ! 887: #define TIMER_TEST_MODE BIT2 ! 888: #define CLR_SCSI_FIFO BIT1 ! 889: #define FIFO_TEST_WRITE BIT0 ! 890: /* ! 891: ; SCSIIPDataL (+50) ! 892: ; SCSIOPDataL (+54) ! 893: ; SCSIBusDataLin (+58) ! 894: ; ScratchB (+5C) ! 895: ; ScratchC (+60) ! 896: ; ScratchD (+64) ! 897: ; ScratchE (+68) ! 898: ; ScratchF (+6C) ! 899: ; ScratchG (+70) ! 900: ; ScratchH (+74) ! 901: ; ScratchI (+78) ! 902: ; ScratchJ (+7C) ! 903: */ ! 904: ! 905: /*********************************************************************** ! 906: * NCR53C825 I/O Address Map ! 907: * base address is stored at offset 0x10 in the PCI configuration space ! 908: *----------------------------------------------------------------------- ! 909: * SCSI Core Registers Offset ! 910: ***********************************************************************/ ! 911: #define SCNTL0 0x00 /* Scsi Control 0 R/W */ ! 912: #define SCNTL1 0x01 /* Scsi Control 1 R/W */ ! 913: #define SCNTL2 0x02 /* Scsi Control 2 R/W */ ! 914: #define SCNTL3 0x03 /* Scsi Control 3 R/W */ ! 915: #define SCID 0x04 /* Scsi Chip ID R/W */ ! 916: #define SXFER 0x05 /* Scsi Transfer R/W */ ! 917: #define SDID 0x06 /* Scsi Destination ID R/W */ ! 918: #define GPREG 0x07 /* General Purpose Bits R/W */ ! 919: #define SFBR 0x08 /* Scsi First Byte Received R/W */ ! 920: #define SOCL 0x09 /* Scsi Output Control Latch R/W */ ! 921: #define SSID 0x0A /* Scsi Selector ID R */ ! 922: #define SBCL 0x0B /* Scsi Bus Control Lines R/W */ ! 923: #define DSTAT 0x0C /* DMA Status R */ ! 924: #define SSTAT0 0x0D /* Scsi Status 0 R */ ! 925: #define SSTAT1 0x0E /* Scsi Status 1 R */ ! 926: #define SSTAT2 0x0F /* Scsi Status 2 R */ ! 927: #define DSA 0x10 /* Data Structure Address R/W */ ! 928: #define ISTAT 0x14 /* Interrupt Status R/W */ ! 929: #define RES15 0x15 /* Reserved */ ! 930: #define CTEST0 0x18 /* Reserved */ ! 931: #define CTEST1 0x19 /* Chip Test 1 R/W */ ! 932: #define CTEST2 0x1A /* Chip Test 2 R */ ! 933: #define CTEST3 0x1B /* Chip Test 3 R */ ! 934: #define TEMP 0x1C /* Temperary Stack R/W */ ! 935: #define DFIFO 0x20 /* DMA FIFO R/W */ ! 936: #define CTEST4 0x21 /* Chip Test 4 R/W */ ! 937: #define CTEST5 0x22 /* Chip Test 5 R/W */ ! 938: #define CTEST6 0x23 /* Chip Test 6 R/W */ ! 939: #define DBC 0x24 /* DMA Byte Counter R/W */ ! 940: #define DCMD 0x27 /* DMA Command R/W */ ! 941: #define DNAD 0x28 /* DMA Next Address For Data R/W */ ! 942: #define DSP 0x2C /* DMA SCIPTS Pointer R/W */ ! 943: #define DSPS 0x30 /* DMA SCIPTS Pointer Saves R/W */ ! 944: #define SCRATCHA 0x34 /* General Purpose Scratch Pad A R/W */ ! 945: #define DMODE 0x38 /* DMA Mode R/W */ ! 946: #define DIEN 0x39 /* DMA Interrupt Enable R/W */ ! 947: #define DWT 0x3A /* DMA Watchdog Timer R/W */ ! 948: #define DCNTL 0x3B /* DMA Control R/W */ ! 949: #define ADDER 0x3C /* Sum output of Internal adder R */ ! 950: #define SIEN0 0x40 /* Scsi Interrupt Enable 0 R/W */ ! 951: #define SIEN1 0x41 /* Scsi Interrupt Enable 1 R/W */ ! 952: #define SIST0 0x42 /* Scsi Interrupt Status 0 R */ ! 953: #define SIST1 0x43 /* Scsi Interrupt Status 1 R */ ! 954: #define SLPAR 0x44 /* Scsi Longitudinal Parity R/W */ ! 955: #define SWIDE 0x45 /* Reserved */ ! 956: #define MACNTL 0x46 /* Memory Access Control R/W */ ! 957: #define GPCNTL 0x47 /* General Purpose Control R/W */ ! 958: #define STIME0 0x48 /* Scsi Timer 0 R/W */ ! 959: #define STIME1 0x49 /* Scsi Timer 1 R/W */ ! 960: #define RESPID0 0x4A /* Response ID 0 R/W */ ! 961: #define RESPID1 0x4B /* Response ID 1 R/W */ ! 962: #define STEST0 0x4C /* Scsi Test 0 R */ ! 963: #define STEST1 0x4D /* Scsi Test 1 R */ ! 964: #define STEST2 0x4E /* Scsi Test 2 R/W */ ! 965: #define STEST3 0x4F /* Scsi Test 3 R/W */ ! 966: #define SIDL 0x50 /* Scsi Input Data Latch R */ ! 967: #define RES51 0x51 /* Reserved */ ! 968: #define SODL 0x54 /* Scsi Output Data Latch R/W */ ! 969: #define RES55 0x55 /* Reserved */ ! 970: #define SBDL 0x58 /* Scsi Bus Data Lines R */ ! 971: #define RES59 0x59 /* Reserved */ ! 972: #define SCRATCHB 0x5C /* General Purpose Scratch Pad B R/W */ ! 973: ! 974: ! 975: /* ! 976: ;========================================================== ! 977: ; structure for 53C825A register ( I/O ) ! 978: ;========================================================== ! 979: */ ! 980: #define __scntl0 0 ! 981: #define __scntl1 1 ! 982: #define __scntl2 2 ! 983: #define __scntl3 3 ! 984: #define __scid 4 ! 985: #define __sxfer 5 ! 986: #define __sdid 6 ! 987: #define __gpreg 7 ! 988: #define __sfbr 8 ! 989: #define __socl 9 ! 990: #define __ssid 0x0A ! 991: #define __sbcl 0x0B ! 992: #define __dstat 0x0C ! 993: #define __sstat0 0x0D ! 994: #define __sstat1 0x0E ! 995: #define __sstat2 0x0F ! 996: #define __dsa 0x10 ! 997: #define __istat 0x14 ! 998: /*#define 0x15*/ ! 999: #define __ctest0 0x18 ! 1000: #define __ctest1 0x19 ! 1001: #define __ctest2 0x1A ! 1002: #define __ctest3 0x1B ! 1003: #define __temp 0x1C ! 1004: #define __dfifo 0x20 ! 1005: #define __ctest4 0x21 ! 1006: #define __ctest5 0x22 ! 1007: #define __ctest6 0x23 ! 1008: #define __dbc 0x24 ! 1009: #define __dcmd 0x27 ! 1010: #define __dnad 0x28 ! 1011: #define __dsp 0x2C ! 1012: #define __dsps 0x30 ! 1013: #define __scratcha 0x34 ! 1014: #define __dmode 0x38 ! 1015: #define __dien 0x39 ! 1016: #define __dwt 0x3A ! 1017: #define __dcntl 0x3B ! 1018: #define __adder 0x3C ! 1019: #define __sien0 0x40 ! 1020: #define __sien1 0x41 ! 1021: #define __sist0 0x42 ! 1022: #define __sist1 0x43 ! 1023: #define __slpar 0x44 ! 1024: #define __swide 0x45 ! 1025: #define __mactrl 0x46 ! 1026: #define __gpctrl 0x47 ! 1027: #define __stime0 0x48 ! 1028: #define __stime1 0x49 ! 1029: #define __respid0 0x4A ! 1030: #define __respid1 0x4B ! 1031: #define __stest0 0x4C ! 1032: #define __stest1 0x4D ! 1033: #define __stest2 0x4E ! 1034: #define __stest3 0x4F ! 1035: #define __sidl 0x50 /*; For wide SCSI, this register*/ ! 1036: /*#define 0x51 ; contains 2 bytes*/ ! 1037: #define __sodl 0x54 ! 1038: /*#define 0x55*/ ! 1039: #define __sbdl 0x58 ! 1040: /*#define 0x59*/ ! 1041: #define __scratchb 0x5C ! 1042: /* ! 1043: ;========================================================== ! 1044: ; Script interrupt code(Vector) ! 1045: ;========================================================== ! 1046: */ ! 1047: #define __COMPLETE 0 /*; command complete*/ ! 1048: #define __RESELECTED 1 /*; reselected, without MESSAGE*/ ! 1049: #define __RESELECTED1 2 /*; reselected with idenntify bytes*/ ! 1050: #define __RESELECTEDT 3 /*; reselected with TAGS*/ ! 1051: #define __DISCONNECTED 4 /*; disconnected*/ ! 1052: #define __MSGEXTEND 5 /*; Extended msgin*/ ! 1053: #define __SIGNAL 6 /*; signaled, need to clear SIG*/ ! 1054: #define __MSGUNKNOWN 7 /*; Unknown message*/ ! 1055: #define __MSGOUT 8 /*; Message out phase detected*/ ! 1056: #define __FATALERROR 9 /*; Fatal error*/ ! 1057: #define __MSGSYNC 10 /*; Sync nego input*/ ! 1058: #define __MSGWIDE 11 /*; Wide nego input*/ ! 1059: #define __RESTOREPTR 12 /*; restore pointer received*/ ! 1060: #define __MSGREJECT 13 /*; Reject message received*/ ! 1061: #define __DEBUG 14 /*; For debug*/ ! 1062: ! 1063: ! 1064: #define DC390W_read8(address) \ ! 1065: inb(DC390W_ioport + (address))) ! 1066: ! 1067: #define DC390W_read16(address) \ ! 1068: inw(DC390W_ioport + (address))) ! 1069: ! 1070: #define DC390W_read32(address) \ ! 1071: inl(DC390W_ioport + (address))) ! 1072: ! 1073: #define DC390W_write8(address,value) \ ! 1074: outb((value), DC390W_ioport + (address))) ! 1075: ! 1076: #define DC390W_write16(address,value) \ ! 1077: outw((value), DC390W_ioport + (address))) ! 1078: ! 1079: #define DC390W_write32(address,value) \ ! 1080: outl((value), DC390W_ioport + (address))) ! 1081: ! 1082: #endif /* TMSCSIW_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.