home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 January / pcwk_01_1999.iso / Tajnepp / MCLK093 / CIRRUS.H < prev    next >
C/C++ Source or Header  |  1997-04-02  |  3KB  |  105 lines

  1. //    Cirrus Logic header file cirrus.h
  2. //
  3. //    Contains class definitions for Cirrus Logic GD-54xx video boards
  4. //
  5. //
  6.  
  7. //    The following line denies outside code access to certain
  8. //    member functions of class vga.
  9. #define __cirrus_h
  10. #include "vga.h"
  11.  
  12.  
  13. class _cirrus : public vga    {        // Cirrus-Logic family GD542x/3x
  14. protected:
  15.     double get_mclkfreq( void )
  16.         {    return( _OSC * ( read_SR( 0x1F ) & 0x3F ) / 8.0 );    };
  17.         //    Get MCLK frequency from registers
  18.      uchar _SR06;    // Preserve original SR06 value
  19. public:
  20.     message _info( void );        //    Return silicon Revision#
  21.     void _mclk( int cmd );        //    MCLK programming function
  22. //    void _fxn1( int cmd );        //    MCLK timing (read-only)
  23.     _cirrus( vga_info info ) : vga( info )
  24.         {    _SR06 = read_CR( 0x06 );    // Preserve original SR06 value
  25.             write_SR( 0x06, 0x12 );    };    // Unlock Cirrus SVGA registers
  26.      ~_cirrus()
  27.          {    write_SR( 0x06, _SR06 );    };
  28. };
  29.  
  30.  
  31. class _GD5424 : public _cirrus    {    //Cirrus-Logic GD-5424 - 5428
  32. protected:
  33. public:
  34.     _GD5424( vga_info info ) : _cirrus( info )
  35.         {;};    //    Null Constructor
  36.     void _fxn2( int cmd );    //    IO RDY delay...local-bus only!
  37.     void _fxn3( int cmd );    //   RDY mem-write...local-bus only!
  38. //    void _fxn5( int cmd );    //   FIFO threshold...local-bus only!
  39. //    ^^^^ removed, because Cirrus BIOS reprograms threshold for every mode!
  40. };
  41.  
  42.  
  43. class _GD543x : public _GD5424 {        // Cirrus-Logic 5430
  44. protected:
  45. public:
  46.     _GD543x( vga_info info ) : _GD5424( info )
  47.         {;};    // Null constructor
  48.     void _fxn2( int cmd );    //    IO LRDY delay...VL-bus only!
  49.     void _fxn3( int cmd );    //   LRDY mem-read/write delays...VL-bus only!
  50. };
  51.  
  52.  
  53. class _GD5434 : public _GD543x {        // Cirrus-Logic GD-5434
  54. protected:
  55. public:
  56.     void _mclk( int cmd );        //    MCLK programming function
  57.     _GD5434( vga_info info ) : _GD543x( info )
  58.         {;};    // Null constructor
  59. };
  60.  
  61.  
  62. class _GD5436 : public _GD543x {        // Cirrus-Logic GD-5436, v084
  63. protected:
  64. public:
  65.     _GD5436( vga_info info ) : _GD543x( info )
  66.         {;};    // Null constructor
  67.     void _fxn1( int cmd );    //    Enable 8-MCLK EDO timing
  68.     void _fxn2( int cmd );    //    Single Cycle RAM refresh timing
  69. };
  70.  
  71.  
  72. class _GD5462 : public vga    {        // Cirrus-Logic family GD546x
  73.     // Note, all GD-546X are PCI-only devices
  74. protected:
  75.      uchar far *framebuffer;    // Pointer to VGA framebuffer at A000:0000
  76.     dword baseio;        // Store old mmio base address (PCICFG$10) 32-bit
  77.     word pci_command;    // Store old pci-command register (PCICFG$04)16-bit
  78.      uchar read_base0( uint offset );    // Read byte from { BA0 + offset }
  79.     void write_base0( uint offset, uchar value ); // Write byte to ...
  80.      uchar read_cbyte( const uchar index );
  81.          // Read PCI-configuration register, index 0-255
  82.      uchar write_cbyte( const uchar index, const uchar value );
  83.          // Write value -> PCI-config(index)
  84.     uchar get_mclkbyte( void );
  85.         //    Get MCLK frequency from registers
  86. public:
  87.     message _info( void );        //    Return silicon Revision#
  88.     void _mclk( int cmd );        //    MCLK programming function
  89.     pci_bios_type *pci_bios;        //  Needed for PCI autodetect routine
  90.     pci_device_handle_type pci_vga;    // Needed for PCI autodetect
  91.  
  92.      _GD5462( vga_info info );//    Constructor
  93.      ~_GD5462();    // Destructor
  94.  
  95. };
  96.  
  97. class _GD5464 : public _GD5462    {    // Cirrus-Logic GD-5464
  98.     // GD-5464 adds bus-master control
  99. protected:
  100. public:
  101.     void _fxn2( int cmd );        //    PCI Master Latency Timer
  102.      _GD5464( vga_info info ) : _GD5462( info )
  103.          {;};    // Null constructor
  104. };
  105.