]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/scsi/scsi-parallel/IOSCSIParallelController.h
xnu-344.tar.gz
[apple/xnu.git] / iokit / IOKit / scsi / scsi-parallel / IOSCSIParallelController.h
diff --git a/iokit/IOKit/scsi/scsi-parallel/IOSCSIParallelController.h b/iokit/IOKit/scsi/scsi-parallel/IOSCSIParallelController.h
deleted file mode 100644 (file)
index feaa8ec..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- * 
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License").  You may not use this file except in compliance with the
- * License.  Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
- * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
- * 
- * @APPLE_LICENSE_HEADER_END@
- */
-/*
- *
- *     IOSCSIController.h
- *
- *     Methods in this header list the methods an SCSI controller driver must implement. 
- */
-#ifndef _IOSCSIPARALLELCONTROLLER_H
-#define _IOSCSIPARALLELCONTROLLER_H
-
-#include <IOKit/IOWorkLoop.h>
-#include <IOKit/IOCommandGate.h>
-#include <IOKit/IOInterruptEventSource.h>
-#include <IOKit/IOTimerEventSource.h>
-#include <libkern/OSByteOrder.h>
-#include <IOKit/IOMemoryCursor.h>
-
-class IOSCSIParallelDevice;
-class IOSCSIParallelCommand;
-
-class IOSCSIParallelController : public IOService
-{
-    OSDeclareDefaultStructors(IOSCSIParallelController)
-
-    friend class IOSCSIParallelCommand;
-    friend class IOSCSIParallelDevice;
-
-/*------------------Methods provided by IOSCSIParallelController---------------------------------*/
-public:
-    bool                       probeTarget( SCSITargetLun targetLun );
-    void                       reset();
-
-protected:
-    void                       resetOccurred();
-
-    void                       enableCommands();
-    void                       disableCommands();
-    void                       disableCommands( UInt32 disableTimeoutmS );
-
-    void                       rescheduleCommand( IOSCSIParallelCommand *forSCSICmd );
-
-    IOSCSIParallelDevice        *findDeviceWithTargetLun( SCSITargetLun targetLun );
-    IOSCSIParallelCommand       *findCommandWithNexus( SCSITargetLun targetLun, UInt32 tagValue = (UInt32)-1 );
-
-    void                       *getTargetData( SCSITargetLun targetLun );
-    void                       *getLunData( SCSITargetLun targetLun );
-
-    virtual IOWorkLoop         *getWorkLoop() const;
-
-    void                       setCommandLimit( UInt32 commandLimit );                 // temp
-
-
-/*------------------Methods the controller subclass must implement-----------------------*/
-protected:
-    /*
-     *   Initialize controller hardware.
-     *
-     *   Note: The controller driver's configure() method will be called prior to any other
-     *         methods. If the controller driver returns successfully from this method it
-     *         should be ready to accept any other method call listed.
-     */
-    virtual bool               configure( IOService *provider, SCSIControllerInfo *controllerInfo ) = 0;
-
-    /*
-     * Bus/target commands
-     *
-     */
-    virtual void               executeCommand( IOSCSIParallelCommand *forSCSICmd ) = 0;
-    virtual void               cancelCommand(  IOSCSIParallelCommand *forSCSICmd ) = 0;
-    virtual void               resetCommand(   IOSCSIParallelCommand *forSCSICmd ) = 0;    
-
-/*------------------Optional methods the controller subclass may implement-----------------------*/
-protected:
-    /*
-     *    These methods notify the IOSCSIParallelController subclass, that a target or lun is about to be
-     *    probed. The subclass should initialize its per-target or per-lun data when called at these
-     *    methods. If the subclass (for some reason) wants to prevent probing of a target or lun, it
-     *    can return false to the corresponding allocate*() call.
-     */    
-    virtual bool               allocateTarget( SCSITargetLun targetLun );
-    virtual void               deallocateTarget( SCSITargetLun targetLun );
-
-    virtual bool               allocateLun( SCSITargetLun targetLun );
-    virtual void               deallocateLun( SCSITargetLun targetLun );
-
-    virtual void               disableTimeoutOccurred();       
-
-
-/*------------------Methods private to the IOSCSIParallelController class----------------------*/
-
-public:
-    bool                       start( IOService *provider );
-    void                       free();
-
-private:
-    IOSCSIParallelDevice       *createDevice();
-
-    void                       initQueues();
-    bool                       scanSCSIBus();
-
-    bool                       initTarget( SCSITargetLun targetLun );
-    bool                       initTargetGated( SCSITargetLun *targetLun );
-    void                       releaseTarget( SCSITargetLun targetLun );
-    void                       releaseTargetGated( SCSITargetLun *targetLun );
-    bool                       initDevice( IOSCSIParallelDevice *device );
-    bool                       initDeviceGated( IOSCSIParallelDevice *device );
-    void                       releaseDevice( IOSCSIParallelDevice *device );
-    void                       releaseDeviceGated( IOSCSIParallelDevice *device );
-
-
-    void                       addDevice( IOSCSIParallelDevice *forDevice );
-    void                       deleteDevice( IOSCSIParallelDevice *forDevice );
-
-    void                       timer( IOTimerEventSource *);
-
-    void                       dispatchRequest();
-    void                       dispatch();
-
-    bool                       checkBusReset();
-    
-    void                       completeCommand( IOSCSIParallelCommand *forSCSICmd );
-
-    bool                       createWorkLoop();
-    bool                       configureController();
-
-    IOSCSIParallelCommand      *allocCommand( UInt32 clientDataSize );
-
-private:
-    
-    UInt32                     sequenceNumber;
-
-    UInt32                     commandCount;
-    UInt32                     commandLimit;
-    UInt32                     commandLimitSave;
-
-    UInt32                     disableTimer;
-    bool                       commandDisable;
-
-    UInt32                     tagArraySize;
-    UInt32                     *tagArray;
-    
-    UInt32                     busResetState;
-    IOSCSIParallelCommand      *resetCmd;
-    UInt32                     resetTimer;
-
-    IOSCSIParallelCommand      *noDisconnectCmd;
-
-    SCSIControllerInfo         controllerInfo;
-    SCSITarget                 *targets;
-    
-    IOWorkLoop                 *workLoop;
-    IOTimerEventSource         *timerEvent;
-    IOInterruptEventSource     *dispatchEvent;
-
-    IOCommandGate              *controllerGate;
-
-    IOService                  *provider;
-};
-
-#endif