Annotation of Examples/DriverKit/AMDPCSCSIDriver/AMDPCSCSIDriver_reloc.tproj/AMD_ChipPrivate.h, revision 1.1.1.1

1.1       root        1: /*     Copyright (c) 1994 NeXT Computer, Inc.  All rights reserved. 
                      2:  *
                      3:  * AMD_ChipPrivate.h - private structs and #defines for AMD_Chip category.
                      4:  *
                      5:  * HISTORY
                      6:  * 1 Nov 94    Doug Mitchell at NeXT
                      7:  *      Created. 
                      8:  */
                      9:  
                     10: /*
                     11:  * opcode groups
                     12:  */
                     13: #define        SCSI_OPGROUP(opcode)    ((opcode) & 0xe0)
                     14: 
                     15: #define        OPGROUP_0               0x00    /* six byte commands */
                     16: #define        OPGROUP_1               0x20    /* ten byte commands */
                     17: #define        OPGROUP_2               0x40    /* ten byte commands */
                     18: #define        OPGROUP_5               0xa0    /* twelve byte commands */
                     19: #define        OPGROUP_6               0xc0    /* six byte, vendor unique commands */
                     20: #define        OPGROUP_7               0xe0    /* ten byte, vendor unique commands */
                     21: 
                     22: /*
                     23:  * scsi bus phases
                     24:  */
                     25: #define        PHASE_DATAOUT           0x0
                     26: #define        PHASE_DATAIN            0x1
                     27: #define        PHASE_COMMAND           0x2
                     28: #define        PHASE_STATUS            0x3
                     29: #define        PHASE_MSGOUT            0x6
                     30: #define        PHASE_MSGIN             0x7
                     31: 
                     32: /*
                     33:  * message codes
                     34:  */
                     35: #define        MSG_CMDCMPLT            0x00    /* to host: command complete */
                     36: #define MSG_EXTENDED           0x01    /* both ways: extended message */
                     37: #define        MSG_SAVEPTRS            0x02    /* to host: save data pointers */
                     38: #define        MSG_RESTOREPTRS         0x03    /* to host: restore pointers */
                     39: #define        MSG_DISCONNECT          0x04    /* to host: disconnect */
                     40: #define        MSG_IDETERR             0x05    /* to disk: initiator detected error */
                     41: #define        MSG_ABORT               0x06    /* to disk: abort op, go to bus free */
                     42: #define        MSG_MSGREJECT           0x07    /* both ways: last msg unimplemented */
                     43: #define        MSG_NOP                 0x08    /* to disk: no-op message */
                     44: #define        MSG_MSGPARERR           0x09    /* to disk: parity error last 
                     45:                                           message */
                     46: #define        MSG_LNKCMDCMPLT         0x0a    /* to host: linked command complete */
                     47: #define        MSG_LNKCMDCMPLTFLAG     0x0b    /* to host: flagged linked cmd cmplt */
                     48: #define        MSG_DEVICERESET         0x0c    /* to disk: reset and go to bus free */
                     49: #define MSG_SIMPLE_QUEUE_TAG   0x20    /* both ways: simple queue tag */
                     50: #define MSG_HEAD_QUEUE_TAG     0x21    /* to disk: head of queue tag */
                     51: #define MSG_ORDERED_QUEUE_TAG  0x22    /* to disk: ordered queue tag */
                     52: #define        MSG_IDENTIFYMASK        0x80    /* both ways: thread identification */
                     53: #define        MSG_ID_DISCONN          0x40    /*      can disconnect/reconnect */
                     54: #define        MSG_ID_LUNMASK          0x07    /*      target LUN */
                     55: 
                     56: /*
                     57:  * Extended message codes
                     58:  */
                     59: #define MSG_SDTR               0x01    /* sync data transfer request */
                     60: #define MSG_SDTR_LENGTH                5       /* total SDTR message length */
                     61: 
                     62: /*
                     63:  * Delay, in ms, after SCSI reset.
                     64:  */
                     65: #define AMD_SCSI_RESET_DELAY   10000
                     66: 
                     67: /* 
                     68:  * Private methods, used only by AMD_Chip module.
                     69:  */
                     70: 
                     71: @interface AMD_SCSI(ChipPrivate)
                     72: 
                     73: /*
                     74:  * Determine what kind of SCSI interrupt is pending, if any.
                     75:  */
                     76: 
                     77: typedef enum { 
                     78:        SINT_NONE,                      /* no interrupt */
                     79:        SINT_DEVICE,                    /* 53C974 */
                     80:        SINT_DMA,                       /* DMA (not currently used) */
                     81:        SINT_OTHER                      /* ?? */
                     82: } sintPending_t;
                     83: 
                     84: - (sintPending_t)scsiInterruptPending;
                     85: 
                     86: 
                     87: /*
                     88:  * Methods invoked upon interrupt. One per legal scState.
                     89:  */
                     90: - (void)fsmDisconnected;
                     91: - (void)fsmSelecting;
                     92: - (void)fsmInitiator;
                     93: - (void)fsmCompleting;
                     94: - (void)fsmDMAing;
                     95: - (void)fsmAcceptingMsg;
                     96: - (void)fsmSendingMsg;
                     97: - (void)fsmSelecting;
                     98: - (void)fsmGettingMsg;
                     99: - (void)fsmSelecting;
                    100: - (void)fsmSendingCmd;
                    101: 
                    102: /*
                    103:  * This is is called after an interrupt leaves us as SCS_INITIATOR.
                    104:  */
                    105: - (void)fsmPhaseChange;
                    106: 
                    107: - (void)messageOut     : (unsigned char)msg;
                    108: 
                    109: /*
                    110:  * Load syncPeriod, syncOffset for activeCmd per perTarget values.
                    111:  */
                    112: - (void)targetContext  : (unsigned)target;
                    113: 
                    114: /*
                    115:  * Parse and validate 5-byte SDTR message. If valid, save in perTarget 
                    116:  * and in hardware. Returns YES if valid, else NO.
                    117:  * 
                    118:  * Specified message buffer could be from either currMsgIn[] or 
                    119:  * currMsgOut[].
                    120:  */
                    121: - (BOOL)parseSDTR              : (unsigned char *)sdtrMessage;
                    122: 
                    123: /*
                    124:  * Cons up an SDTR message appropriate for both our hardware and a possible
                    125:  * target-generated SDTR message. If inboundMsg is NULL, we just use
                    126:  * the parameters we want.
                    127:  */
                    128: - (void)createSDTR             : (unsigned char *)outboundMsg  // required
                    129:                     inboundMsg : (unsigned char *)inboundMsg;
                    130:        
                    131: /*
                    132:  * Disable specified mode for activeCmd's target.
                    133:  */
                    134:  
                    135: typedef enum {
                    136:        AM_CmdQueue,
                    137:        AM_Sync,
                    138: } AMD_Mode;    
                    139: 
                    140: - (void)disableMode : (AMD_Mode)mode;
                    141: 
                    142: @end

unix.superglobalmegacorp.com

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