Annotation of kernel/bsd/dev/ppc/drvApple96_SCSI/Apple96DBDMADefs.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.1 (the "License").  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: /**
        !            26:  * Copyright (c) 1994-1996 NeXT Software, Inc.  All rights reserved. 
        !            27:  * Copyright 1997 Apple Computer Inc. All Rights Reserved.
        !            28:  * @author     Martin Minow    mailto:[email protected]
        !            29:  * @revision   1997.02.13      Initial conversion from AMDPCSCSIDriver sources.
        !            30:  *
        !            31:  * Set tabs every 4 characters.
        !            32:  *
        !            33:  * Apple96PCIDBDMA.h - Minimal DBDMA Handler for the Apple 96 PCI driver. This is
        !            34:  * a temporary file until "real" DBDMA support appears.
        !            35:  *
        !            36:  * Edit History
        !            37:  * 1997.02.13  MM              Initial conversion from AMDPCSCSIDriver sources. 
        !            38:  */
        !            39: 
        !            40: #import "Apple96SCSI.h"
        !            41: 
        !            42: /**
        !            43:  * Copyright 1984-1997 Apple Computer Inc. All Rights Reserved.
        !            44:  * @author     Martin Minow    mailto:[email protected]
        !            45:  * @revision   1997.02.13      Initial conversion from Copland D12 DBDMA.Rev 9 sources.
        !            46:  *
        !            47:  * Set tabs every 4 characters.
        !            48:  *
        !            49:  * AppleDBDMADefinitions.h - registers and inline functions for the DBDMA memory controller.
        !            50:  *
        !            51:  * Edit History
        !            52:  * 1997.02.13  MM              Initial conversion from AMDPCSCSIDriver sources. 
        !            53:  */
        !            54: 
        !            55: /*
        !            56:  * The class must provide the following instance or local variable:
        !            57:  * DBDMAInfoRecord             gDBDMAInfoRecord
        !            58:  */
        !            59:  /*
        !            60:  This structure defines the DB-DMA channel command descriptor.
        !            61:  *** WARNING:  Endian-ness issues must be considered when performing load/store! ***
        !            62:  ***                   DB-DMA specifies memory organization as quadlets so it is not correct
        !            63:  ***                   to think of either the operation or result field as two 16-bit fields.
        !            64:  ***                   This would have undesirable effects on the byte ordering within their
        !            65:  ***                   respective quadlets. Use the accessor macros provided below.
        !            66: */
        !            67: struct DBDMADescriptor {
        !            68:        unsigned long           operation;              /* cmd || key || i || b || w || reqCount*/
        !            69:        unsigned long           address;
        !            70:        unsigned long           cmdDep;
        !            71:        unsigned long           result;                 /* xferStatus || resCount*/
        !            72: };
        !            73: typedef struct DBDMADescriptor DBDMADescriptor;
        !            74: 
        !            75: typedef DBDMADescriptor *DBDMADescriptorPtr;
        !            76: 
        !            77: 
        !            78: /* This structure defines the standard set of DB-DMA channel registers.*/
        !            79: /** ** ** ** Shouldn't these be marked volatile ** ** ** **/
        !            80: struct DBDMAChannelRegisters {
        !            81:        unsigned long           channelControl;
        !            82:        unsigned long           channelStatus;
        !            83:        unsigned long           commandPtrHi;           /* implementation optional*/
        !            84:        unsigned long           commandPtrLo;
        !            85:        unsigned long           interruptSelect;        /* implementation optional*/
        !            86:        unsigned long           branchSelect;           /* implementation optional*/
        !            87:        unsigned long           waitSelect;                     /* implementation optional*/
        !            88:        unsigned long           transferModes;          /* implementation optional*/
        !            89:        unsigned long           data2PtrHi;                     /* implementation optional*/
        !            90:        unsigned long           data2PtrLo;                     /* implementation optional*/
        !            91: 
        !            92:        unsigned long           reserved1;
        !            93:        unsigned long           addressHi;                      /* implementation optional*/
        !            94:        unsigned long           reserved2[4];
        !            95:        unsigned long           unimplemented[16];
        !            96: 
        !            97:                                /* This structure must remain fully padded to 256 bytes.*/
        !            98:        unsigned long           undefined[32];
        !            99: };
        !           100: typedef struct DBDMAChannelRegisters DBDMAChannelRegisters;
        !           101: 
        !           102: /* These constants define the DB-DMA channel control words and status flags.*/
        !           103: 
        !           104: enum {
        !           105:        kdbdmaSetRun                            = 0x80008000,
        !           106:        kdbdmaClrRun                            = 0x80000000,
        !           107:        kdbdmaSetPause                          = 0x40004000,
        !           108:        kdbdmaClrPause                          = 0x40000000,
        !           109:        kdbdmaSetFlush                          = 0x20002000,
        !           110:        kdbdmaSetWake                           = 0x10001000,
        !           111:        kdbdmaClrDead                           = 0x08000000,
        !           112:        kdbdmaSetS7                                     = 0x00800080,
        !           113:        kdbdmaClrS7                                     = 0x00800000,
        !           114:        kdbdmaSetS6                                     = 0x00400040,
        !           115:        kdbdmaClrS6                                     = 0x00400000,
        !           116:        kdbdmaSetS5                                     = 0x00200020,
        !           117:        kdbdmaClrS5                                     = 0x00200000,
        !           118:        kdbdmaSetS4                                     = 0x00100010,
        !           119:        kdbdmaClrS4                                     = 0x00100000,
        !           120:        kdbdmaSetS3                                     = 0x00080008,
        !           121:        kdbdmaClrS3                                     = 0x00080000,
        !           122:        kdbdmaSetS2                                     = 0x00040004,
        !           123:        kdbdmaClrS2                                     = 0x00040000,
        !           124:        kdbdmaSetS1                                     = 0x00020002,
        !           125:        kdbdmaClrS1                                     = 0x00020000,
        !           126:        kdbdmaSetS0                                     = 0x00010001,
        !           127:        kdbdmaClrS0                                     = 0x00010000,
        !           128:        kdbdmaClrAll                            = 0xFFFF0000
        !           129: };
        !           130: 
        !           131: 
        !           132: enum {
        !           133:        kdbdmaRun                                       = 0x00008000,
        !           134:        kdbdmaPause                                     = 0x00004000,
        !           135:        kdbdmaFlush                                     = 0x00002000,
        !           136:        kdbdmaWake                                      = 0x00001000,
        !           137:        kdbdmaDead                                      = 0x00000800,
        !           138:        kdbdmaActive                            = 0x00000400,
        !           139:        kdbdmaBt                                        = 0x00000100,
        !           140:        kdbdmaS7                                        = 0x00000080,
        !           141:        kdbdmaS6                                        = 0x00000040,
        !           142:        kdbdmaS5                                        = 0x00000020,
        !           143:        kdbdmaS4                                        = 0x00000010,
        !           144:        kdbdmaS3                                        = 0x00000008,
        !           145:        kdbdmaS2                                        = 0x00000004,
        !           146:        kdbdmaS1                                        = 0x00000002,
        !           147:        kdbdmaS0                                        = 0x00000001
        !           148: };
        !           149: 
        !           150: /* These constants define the DB-DMA channel command operations and modifiers.*/
        !           151: 
        !           152: enum {
        !           153:                                                                                                /* Command.cmd operations*/
        !           154:        OUTPUT_MORE                                     = 0x00000000,
        !           155:        OUTPUT_LAST                                     = 0x10000000,
        !           156:        INPUT_MORE                                      = 0x20000000,
        !           157:        INPUT_LAST                                      = 0x30000000,
        !           158:        STORE_QUAD                                      = 0x40000000,
        !           159:        LOAD_QUAD                                       = 0x50000000,
        !           160:        NOP_CMD                                         = 0x60000000,
        !           161:        STOP_CMD                                        = 0x70000000,
        !           162:        kdbdmaCmdMask                           = 0xF0000000
        !           163: };
        !           164: 
        !           165: 
        !           166: enum {
        !           167:        /* Command.key modifiers (choose one for INPUT, OUTPUT, LOAD, and STORE)*/
        !           168:        KEY_STREAM0                                     = 0x00000000,           /* default modifier*/
        !           169:        KEY_STREAM1                                     = 0x01000000,
        !           170:        KEY_STREAM2                                     = 0x02000000,
        !           171:        KEY_STREAM3                                     = 0x03000000,
        !           172:        KEY_REGS                                        = 0x05000000,
        !           173:        KEY_SYSTEM                                      = 0x06000000,
        !           174:        KEY_DEVICE                                      = 0x07000000,
        !           175:        kdbdmaKeyMask                           = 0x07000000,   /* Command.i modifiers (choose one for INPUT, OUTPUT, LOAD, STORE, and NOP)*/
        !           176:        kIntNever                                       = 0x00000000,   /* default modifier*/
        !           177:        kIntIfTrue                                      = 0x00100000,
        !           178:        kIntIfFalse                                     = 0x00200000,
        !           179:        kIntAlways                                      = 0x00300000,
        !           180:        kdbdmaIMask                                     = 0x00300000,   /* Command.b modifiers (choose one for INPUT, OUTPUT, and NOP)*/
        !           181:        kBranchNever                            = 0x00000000,   /* default modifier*/
        !           182:        kBranchIfTrue                           = 0x00040000,
        !           183:        kBranchIfFalse                          = 0x00080000,
        !           184:        kBranchAlways                           = 0x000C0000,
        !           185:        kdbdmaBMask                                     = 0x000C0000,   /* Command.w modifiers (choose one for INPUT, OUTPUT, LOAD, STORE, and NOP)*/
        !           186:        kWaitNever                                      = 0x00000000,   /* default modifier*/
        !           187:        kWaitIfTrue                                     = 0x00010000,
        !           188:        kWaitIfFalse                            = 0x00020000,
        !           189:        kWaitAlways                                     = 0x00030000,
        !           190:        kdbdmaWMask                                     = 0x00030000,   /* operation masks*/
        !           191:        kdbdmaCommandMask                       = 0xFFFF0000,
        !           192:        kdbdmaReqCountMask                      = 0x0000FFFF
        !           193: };
        !           194: 
        !           195: /* These constants define the DB-DMA channel command results.*/
        !           196: 
        !           197: enum {
        !           198:        kXferStatusRun                          = kdbdmaRun << 16,
        !           199:        kXferStatusPause                        = kdbdmaPause << 16,
        !           200:        kXferStatusFlush                        = kdbdmaFlush << 16,
        !           201:        kXferStatusWake                         = kdbdmaWake << 16,
        !           202:        kXferStatusDead                         = kdbdmaDead << 16,
        !           203:        kXferStatusActive                       = kdbdmaActive << 16,
        !           204:        kXferStatusBt                           = kdbdmaBt << 16,
        !           205:        kXferStatusS7                           = kdbdmaS7 << 16,
        !           206:        kXferStatusS6                           = kdbdmaS6 << 16,
        !           207:        kXferStatusS5                           = kdbdmaS5 << 16,
        !           208:        kXferStatusS4                           = kdbdmaS4 << 16,
        !           209:        kXferStatusS3                           = kdbdmaS3 << 16,
        !           210:        kXferStatusS2                           = kdbdmaS2 << 16,
        !           211:        kXferStatusS1                           = kdbdmaS1 << 16,
        !           212:        kXferStatusS0                           = kdbdmaS0 << 16,                               /* result masks*/
        !           213:        kdbdmaResCountMask                      = 0x0000FFFF,
        !           214:        kdbdmaXferStatusMask            = kdbdmaResCountMask << 16
        !           215: };
        !           216: 
        !           217: 

unix.superglobalmegacorp.com

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