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

  1. //    Matrox Graphics header file matrox.h
  2. //
  3. //    Contains class definitions for Matrox Mystique (1064SG) chipsets
  4. //
  5. //
  6.  
  7. //    The following line denies outside code access to certain
  8. //    member functions of class vga.
  9. #define __matrox_h
  10. #include "vga.h"
  11.  
  12. class _Mystique : public vga    {        // Matrox 1064SG
  13.     // Note, all Mystique (1064SG) are PCI-only devices
  14. protected:
  15.      uchar read_base0( uint offset );    // Read byte from { BA0 + offset }
  16.     void write_base0( uint offset, uchar value ); // Write byte to ...
  17.      uchar read_cbyte( const uchar index );
  18.          // Read PCI-configuration register, index 0-255
  19.      uchar write_cbyte( const uchar index, const uchar value );
  20.          // Write value -> PCI-config(index)
  21.      uchar read_indirect( const uint index );
  22.          // Read Matrox MMIO (indirect) registers,
  23.         // "index" = byte address offset ($0000 - $3FFF) from MGABASE1
  24.      uchar write_indirect( const uint index, const uchar value );
  25.          // Write value -> MMIO (MGABASE1 + index ),
  26.           // again, "index" = byte address ($0000 -$3FFF) from MGABASE1
  27.      uchar read_x( const uchar index );
  28.          // Read Matrox "X"-indexed registers, through the port at
  29.         // MMIO location : MGABASE1 + $3C0A
  30.      uchar write_x( const uchar index, const uchar value );
  31.          // Write value -> X-DATAreg ),
  32.  
  33.      union {
  34.          struct
  35.           {
  36.               uchar b0;
  37.                uchar b1;
  38.           } b;    // data byte values
  39.  
  40.           struct
  41.           {
  42.             unsigned reserved1:2;
  43.                unsigned index:12;
  44.                unsigned reserved2:2;
  45.           } name;    // Named bitfields
  46.      } mga_index;    // 16-bit register
  47.  
  48.      void mga_index_load( void )    // Load MGA registers into object data bytes
  49.      {
  50.         mga_index.b.b0 = read_cbyte( 0x44 );    // Read bits 7-0
  51.         mga_index.b.b1 = read_cbyte( 0x45 );    // Read bits 15-8
  52.      };
  53.  
  54.      void mga_index_store( void )    // Store object contents to MGA register
  55.      {
  56.         write_cbyte( 0x44, mga_index.b.b0 );    // Write bits 7-0
  57.         write_cbyte( 0x45, mga_index.b.b1 );    // Write bits 15-8
  58.      };
  59.  
  60.      void set_sysclkdis( uchar bit );    // Disable system-clock output
  61.          // 1 = DISABLE OUTPUT, 0 = ENABLE OUTPUT
  62.      void set_sysclksl( uchar bits );    // Select system-clock source
  63.  
  64.      double fvco( uchar n, uchar m )    // Calculate FVCO frequency
  65.         {    return ( _OSC * ( n + 1.0 ) ) / ( m + 1.0 );    };
  66.  
  67. public:
  68.     message _info( void );        //    Return silicon Revision#
  69.     void _mclk( int cmd );        //    MCLK programming function
  70.     void _fxn1( int cmd );        //    Memory control wait-state
  71.     void _fxn2( int cmd );        //    GCLK/MCLK divider control
  72.     pci_bios_type *pci_bios;        //  Needed for PCI autodetect routine
  73.     pci_device_handle_type pci_vga;    // Needed for PCI autodetect
  74.  
  75.      _Mystique( vga_info info );//    Constructor
  76.      ~_Mystique();    // Destructor
  77.  
  78. };
  79.