]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/graphics/IOFramebuffer.h
xnu-201.tar.gz
[apple/xnu.git] / iokit / IOKit / graphics / IOFramebuffer.h
diff --git a/iokit/IOKit/graphics/IOFramebuffer.h b/iokit/IOKit/graphics/IOFramebuffer.h
deleted file mode 100644 (file)
index 533a450..0000000
+++ /dev/null
@@ -1,455 +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@
- */
-/*
- * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved. 
- *
- * HISTORY
- * 30 Nov 98 sdouglas start cpp, from previous versions.
- */
-
-#ifndef _IOKIT_IOFRAMEBUFFER_H
-#define _IOKIT_IOFRAMEBUFFER_H
-
-#include <IOKit/IOService.h>
-#include <IOKit/graphics/IOGraphicsDevice.h>
-#include <IOKit/graphics/IOFramebufferShared.h>
-#include <IOKit/IOLib.h>
-
-class IOFramebuffer;
-class IOBufferMemoryDescriptor;
-
-typedef void (*CursorBlitProc)(
-                    IOFramebuffer * inst,
-                    void * shmem,
-                    volatile unsigned char *vramPtr,
-                    unsigned int cursStart,
-                    unsigned int vramRow,
-                    unsigned int cursRow,
-                    int width,
-                    int height );
-
-typedef void (*CursorRemoveProc)(
-                    IOFramebuffer * inst,
-                    void * shmem,
-                    volatile unsigned char *vramPtr,
-                    unsigned int vramRow,
-                    int width,
-                    int height );
-
-enum {
-   kTransparentEncoding        = 0,
-   kInvertingEncoding
-};
-
-enum {
-   kTransparentEncodingShift   = (kTransparentEncoding << 1),
-   kTransparentEncodedPixel    = (0x01 << kTransparentEncodingShift),
-
-   kInvertingEncodingShift     = (kInvertingEncoding << 1),
-   kInvertingEncodedPixel      = (0x01 << kInvertingEncodingShift),
-};
-
-enum {
-   kHardwareCursorDescriptorMajorVersion       = 0x0001,
-   kHardwareCursorDescriptorMinorVersion       = 0x0000
-};
-
-struct IOHardwareCursorDescriptor {
-   UInt16              majorVersion;
-   UInt16              minorVersion;
-   UInt32              height;
-   UInt32              width;
-   UInt32              bitDepth;
-   UInt32              maskBitDepth;
-   UInt32              numColors;
-   UInt32 *            colorEncodings;
-   UInt32              flags;
-   UInt32              supportedSpecialEncodings;
-   UInt32              specialEncodings[16];
-};
-typedef struct IOHardwareCursorDescriptor IOHardwareCursorDescriptor;
-
-enum {
-   kHardwareCursorInfoMajorVersion             = 0x0001,
-   kHardwareCursorInfoMinorVersion             = 0x0000
-};
-
-struct IOHardwareCursorInfo {
-   UInt16              majorVersion;
-   UInt16              minorVersion;
-   UInt32              cursorHeight;
-   UInt32              cursorWidth;
-   // nil or big enough for hardware's max colors
-   IOColorEntry *      colorMap;
-   UInt8 *             hardwareCursorData;
-   UInt32              reserved[6];
-};
-typedef struct IOHardwareCursorInfo IOHardwareCursorInfo;
-
-// clock & data values
-enum {
-    kIODDCLow                          = 0,
-    kIODDCHigh                         = 1,
-    kIODDCTristate                     = 2
-};
-// ddcBlockType constants
-enum {
-    // EDID block type.
-    kIODDCBlockTypeEDID                        = 0
-};
-
-// ddcFlags constants
-enum {
-    // Force a new read of the EDID.
-    kIODDCForceRead                    = 0x00000001,
-};
-
-enum {
-    kDisabledInterruptState            = 0,
-    kEnabledInterruptState             = 1
-};
-
-typedef void (*IOFBInterruptProc)( OSObject * target, void * ref );
-
-
-typedef IOReturn (*IOFramebufferNotificationHandler)
-       (OSObject * self, void * ref,
-       IOFramebuffer * framebuffer, IOIndex event,
-       void * info);
-
-// IOFramebufferNotificationHandler events
-enum {
-    kIOFBNotifyDisplayModeWillChange   = 1,
-    kIOFBNotifyDisplayModeDidChange,
-    kIOFBNotifyWillSleep,
-    kIOFBNotifyDidWake,
-};
-
-
-struct StdFBShmem_t;
-class IOFramebufferUserClient;
-
-class IOFramebuffer : public IOGraphicsDevice
-{
-    friend class IOFramebufferUserClient;
-    friend class IOFramebufferSharedUserClient;
-    friend class IOGraphicsEngineClient;
-
-    OSDeclareDefaultStructors(IOFramebuffer)
-
-protected:
-/*! @struct ExpansionData
-    @discussion This structure will be used to expand the capablilties of this class in the future.
-    */    
-    struct ExpansionData { };
-
-/*! @var reserved
-    Reserved for future use.  (Internal use only)  */
-    ExpansionData * reserved;
-
-private:
-
-protected:
-    StdFBShmem_t *                     priv;
-    int                                        shmemClientVersion;
-    IOBufferMemoryDescriptor *         sharedCursor;
-
-    union {
-        struct {
-            /* Mapping tables used in cursor drawing to 5-5-5 displays. */
-            unsigned char *    _bm34To35SampleTable;
-            unsigned char *    _bm35To34SampleTable;
-            /* Mapping tables used in cursor drawing to 8-bit RGB displays. */
-            unsigned int *     _bm256To38SampleTable;
-            unsigned char *    _bm38To256SampleTable;
-        }                              t;
-        UInt8 *                                tables[ 4 ];
-    }                                  colorConvert;
-    
-    /* cursor blitting vars */
-    CursorBlitProc                     cursorBlitProc;
-    CursorRemoveProc                   cursorRemoveProc;
-
-    IOGSize                            maxCursorSize;
-    volatile unsigned char *           cursorImages[ kIOFBNumCursorFrames ];
-    volatile unsigned char *           cursorMasks[ kIOFBNumCursorFrames ];
-    volatile unsigned char *           cursorSave;
-    unsigned int                       white;
-
-    Point                              nextCursorLoc;
-    int                                        nextCursorFrame;
-    void *                             vblInterrupt;
-    semaphore_t                                vblSemaphore;
-
-    /* memory ranges */
-    volatile unsigned char *           frameBuffer;
-    unsigned int                       totalWidth;
-    unsigned int                       rowBytes;
-    unsigned int                       bytesPerPixel;
-
-    IOMemoryMap *                      vramMap;
-    IOByteCount                                vramMapOffset;
-    OSArray *                          userAccessRanges;
-    OSArray *                          engineAccessRanges;
-    IOBufferMemoryDescriptor  *        engineContext;
-    OSSet *                            fbNotifications;
-
-    class IOFramebufferUserClient *            serverConnect;
-    class IOFramebufferSharedUserClient *      sharedConnect;
-
-    bool                               opened;
-    bool                               closed;
-    bool                               clutValid;
-    bool                               currentMono;
-    bool                               needCursorService;
-    bool                               haveVBLService;
-    bool                               haveHWCursor;
-    bool                               hwCursorLoaded;
-
-    void *                             pmRef;
-
-    /* Reserved for future expansion. */
-    int                                _IOFramebuffer_reserved[7];
-
-private:
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 0);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 1);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 2);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 3);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 4);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 5);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 6);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 7);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 8);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 9);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 10);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 11);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 12);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 13);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 14);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 15);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 16);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 17);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 18);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 19);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 20);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 21);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 22);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 23);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 24);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 25);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 26);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 27);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 28);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 29);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 30);
-    OSMetaClassDeclareReservedUnused(IOFramebuffer, 31);
-
-
-public:
-    static void initialize();
-
-    virtual IOReturn powerStateWillChangeTo ( IOPMPowerFlags, unsigned long, IOService* );
-    virtual IOReturn powerStateDidChangeTo ( IOPMPowerFlags, unsigned long, IOService* );
-    virtual IOReturn setPowerState( unsigned long powerStateOrdinal, IOService * device);
-    virtual IOReturn newUserClient( task_t             owningTask,
-                                    void *             security_id,
-                                    UInt32             type,
-                                    IOUserClient **    handler );
-
-
-    virtual void hideCursor( void );
-    virtual void showCursor( Point * cursorLoc, int frame );
-    virtual void moveCursor( Point * cursorLoc, int frame );
-    // virtual
-    void resetCursor( void );
-
-    virtual void getVBLTime( AbsoluteTime * time, AbsoluteTime * delta );
-
-    virtual void getBoundingRect ( Bounds ** bounds );
-
-    virtual bool start( IOService * provider );
-
-    virtual IOReturn open( void );
-    
-    virtual void close( void );
-
-    virtual bool isConsoleDevice( void );
-
-    virtual IOReturn setupForCurrentConfig( void );
-
-    virtual bool serializeInfo( OSSerialize * s );
-    virtual bool setNumber( OSDictionary * dict, const char * key,
-                               UInt32 number );
-
-    IONotifier * addFramebufferNotification(
-            IOFramebufferNotificationHandler handler,
-            OSObject * self, void * ref);
-
-    virtual IODeviceMemory * getApertureRange( IOPixelAperture aperture ) = 0;
-    virtual IODeviceMemory * getVRAMRange( void );
-
-protected:
-
-    IOReturn deliverFramebufferNotification(
-                    IOIndex event, void * info = 0 );
-
-#ifdef IOFRAMEBUFFER_PRIVATE
-#include <IOKit/graphics/IOFramebufferPrivate.h>
-#endif
-
-public:
-
-    virtual IOReturn enableController( void );
-
-    // List of pixel formats supported, null separated,
-    //  doubly null terminated.
-    virtual const char * getPixelFormats( void ) = 0;
-
-    // Array of supported display modes
-    virtual IOItemCount getDisplayModeCount( void ) = 0;
-    virtual IOReturn getDisplayModes( IODisplayModeID * allDisplayModes ) = 0;
-
-    // Info about a display mode
-    virtual IOReturn getInformationForDisplayMode( IODisplayModeID displayMode,
-                    IODisplayModeInformation * info ) = 0;
-
-    // Mask of pixel formats available in mode and depth
-    virtual UInt64  getPixelFormatsForDisplayMode( IODisplayModeID displayMode,
-                    IOIndex depth ) = 0;
-
-    virtual IOReturn getPixelInformation(
-       IODisplayModeID displayMode, IOIndex depth,
-       IOPixelAperture aperture, IOPixelInformation * pixelInfo ) = 0;
-
-    // Framebuffer info
-
-    // Current display mode and depth
-    virtual IOReturn getCurrentDisplayMode( IODisplayModeID * displayMode,
-                            IOIndex * depth ) = 0;
-
-    // Set display mode and depth
-    virtual IOReturn setDisplayMode( IODisplayModeID displayMode,
-                            IOIndex depth );
-
-    // For pages
-    virtual IOReturn setApertureEnable( IOPixelAperture aperture,
-                   IOOptionBits enable );
-
-    // Display mode and depth for startup
-    virtual IOReturn setStartupDisplayMode( IODisplayModeID displayMode,
-                            IOIndex depth );
-    virtual IOReturn getStartupDisplayMode( IODisplayModeID * displayMode,
-                            IOIndex * depth );
-
-    //// CLUTs
-
-    virtual IOReturn setCLUTWithEntries( IOColorEntry * colors, UInt32 index,
-                UInt32 numEntries, IOOptionBits options );
-
-    //// Gamma
-
-    virtual IOReturn setGammaTable( UInt32 channelCount, UInt32 dataCount,
-                    UInt32 dataWidth, void * data );
-
-    //// Controller attributes
-
-    virtual IOReturn setAttribute( IOSelect attribute, UInt32 value );
-    virtual IOReturn getAttribute( IOSelect attribute, UInt32 * value );
-
-    //// Display mode timing information
-
-    virtual IOReturn getTimingInfoForDisplayMode(
-               IODisplayModeID displayMode, IOTimingInformation * info );
-
-    //// Detailed timing information
-
-    virtual IOReturn validateDetailedTiming(
-                    void * description, IOByteCount descripSize );
-
-    virtual IOReturn setDetailedTimings( OSArray * array );
-
-    //// Connections
-
-    virtual IOItemCount getConnectionCount( void );
-
-    virtual IOReturn setAttributeForConnection( IOIndex connectIndex,
-                    IOSelect attribute, UInt32 value );
-    virtual IOReturn getAttributeForConnection( IOIndex connectIndex,
-                    IOSelect attribute, UInt32  * value );
-
-    //// HW Cursors
-
-    virtual bool convertCursorImage( void * cursorImage,
-               IOHardwareCursorDescriptor * description,
-                IOHardwareCursorInfo * cursor );
-
-    virtual IOReturn setCursorImage( void * cursorImage );
-    virtual IOReturn setCursorState( SInt32 x, SInt32 y, bool visible );
-
-    //// SW Cursors
-
-    virtual void flushCursor( void );
-
-    // Apple sensing
-
-    virtual IOReturn getAppleSense( IOIndex connectIndex,
-            UInt32 * senseType,
-            UInt32 * primary,
-            UInt32 * extended,
-            UInt32 * displayType );
-
-    virtual IOReturn connectFlags( IOIndex connectIndex,
-                    IODisplayModeID displayMode, IOOptionBits * flags );
-
-    //// IOLowLevelDDCSense
-
-    virtual void setDDCClock( IOIndex connectIndex, UInt32 value );
-    virtual void setDDCData( IOIndex connectIndex, UInt32 value );
-    virtual bool readDDCClock( IOIndex connectIndex );
-    virtual bool readDDCData( IOIndex connectIndex );
-    virtual IOReturn enableDDCRaster( bool enable );
-
-    //// IOHighLevelDDCSense
-
-    virtual bool hasDDCConnect( IOIndex connectIndex );
-    virtual IOReturn getDDCBlock( IOIndex connectIndex, UInt32 blockNumber,
-                    IOSelect blockType, IOOptionBits options,
-                    UInt8 * data, IOByteCount * length );
-
-    //// Interrupts
-
-    // This is driven in the opposite direction to ndrv's ie. the base class
-    // registers a proc with the driver, and controls int generation with
-    // setInterruptState. Clients ask for serviceType.
-
-    virtual IOReturn registerForInterruptType( IOSelect interruptType,
-                   IOFBInterruptProc proc, OSObject * target, void * ref,
-                   void ** interruptRef );
-    virtual IOReturn unregisterInterrupt( void * interruptRef );
-    virtual IOReturn setInterruptState( void * interruptRef, UInt32 state );
-
-    virtual IOReturn getNotificationSemaphore( IOSelect interruptType,
-                                               semaphore_t * semaphore );
-};
-
-#endif /* ! _IOKIT_IOFRAMEBUFFER_H */