home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Headers / driverkit / IOFrameBufferDisplay.h < prev    next >
Text File  |  1996-03-27  |  5KB  |  148 lines

  1. /*     Copyright (c) 1992-96 NeXT Software, Inc.  All rights reserved. 
  2.  *
  3.  * IOFrameBufferDisplay.h - Standard frame buffer display driver class.
  4.  *
  5.  *
  6.  * HISTORY
  7.  * 24 Oct 95    Rakesh Dubey
  8.  *      Added mode change feature. 
  9.  * 01 Sep 92    Joe Pasqua
  10.  *      Created. 
  11.  */
  12.  
  13. /* Notes:
  14.  * This module defines an abstract superclass for "standard" (linear)
  15.  * framebuffers.
  16.  */
  17.  
  18. #ifndef __IOFRAMEBUFFERDISPLAY_H__
  19. #define __IOFRAMEBUFFERDISPLAY_H__
  20.  
  21. #import <driverkit/IODisplay.h>
  22.  
  23. @interface IOFrameBufferDisplay:IODisplay
  24. {
  25. @private
  26.     void *priv;
  27.     /* Mapping tables used in cursor drawing to 5-5-5 displays. */
  28.     unsigned char *_bm34To35SampleTable;
  29.     unsigned char *_bm35To34SampleTable;
  30.  
  31.     /* Mapping tables used in cursor drawing to 8-bit RGB displays. */
  32.     unsigned int *_bm256To38SampleTable;
  33.     unsigned char *_bm38To256SampleTable;
  34.  
  35.     /* Used for dynamic mode changes */
  36.     int _currentDisplayMode;
  37.     int    _pendingDisplayMode;
  38.     
  39.     /* Modes supported by hardware */
  40.     int _displayModeCount;
  41.     IODisplayInfo *_displayModes;
  42.     
  43.     /* Reserved for future expansion. */
  44.     int _IOFrameBufferDisplay_reserved[2];
  45. }
  46.  
  47. /*
  48.  * Put the display into linear framebuffer mode. This typically happens when
  49.  * the window server starts running or the display mode is switched. To
  50.  * simplify mode switching, revertToVGAMode is called first. This method is
  51.  * implemented by subclasses in a device specific way. 
  52.  */
  53. - (void)enterLinearMode;
  54.  
  55. /*
  56.  * Get the device out of whatever advanced linear mode it was using and back
  57.  * into a state where it can be used as a standard VGA device. This method is
  58.  * implemented by subclasses in a device specific way. 
  59.  */
  60. - (void)revertToVGAMode;
  61.  
  62. /*
  63.  * Look up the physical memory location for this device instance and map it
  64.  * into VM for use by the device driver. If problems occur, the method
  65.  * returns (vm_address_t)0. If `addr' is not 0, then it is used as the
  66.  * physical memory address and `length' is used as the length. 
  67.  */
  68. - (vm_address_t)mapFrameBufferAtPhysicalAddress:(unsigned int)addr
  69.      length:(int)length;
  70.  
  71. /*
  72.  * Choose a mode from the list `modeList' (containing `count' modes) based on
  73.  * the value of the `DisplayMode' key in the device's config table.  If
  74.  * `isValid' is nonzero, each element specifies whether or not the
  75.  * corresponding mode is valid. If you pass a non-NULL string as displayMode
  76.  * it will use that instead of picking that from from the config table. 
  77.  */
  78. - (int)selectMode:(const IODisplayInfo *)modeList count:(int)count
  79.     valid:(const BOOL *)isValid modeString:(const char *)displayMode;
  80.  
  81. - (int)selectMode:(const IODisplayInfo *)modeList count:(int)count
  82.     valid:(const BOOL *)isValid;
  83.  
  84. /*
  85.  * Equivalent to the above with `isValid' set to zero. 
  86.  */
  87. - (int)selectMode:(const IODisplayInfo *)modeList count:(int)count;
  88.  
  89. /* IODevice methods reimplemented by this class. */
  90.  
  91. + (BOOL)probe:deviceDescription;
  92.  
  93. - initFromDeviceDescription:deviceDescription;
  94.  
  95. - (IOReturn)getIntValues        : (unsigned *)parameterArray
  96.                forParameter : (IOParameterName)parameterName
  97.                       count : (unsigned *)count;    // in/out
  98.  
  99. - (IOReturn)setIntValues        : (unsigned *)parameterArray
  100.                forParameter : (IOParameterName)parameterName
  101.                       count : (unsigned)count;
  102.  
  103. - (IOReturn)setCharValues        : (unsigned char *)parameterArray
  104.                forParameter : (IOParameterName)parameterName
  105.                       count : (unsigned)count;
  106.  
  107. - setTransferTable:(const unsigned int *)table count:(int)count;
  108.  
  109. /* 'IOScreenEvents' protocol methods reimplemented by this class. */
  110.  
  111. - hideCursor: (int)token;
  112.  
  113. - moveCursor:(Point*)cursorLoc frame:(int)frame token:(int)t;
  114.  
  115. - showCursor:(Point*)cursorLoc frame:(int)frame token:(int)t;
  116.  
  117. /* NOTE: Subclasses must override setBrightness and implement appropriately. */
  118. - setBrightness:(int)level token:(int)t;
  119.  
  120. /*
  121.  * Superclass will choose the next display mode by invoking this method. It
  122.  * will actually enter the new mode by calling enterLinearMode at a later
  123.  * time. 
  124.  */
  125. - (BOOL)setPendingDisplayMode:(int)displayMode;
  126. - (int)pendingDisplayMode;
  127.  
  128. /*
  129.  * The superclass will use the modeList passed in selectMode:.. call. If
  130.  * desired, the subclass can override this behavior by implementing these two
  131.  * methods. 
  132.  */
  133. - (unsigned int)displayModeCount;        /* total number of modes */
  134. - (IODisplayInfo *)displayModes;        /* array of possible modes */
  135.  
  136. /*
  137.  * Subclass should return appropriate values. 
  138.  */
  139. - (unsigned int)displayMemorySize;        /* display memory in bytes */
  140. - (unsigned int)ramdacSpeed;            /* RAMDAC speed in Hz */
  141.  
  142. @end
  143.  
  144. #define IO_R_UNDEFINED_MODE        (-750)        // no such mode
  145. #define IO_R_FAILED_TO_SET_MODE        (-751)        // mode change failed
  146.  
  147. #endif    /* __IOFRAMEBUFFERDISPLAY_H__ */
  148.