Annotation of kernel/bsd/dev/ppc/drvSymbios8xx/Sym8xxController.h, revision 1.1.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: /* Sym8xxController.h created by russb2 on Sat 30-May-1998 */
                     26: 
                     27: #import <bsd/sys/systm.h>
                     28: #import <bsd/include/string.h>
                     29: #import <mach/vm_param.h>
                     30: #import <machkit/NXLock.h>
                     31: #import <kernserv/ns_timer.h>
                     32: #import <kern/queue.h>
                     33: #import <driverkit/driverTypes.h>
                     34: #import <driverkit/generalFuncs.h>
                     35: #import <driverkit/kernelDriver.h>
                     36: #import <driverkit/interruptMsg.h>
                     37: #import <driverkit/IODirectDevice.h>
                     38: #import <driverkit/ppc/IOPCIDevice.h>
                     39: 
                     40: #import <driverkit/IOSimpleMemoryDescriptor.h>
                     41: 
                     42: #import <bsd/dev/scsireg.h>
                     43: #import <driverkit/IOSCSIController.h>
                     44: 
                     45: #import "Sym8xxRegs.h"
                     46: #import "Sym8xxInterface.h"
                     47: #import "Sym8xxSRB.h"
                     48: 
                     49: #import "Sym8xxScript.h"
                     50: 
                     51: @interface Sym8xxController : IOSCSIController
                     52: {
                     53:     AdapterInterface            *adapter;
                     54:     AdapterInterface           *adapterPhys;
                     55: 
                     56:     Target                     targets[MAX_SCSI_TARGETS];
                     57:     u_int32_t                  tags[MAX_SCSI_TAG/32];
                     58:     u_int32_t                  nexusArrayVirt[MAX_SCSI_TAG];
                     59: 
                     60:     u_int8_t                   mailBoxIndex;
                     61: 
                     62:     u_int32_t                  initiatorID;
                     63: 
                     64:     u_int8_t                   istatReg;
                     65:     u_int8_t                   dstatReg;
                     66:     u_int16_t                  sistReg;
                     67: 
                     68:     u_int32_t                  scriptRestartAddr;
                     69: 
                     70:     NXLock                     *srbPendingQLock;
                     71:     queue_head_t               srbPendingQ;
                     72: 
                     73:     NXConditionLock            *srbPoolGrowLock;
                     74:     u_int32_t                  srbPoolGrow;
                     75: 
                     76:     NXLock                     *srbPoolLock;
                     77:     queue_head_t               srbPool;
                     78:     u_int32_t                  srbSeqNum;
                     79:     u_int32_t                  resetSeqNum;
                     80:     
                     81:     NXLock                     *resetQuiesceSem;
                     82:     u_int32_t                  resetQuiesceTimer;
                     83: 
                     84:     NXLock                     *cmdQTagSem;
                     85:     NXLock                      *abortBdrSem;
                     86: 
                     87:     port_t                     interruptPortKern;
                     88: 
                     89:     SRB                                *resetSRB;
                     90:     SRB                                *abortSRB;
                     91:     u_int32_t                  abortSRBTimeout;
                     92:     SRB                                *abortCurrentSRB;
                     93:     u_int32_t                  abortCurrentSRBTimeout;
                     94: 
                     95:     u_int32_t                  chipType;
                     96:     u_int32_t                  chipClockRate;
                     97: 
                     98:     volatile u_int8_t          *chipBaseAddr;
                     99:     u_int8_t                   *chipBaseAddrPhys;
                    100:     
                    101:     volatile u_int8_t          *chipRamAddr;
                    102:     u_int8_t                   *chipRamAddrPhys;
                    103: 
                    104: }
                    105: @end
                    106: 
                    107: @interface Sym8xxController(Init)
                    108: + (BOOL)       probe:(IOPCIDevice *)deviceDescription;
                    109: -              initFromDeviceDescription:(IOPCIDevice *) deviceDescription;
                    110: - (BOOL)       Sym8xxInit:(IOPCIDevice *)deviceDescription;
                    111: - (BOOL)       Sym8xxInitPCI:(IOPCIDevice *)deviceDescription;
                    112: - (BOOL)       Sym8xxInitVars;
                    113: - (BOOL)       Sym8xxInitScript;
                    114: - (void)       Sym8xxLoadScript:(u_int32_t *)scriptPgm count:(u_int32_t)scriptWords;
                    115: - (BOOL)       Sym8xxInitChip;
                    116: 
                    117: @end
                    118: 
                    119: @interface Sym8xxController(Client)
                    120: - (sc_status_t) executeRequest:(IOSCSIRequest *)scsiReq  buffer:(void *)buffer  client:(vm_task_t)client;
                    121: - (sc_status_t) executeRequest:(IOSCSIRequest *)scsiReq  ioMemoryDescriptor: (IOMemoryDescriptor *) ioMemoryDescriptor;
                    122: - (sc_status_t) resetSCSIBus;
                    123: - (void)       getDMAAlignment:(IODMAAlignment *)alignment;
                    124: - (int)        numberOfTargets;
                    125: - (void)       Sym8xxCalcMsgs: (SRB *)srb;
                    126: - (void)       Sym8xxSendCommand: (SRB *) srb;
                    127: - (u_int32_t)  Sym8xxAllocTag:(SRB *)srb CmdQueue:(BOOL)fCmdQueue;
                    128: - (void)       Sym8xxFreeTag:(SRB *)srb;
                    129: - (SRB *)      Sym8xxAllocSRB;
                    130: - (void)       Sym8xxFreeSRB:(SRB *)srb;
                    131: - (void)       Sym8xxGrowSRBPool;
                    132: - (BOOL)       Sym8xxUpdateSGList:(SRB *)srb;
                    133: - (BOOL)       Sym8xxUpdateSGListVirt: (SRB *) srb;
                    134: - (BOOL)       Sym8xxUpdateSGListDesc: (SRB *) srb;
                    135: 
                    136: 
                    137: IOThreadFunc   Sym8xxTimerReq( Sym8xxController *device );
                    138: IOThreadFunc   Sym8xxGrowSRBPool( Sym8xxController *controller );
                    139: 
                    140: @end
                    141: 
                    142: @interface Sym8xxController(Execute)
                    143: - (void)       commandRequestOccurred;
                    144: - (void)       Sym8xxSignalScript:(SRB *)srb;
                    145: - (void)       interruptOccurred;
                    146: - (void)        timeoutOccurred;
                    147: - (void)       Sym8xxProcessIODone;
                    148: - (void)       Sym8xxProcessInterrupt;
                    149: - (BOOL)       Sym8xxProcessStatus:(SRB *)srb;
                    150: - (void)       Sym8xxIssueRequestSense:(SRB *) srb;
                    151: - (void)       Sym8xxAdjustDataPtrs:(SRB *) srb Nexus:(Nexus *) nexus;
                    152: - (u_int32_t)  Sym8xxCheckFifo:(SRB *)srb FifoCnt:(u_int32_t *)pfifoCnt;
                    153: - (void)       Sym8xxUpdateXferOffset:(SRB *) srb;
                    154: - (void)        Sym8xxProcessNoNexus;
                    155: - (void)       Sym8xxAbortCurrent:(SRB *)srb;
                    156: - (void)       Sym8xxClearFifo;
                    157: - (void)       Sym8xxNegotiateSDTR:(SRB *) srb Nexus:(Nexus *)nexus;
                    158: - (void)       Sym8xxNegotiateWDTR:(SRB *) srb Nexus:(Nexus *)nexus;
                    159: - (void)       Sym8xxSendMsgReject:(SRB *) srb;
                    160: - (void)       Sym8xxCheckInquiryData: (SRB *)srb;
                    161: - (void)       Sym8xxSCSIBusReset:(SRB *)srb;
                    162: - (void)       Sym8xxProcessSCSIBusReset;
                    163: - (void)       Sym8xxAbortBdr: (SRB *) srb;
                    164: - (void)       Sym8xxAbortScript;
                    165: 
                    166: 
                    167: 
                    168: @end
                    169: 
                    170: u_int32_t Sym8xxReadRegs( volatile u_int8_t *chipRegs, u_int32_t regOffset, u_int32_t regSize );
                    171: void      Sym8xxWriteRegs( volatile u_int8_t *chipRegs, u_int32_t regOffset, u_int32_t regSize, u_int32_t regValue );
                    172: 
                    173: extern kern_return_t   kmem_alloc_wired();
                    174: extern kern_return_t   kmem_free();
                    175: extern kern_return_t   msg_send_from_kernel(msg_header_t *,int,int);
                    176: //extern void          call_kdp();
                    177: 
                    178: extern u_int32_t       page_size;
                    179: 
                    180: #if 0
                    181: extern u_int32_t       gRegs875, gRegs875Phys, gRam875, gRam875Phys;
                    182: #endif
                    183: 
                    184: 
                    185: static __inline__ u_int16_t EndianSwap16(volatile u_int16_t y)
                    186: {
                    187:     u_int16_t          result;
                    188:     volatile u_int16_t  x;
                    189: 
                    190:     x = y;   
                    191:     __asm__ volatile("lhbrx %0, 0, %1" : "=r" (result) : "r" (&x) : "r0");
                    192:     return result;
                    193: }
                    194: 
                    195: static __inline__ u_int32_t EndianSwap32(u_int32_t y)
                    196: {
                    197:     u_int32_t           result;
                    198:     volatile u_int32_t   x;
                    199: 
                    200:     x = y;
                    201:     __asm__ volatile("lwbrx %0, 0, %1" : "=r" (result) : "r" (&x) : "r0");
                    202:     return result;
                    203: }
                    204: 
                    205: #ifndef eieio
                    206: #define eieio() \
                    207:         __asm__ volatile("eieio")
                    208: #endif

unix.superglobalmegacorp.com

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