Annotation of XNU/iokit/IOKit/firewire/IOFireWireNub.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  *
                     24:  *     IOFireWireNub.h
                     25:  *
                     26:  *
                     27:  *     Note: IOFWCommand(s) are allocated by methods in this class. 
                     28:  *            The remaining methods to setup and submit IOFWCommands are defined in
                     29:  *            IOFWCommand.h
                     30:  */
                     31: #ifndef _IOKIT_IOFIREWIRENUB_H
                     32: #define _IOKIT_IOFIREWIRENUB_H
                     33: 
                     34: #include <IOKit/IOService.h>
                     35: #include <IOKit/firewire/IOFWCommand.h>
                     36: #include <IOKit/firewire/IOFWAddressSpace.h>
                     37: class IOFireWireController;
                     38: 
                     39: class IOFireWireNub : public IOService
                     40: {
                     41:     OSDeclareDefaultStructors(IOFireWireNub)
                     42: 
                     43: /*------------------Useful info about device (also available in the registry)--------*/
                     44: public:
                     45:     int                        fDeviceSpeed;   // Max supported by device
                     46:     int                        fCommsSpeed;    // Max speed this node can communicate with device
                     47:     UInt16             fNodeID;        // Current node ID (could change after bus reset!)
                     48:     UInt32             fLocalNodeID;   // ID of the local node (could change after bus reset!)
                     49:     UInt32             fGeneration;    // ID Of bus topology that fNodeID is valid for.
                     50:     CSRNodeUniqueID    fUniqueID;      // Device's globally unique ID (never changes)
                     51:     mach_timespec_t    fAsyncTimeout;  // Guesstimate of how long to wait for response
                     52:                                        // from device when making async requests
                     53:                                        // Different values for quad/block transfers?
                     54:                                        // OS8 FW has 40/100 mSec.
                     55: 
                     56:     const UInt32 *     fROM;
                     57:     UInt32             fROMSize;
                     58: 
                     59:     IOFireWireController *fControl;
                     60: 
                     61: // More info to come - device type, CSR ROM etc.
                     62: 
                     63: protected:
                     64:     // Create an IOUserClient object to handle communication with User task
                     65:     virtual IOReturn newUserClient( task_t             owningTask,
                     66:                                     void *             security_id,
                     67:                                     UInt32             type,
                     68:                                     IOUserClient **    handler );
                     69: 
                     70: /*------------------Methods provided to FireWire device clients-----------------------*/
                     71: public:
                     72:     // How fast can this system talk to the node?
                     73:     virtual IOFWSpeed FWSpeed() const;
                     74: 
                     75:     // How fast can this node talk to another node?
                     76:     virtual IOFWSpeed FWSpeed(const IOFireWireNub *dst) const;
                     77: 
                     78:     // How big (as a power of two) can packets sent to/received from the node be?
                     79:     virtual int maxPackLog(bool forSend) const;
                     80: 
                     81:     // How big (as a power of two) can packets sent from this node to dst node/received from dst be?
                     82:     virtual int maxPackLog(bool forSend, const IOFireWireNub *dst) const;
                     83: 
                     84:     /*
                     85:      * Create various FireWire commands to send to the device
                     86:      */
                     87:     virtual IOFWReadCommand    *createReadCommand(FWAddress devAddress, IOMemoryDescriptor *hostMem,
                     88:                                FWDeviceCallback completion=NULL, void *refcon=NULL,
                     89:                                bool failOnReset=false);
                     90:     virtual IOFWReadQuadCommand *createReadQuadCommand(FWAddress devAddress, UInt32 *quads, int numQuads,
                     91:                                FWDeviceCallback completion=NULL, void *refcon=NULL,
                     92:                                bool failOnReset=false);
                     93: 
                     94:     virtual IOFWWriteCommand   *createWriteCommand(FWAddress devAddress, IOMemoryDescriptor *hostMem,
                     95:                                FWDeviceCallback completion=NULL, void *refcon=NULL,
                     96:                                bool failOnReset=false);
                     97:     virtual IOFWWriteQuadCommand *createWriteQuadCommand(FWAddress devAddress, UInt32 *quads, int numQuads,
                     98:                                FWDeviceCallback completion=NULL, void *refcon=NULL,
                     99:                                bool failOnReset=false);
                    100: 
                    101:     // size is 1 for 32 bit compare, 2 for 64 bit.
                    102:     virtual IOFWCompareAndSwapCommand  *createCompareAndSwapCommand(FWAddress devAddress,
                    103:                                const UInt32 *cmpVal, const UInt32 *newVal, int size,
                    104:                                FWDeviceCallback completion=NULL, void *refcon=NULL,
                    105:                                bool failOnReset=false);
                    106:     /*
                    107:      * Create local FireWire address spaces for the device to access
                    108:      */
                    109:     virtual IOFWPhysicalAddressSpace *createPhysicalAddressSpace(IOMemoryDescriptor *mem);
                    110:     virtual IOFWPseudoAddressSpace *createPseudoAddressSpace(FWAddress addr, UInt32 len, 
                    111:                                FWReadCallback reader, FWWriteCallback writer, void *refcon);
                    112: 
                    113:     /*
                    114:      * Create commands to activate/deactivate local FireWire address spaces
                    115:      */
                    116:     virtual IOFWAllocAddressCommand *createAllocAddrCommand(IOFWAddressSpace *space,
                    117:                                FWBusCallback completion = 0, void *refcon = 0);
                    118:     virtual IOFWDeallocAddressCommand *createDeallocAddrCommand(IOFWAddressSpace *space,
                    119:                                FWBusCallback completion = 0, void *refcon = 0);
                    120: 
                    121:     /*
                    122:      * Create an iterator for the device ROM
                    123:      * Device nub iterates over whle ROM, Unit nub over Unit directory
                    124:      */
                    125:     virtual IOReturn CSRROMCreateIterator (CSRROMEntryIterator *pCSRROMIterator) = 0;
                    126: 
                    127:     /*
                    128:      * Standard nub initialization
                    129:      */
                    130:     virtual bool init(OSDictionary * propTable);
                    131: 
                    132: };
                    133: 
                    134: #endif /* ! _IOKIT_IOFIREWIRENUB_H */

unix.superglobalmegacorp.com

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