]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IODeviceTreeSupport.h
xnu-7195.101.1.tar.gz
[apple/xnu.git] / iokit / IOKit / IODeviceTreeSupport.h
index eacf339bc68c24d2a943fdcd2eec329359b15e76..d48f58ecfdd7bbdf53e21ffecc02a093748cf793 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The 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,
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 /*
- * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved. 
+ * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved.
  *
  * HISTORY
  *
 
 #include <IOKit/IORegistryEntry.h>
 #include <libkern/c++/OSData.h>
+#include <libkern/c++/OSPtr.h>
 
 class IODeviceMemory;
 class IOService;
 
-extern const IORegistryPlane * gIODTPlane;
+extern const IORegistryPlane *  gIODTPlane;
 
-extern const OSSymbol *                gIODTPHandleKey;
+extern const OSSymbol *         gIODTPHandleKey;
 
-extern const OSSymbol *                gIODTCompatibleKey;
-extern const OSSymbol *        gIODTTypeKey;
-extern const OSSymbol *        gIODTModelKey;
+extern const OSSymbol *         gIODTCompatibleKey;
+extern const OSSymbol *         gIODTTypeKey;
+extern const OSSymbol *         gIODTModelKey;
+extern const OSSymbol *         gIODTBridgeModelKey;
+extern const OSSymbol *         gIODTTargetTypeKey;
 
-extern const OSSymbol *                gIODTAAPLInterruptsKey;
-extern const OSSymbol *                gIODTDefaultInterruptController;
-extern const OSSymbol *                gIODTNWInterruptMappingKey;
+extern const OSSymbol *         gIODTAAPLInterruptsKey;
+extern const OSSymbol *         gIODTDefaultInterruptController;
+extern const OSSymbol *         gIODTNWInterruptMappingKey;
 
-IORegistryEntry * IODeviceTreeAlloc( void * dtTop );
+LIBKERN_RETURNS_NOT_RETAINED IORegistryEntry * IODeviceTreeAlloc( void * dtTop );
 
 
 bool IODTMatchNubWithKeys( IORegistryEntry * nub,
-                                    const char * keys );
+    const char * keys );
 
 bool IODTCompareNubName( const IORegistryEntry * regEntry,
-                        OSString * name, OSString ** matchingName );
+    OSString * name,
+    LIBKERN_RETURNS_RETAINED_ON_NONZERO OSString ** matchingName );
+bool IODTCompareNubName( const IORegistryEntry * regEntry,
+    OSString * name,
+    OSSharedPtr<OSString>& matchingName );
 
 enum {
-    kIODTRecursive     = 0x00000001,
-    kIODTExclusive     = 0x00000002
+       kIODTRecursive      = 0x00000001,
+       kIODTExclusive      = 0x00000002
 };
 
 OSCollectionIterator * IODTFindMatchingEntries( IORegistryEntry * from,
-                       IOOptionBits options, const char * keys );
+    IOOptionBits options, const char * keys );
 
+#if !defined(__arm64__)
 typedef SInt32 (*IODTCompareAddressCellFunc)
-       (UInt32 cellCount, UInt32 left[], UInt32 right[]);
+(UInt32 cellCount, UInt32 left[], UInt32 right[]);
+#else
+typedef SInt64 (*IODTCompareAddressCellFunc)
+(UInt32 cellCount, UInt32 left[], UInt32 right[]);
+#endif
+
 typedef void (*IODTNVLocationFunc)
-       (IORegistryEntry * entry,
-       UInt8 * busNum, UInt8 * deviceNum, UInt8 * functionNum );
+(IORegistryEntry * entry,
+    UInt8 * busNum, UInt8 * deviceNum, UInt8 * functionNum );
 
-void IODTSetResolving( IORegistryEntry *       regEntry,
-               IODTCompareAddressCellFunc      compareFunc,
-               IODTNVLocationFunc              locationFunc );
+void IODTSetResolving( IORegistryEntry *        regEntry,
+    IODTCompareAddressCellFunc      compareFunc,
+    IODTNVLocationFunc              locationFunc );
 
-bool IODTResolveAddressCell( IORegistryEntry * regEntry,
-                             UInt32 cellsIn[],
-                             IOPhysicalAddress * phys, IOPhysicalLength * len );
+void IODTGetCellCounts( IORegistryEntry * regEntry,
+    UInt32 * sizeCount, UInt32 * addressCount);
 
-OSArray * IODTResolveAddressing( IORegistryEntry * regEntry,
-                       const char * addressPropertyName,
-                       IODeviceMemory * parent );
+bool IODTResolveAddressCell( IORegistryEntry * regEntry,
+    UInt32 cellsIn[],
+    IOPhysicalAddress * phys, IOPhysicalLength * len );
 
-#pragma options align=mac68k
+LIBKERN_RETURNS_NOT_RETAINED OSArray *
+IODTResolveAddressing( IORegistryEntry * regEntry,
+    const char * addressPropertyName,
+    IODeviceMemory * parent );
 
 struct IONVRAMDescriptor {
-    unsigned int format:4;
-    unsigned int marker:1;
-    unsigned int bridgeCount:3;
-    unsigned int busNum:2;
-    unsigned int bridgeDevices:6 * 5;
-    unsigned int functionNum:3;
-    unsigned int deviceNum:5;
-};
-
-#pragma options align=reset
+       unsigned int format:4;
+       unsigned int marker:1;
+       unsigned int bridgeCount:3;
+       unsigned int busNum:2;
+       unsigned int bridgeDevices:6 * 5;
+       unsigned int functionNum:3;
+       unsigned int deviceNum:5;
+} __attribute__((aligned(2), packed));
 
 IOReturn IODTMakeNVDescriptor( IORegistryEntry * regEntry,
-                               IONVRAMDescriptor * hdr );
+    IONVRAMDescriptor * hdr );
 
-OSData * IODTFindSlotName( IORegistryEntry * regEntry, UInt32 deviceNumber );
+LIBKERN_RETURNS_NOT_RETAINED OSData *
+IODTFindSlotName( IORegistryEntry * regEntry, UInt32 deviceNumber );
 
 const OSSymbol * IODTInterruptControllerName(
-                       IORegistryEntry * regEntry );
+       IORegistryEntry * regEntry );
 
 bool IODTMapInterrupts( IORegistryEntry * regEntry );
 
 enum {
-    kIODTInterruptShared = 0x00000001
+       kIODTInterruptShared = 0x00000001
 };
 IOReturn IODTGetInterruptOptions( IORegistryEntry * regEntry, int source, IOOptionBits * options );
 
@@ -128,4 +142,3 @@ IOReturn IONDRVLibrariesInitialize( IOService * provider );
 #endif
 
 #endif /* _IOKIT_IODEVICETREE_H */
-