Annotation of XNU/iokit/IOKit/pci/IOPCIBridge.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:  * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved. 
                     24:  *
                     25:  * HISTORY
                     26:  *
                     27:  */
                     28: 
                     29: 
                     30: #ifndef _IOKIT_IOPCIBRIDGE_H
                     31: #define _IOKIT_IOPCIBRIDGE_H
                     32: 
                     33: #include <IOKit/IOService.h>
                     34: #include <IOKit/IODeviceMemory.h>
                     35: #include <IOKit/pci/IOAGPDevice.h>
                     36: 
                     37: 
                     38: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                     39: 
                     40: class IOPCIBridge : public IOService
                     41: {
                     42:     friend IOPCIDevice;
                     43: 
                     44:     OSDeclareAbstractStructors(IOPCIBridge)
                     45: 
                     46: private:
                     47:     IORegistryEntry * findMatching( OSIterator * in, IOPCIAddressSpace space );
                     48:     void publishNubs( OSIterator * kids, UInt32 index );
                     49:     virtual bool isDTNub( IOPCIDevice * nub );
                     50:     static void nvLocation( IORegistryEntry * entry,
                     51:        UInt8 * busNum, UInt8 * deviceNum, UInt8 * functionNum );
                     52: 
                     53: protected:
                     54:     IORangeAllocator * bridgeMemoryRanges;
                     55:     IORangeAllocator * bridgeIORanges;
                     56: 
                     57: protected:
                     58:     virtual void probeBus( IOService * provider, UInt8 busNum );
                     59: 
                     60:     virtual UInt8 firstBusNum( void );
                     61:     virtual UInt8 lastBusNum( void );
                     62: 
                     63:     virtual void spaceFromProperties( OSDictionary * propTable,
                     64:                                        IOPCIAddressSpace * space );
                     65:     virtual OSDictionary * constructProperties( IOPCIAddressSpace space );
                     66: 
                     67:     virtual IOPCIDevice * createNub( OSDictionary * from );
                     68: 
                     69:     virtual bool initializeNub( IOPCIDevice * nub, OSDictionary * from );
                     70: 
                     71:     virtual bool publishNub( IOPCIDevice * nub, UInt32 index );
                     72: 
                     73:     virtual bool addBridgeMemoryRange( IOPhysicalAddress start,
                     74:                                        IOPhysicalLength length, bool host );
                     75: 
                     76:     virtual bool addBridgeIORange( IOByteCount start, IOByteCount length );
                     77: 
                     78:     virtual bool constructRange( IOPCIAddressSpace * flags,
                     79:                                  IOPhysicalAddress phys, IOPhysicalLength len,
                     80:                                  OSArray * array );
                     81: 
                     82:     virtual bool matchNubWithPropertyTable( IOService * nub,
                     83:                                            OSDictionary * propertyTable );
                     84: 
                     85:     virtual bool compareNubName( const IOService * nub, OSString * name,
                     86:                                 OSString ** matched = 0 ) const;
                     87: 
                     88:     virtual bool pciMatchNub( IOPCIDevice * nub, OSDictionary * table );
                     89: 
                     90:     virtual bool matchKeys( IOPCIDevice * nub, const char * keys,
                     91:                                UInt32 defaultMask, UInt8 regNum );
                     92: 
                     93:     virtual IOReturn getNubResources( IOService * nub );
                     94: 
                     95:     virtual IOReturn getNubAddressing( IOPCIDevice * nub );
                     96: 
                     97:     virtual IOReturn getDTNubAddressing( IOPCIDevice * nub );
                     98: 
                     99: public:
                    100: 
                    101:     virtual bool start( IOService * provider );
                    102: 
                    103:     virtual bool configure( IOService * provider );
                    104: 
                    105:     /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                    106: 
                    107:     virtual IODeviceMemory * ioDeviceMemory( void ) = 0;
                    108: 
                    109:     virtual UInt32 configRead32( IOPCIAddressSpace space, UInt8 offset ) = 0;
                    110: 
                    111:     virtual void configWrite32( IOPCIAddressSpace space,
                    112:                                        UInt8 offset, UInt32 data ) = 0;
                    113: 
                    114:     virtual IOPCIAddressSpace getBridgeSpace( void ) = 0;
                    115: 
                    116:     virtual UInt32 findPCICapability( IOPCIAddressSpace space,
                    117:                                        UInt8 capabilityID );
                    118: 
                    119:     /* * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                    120: 
                    121:     virtual IOReturn createAGPSpace( IOPCIAddressSpace master, 
                    122:                                     IOOptionBits options,
                    123:                                     IOPhysicalAddress * address, 
                    124:                                     IOPhysicalLength * length );
                    125: 
                    126:     virtual IOReturn destroyAGPSpace( IOPCIAddressSpace master );
                    127: 
                    128:     virtual IORangeAllocator * getAGPRangeAllocator( IOPCIAddressSpace master );
                    129: 
                    130:     virtual IOOptionBits getAGPStatus( IOPCIAddressSpace master,
                    131:                                      IOOptionBits options = 0 );
                    132: 
                    133:     virtual IOReturn commitAGPMemory( IOPCIAddressSpace master, 
                    134:                                      IOMemoryDescriptor * memory,
                    135:                                      IOByteCount agpOffset,
                    136:                                      IOOptionBits options = 0 );
                    137: 
                    138:     virtual IOReturn releaseAGPMemory( IOPCIAddressSpace master, 
                    139:                                        IOMemoryDescriptor * memory, 
                    140:                                        IOByteCount agpOffset );
                    141: 
                    142: };
                    143: 
                    144: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                    145: 
                    146: class IOPCI2PCIBridge : public IOPCIBridge
                    147: {
                    148:     OSDeclareDefaultStructors(IOPCI2PCIBridge)
                    149: 
                    150: private:
                    151: 
                    152:     IOPCIDevice * bridgeDevice;
                    153: 
                    154: protected:
                    155:     virtual UInt8 firstBusNum( void );
                    156:     virtual UInt8 lastBusNum( void );
                    157: 
                    158: public:
                    159:     virtual IOService * probe( IOService *     provider,
                    160:                                 SInt32 *       score );
                    161: 
                    162:     virtual bool configure( IOService * provider );
                    163: 
                    164:     virtual bool publishNub( IOPCIDevice * nub, UInt32 index );
                    165: 
                    166:     virtual IODeviceMemory * ioDeviceMemory( void );
                    167: 
                    168:     virtual IOPCIAddressSpace getBridgeSpace( void );
                    169: 
                    170:     virtual UInt32 configRead32( IOPCIAddressSpace space, UInt8 offset );
                    171: 
                    172:     virtual void configWrite32( IOPCIAddressSpace space,
                    173:                                        UInt8 offset, UInt32 data );
                    174: 
                    175: };
                    176: 
                    177: #endif /* ! _IOKIT_IOPCIBRIDGE_H */
                    178: 

unix.superglobalmegacorp.com

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