437 lines
17 KiB
C
437 lines
17 KiB
C
/************************************************************************/
|
|
/* */
|
|
/* CVTVGA.H */
|
|
/* */
|
|
/* Copyright (c) 1992, ATI Technologies Inc. */
|
|
/************************************************************************/
|
|
|
|
/********************** PolyTron RCS Utilities
|
|
|
|
$Revision: 1.8 $
|
|
$Date: 06 Feb 1996 15:59:40 $
|
|
$Author: RWolff $
|
|
$Log: S:/source/wnt/ms11/miniport/archive/cvtvga.h_v $
|
|
*
|
|
* Rev 1.8 06 Feb 1996 15:59:40 RWolff
|
|
* For 1600x1200, deleted 52Hz table (never an official mode, offered
|
|
* only to allow a choice of refresh rates), updated 60Hz to match CRT
|
|
* parameters currently offered by install program, added 66Hz and 76Hz.
|
|
*
|
|
* Rev 1.7 19 Dec 1995 14:01:34 RWolff
|
|
* Added support for refresh rates up to 100Hz at 640x480, 800x600, and
|
|
* 1024x768 and 75Hz at 1280x1024. Updated mode tables to match those in
|
|
* the Mach64 Programmer's Guide.
|
|
*
|
|
* Rev 1.6 07 Sep 1995 16:43:06 RWolff
|
|
* Fixed 1280x1024 95Hz interlaced (listed as 47Hz in display applet) to
|
|
* eliminate "wrap" at top of screen. The tables in both the Mach 32
|
|
* and Mach 64 books contain the wrong values for vertical total and
|
|
* vertical sync start.
|
|
*
|
|
* Rev 1.5 20 Jul 1995 17:55:48 mgrubac
|
|
* Added support for VDIF files
|
|
*
|
|
* Rev 1.4 10 Apr 1995 15:57:36 RWOLFF
|
|
* Added prototype for routine to replace BookValues[] entries where the
|
|
* Mach 64 and Mach 8/Mach 32 need different CRT parameters.
|
|
*
|
|
* Rev 1.3 31 Aug 1994 16:23:08 RWOLFF
|
|
* Added support for 1152x864 and 1600x1200 "canned" mode tables.
|
|
*
|
|
* Rev 1.2 19 Aug 1994 17:10:22 RWOLFF
|
|
* Added support for non-standard pixel clock generators.
|
|
*
|
|
* Rev 1.1 12 May 1994 11:11:02 RWOLFF
|
|
* Added refresh rate to st_book_data structure, re-ordered list of book
|
|
* mode tables to allow a single range of indices when highest noninterlaced
|
|
* refresh rates at a given resolution are ignored.
|
|
*
|
|
* Rev 1.0 31 Jan 1994 11:40:38 RWOLFF
|
|
* Initial revision.
|
|
|
|
Rev 1.1 08 Oct 1993 11:04:50 RWOLFF
|
|
Removed prototype for unused "fall back to 56Hz" function for 800x600.
|
|
|
|
Rev 1.0 16 Aug 1993 13:30:00 Robert_Wolff
|
|
Initial revision.
|
|
|
|
Rev 1.8 08 Apr 1993 16:44:54 RWOLFF
|
|
Revision level as checked in at Microsoft.
|
|
|
|
Rev 1.6 25 Mar 1993 11:13:38 RWOLFF
|
|
Brought function prototype into sync with the function definition
|
|
to eliminate compile-time warnings.
|
|
|
|
Rev 1.5 08 Mar 1993 19:28:18 BRADES
|
|
submit to MS NT
|
|
|
|
Rev 1.4 02 Dec 1992 17:29:56 Robert_Wolff
|
|
Added prototype for FallBack800to56().
|
|
|
|
Rev 1.3 27 Nov 1992 15:18:20 STEPHEN
|
|
No change.
|
|
|
|
Rev 1.2 17 Nov 1992 17:25:34 Robert_Wolff
|
|
Fixed gathering of CRT parameters for 68800 card with minimal
|
|
install (EEPROM blank, then predefined monitor type selected).
|
|
|
|
Rev 1.1 12 Nov 1992 16:44:26 Robert_Wolff
|
|
Same file is now used for both Windows NT driver and VIDEO.EXE
|
|
test program. XlateVgaTable() no longer depends on the global
|
|
variable classMACH32.
|
|
|
|
Rev 1.1 09 Oct 1992 15:01:24 Robert_Wolff
|
|
Added fields for DISP_CNTL and CLOCK_SEL values.
|
|
|
|
Rev 1.0 01 Oct 1992 15:32:38 Robert_Wolff
|
|
Initial revision.
|
|
|
|
|
|
End of PolyTron RCS section *****************/
|
|
|
|
|
|
#if defined(DOC)
|
|
CVTVGA.H - ATI card VGA to 8514 format translation
|
|
|
|
DESCRIPTION:
|
|
This include file contains definitions specific to the
|
|
VGA to 8514 format EEPROM translation module of the program VIDEO.EXE
|
|
|
|
Included are structure definitions, function prototypes
|
|
and general definitions
|
|
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Bit 8 of CRT parameter table entry 0 is set if the table is in
|
|
* 8514 format and clear if the table is in VGA format.
|
|
*/
|
|
#define FMT_8514 0x0100
|
|
|
|
/*
|
|
* Bit 6 of CRT parameter table entry 0 is set if all parameters
|
|
* are to be read from the EEPROM and clear if only sync polarities
|
|
* are to be used.
|
|
*/
|
|
#define CRTC_USAGE 0x0040
|
|
|
|
/*
|
|
* Bit flags to recognize which vertical scan rate is used at
|
|
* a given resolution. The name for the constant is in the form
|
|
* M<horizontal resolution>F<vertical scan frequency), with the
|
|
* "M" standing for (M)ode.
|
|
*/
|
|
#define M640F72 0x0001
|
|
|
|
#define M800F72 0x0020
|
|
#define M800F70 0x0010
|
|
#define M800F60 0x0008
|
|
#define M800F56 0x0004
|
|
#define M800F89 0x0002
|
|
#define M800F95 0x0001
|
|
|
|
#define M1024F66 0x0010
|
|
#define M1024F72 0x0008
|
|
#define M1024F70 0x0004
|
|
#define M1024F60 0x0002
|
|
#define M1024F87 0x0001
|
|
|
|
#define M1280F95 0x0002
|
|
#define M1280F87 0x0001
|
|
|
|
/*
|
|
* There are 3 1120x750 modes which use the same flag bit. Assume
|
|
* that the 70Hz noninterlaced mode was selected.
|
|
*/
|
|
#define M1120F70 0x0001
|
|
|
|
/*
|
|
* In some installations, the display parameters are not stored
|
|
* in the EEPROM. Instead, they are read from a table corresponding
|
|
* to Appendix D of the Programmer's Guide to the Mach 32 Registers.
|
|
*
|
|
* The entries in our copy of the table are arranged in ascending order
|
|
* of horizontal resolution, with entries having the same horizontal
|
|
* resolution sorted from worst to best (interlaced modes in increasing
|
|
* order of vertical scan frequency, followed by noninterlaced modes in
|
|
* ascending order of vertical scan frequency.
|
|
*
|
|
* The name for the constant is in the form
|
|
* B<horizontal resolution>F<vertical scan frequency>, with the
|
|
* "B" standing for (B)ook.
|
|
*/
|
|
#define B640F60 0
|
|
#define B640F72 1
|
|
#define B640F75 2
|
|
#define B640F90 3
|
|
#define B640F100 4
|
|
#define B800F89 5
|
|
#define B800F95 6
|
|
#define B800F56 7
|
|
#define B800F60 8
|
|
#define B800F70 9
|
|
#define B800F72 10
|
|
#define B800F75 11
|
|
#define B800F90 12
|
|
#define B800F100 13
|
|
#define B1024F87 14
|
|
#define B1024F60 15
|
|
#define B1024F66 16
|
|
#define B1024F70 17
|
|
#define B1024F72 18
|
|
#define B1024F75 19
|
|
#define B1024F90 20
|
|
#define B1024F100 21
|
|
#define B1120F70 22
|
|
#define B1152F87 23
|
|
#define B1152F95 24
|
|
#define B1152F60 25
|
|
#define B1152F70 26
|
|
#define B1152F75 27
|
|
#define B1152F80 28
|
|
#define B1280F87 29
|
|
#define B1280F95 30
|
|
#define B1280F60 31
|
|
#define B1280F70 32
|
|
#define B1280F74 33
|
|
#define B1280F75 34
|
|
#define B1600F60 35
|
|
#define B1600F66 36
|
|
#define B1600F76 37
|
|
|
|
/*
|
|
* VGA parameter table entry to use when translating into 8514 format.
|
|
* The value NO_TBL_ENTRY will cause the VGA to 8514 format translation
|
|
* routine to fail gracefully if we have run into an EEPROM CRT parameter
|
|
* table in VGA format for which we have no entry in the VGA parameter table.
|
|
*
|
|
* The entries in the VGA parameter table are arranged in ascending order
|
|
* of horizontal resolution, with entries having the same horizontal
|
|
* resolution sorted in ascending order of vertical scan frequency. No
|
|
* distinction is made between interlaced and noninterlaced modes.
|
|
*
|
|
* The name for the constant is in the form
|
|
* T<horizontal resolution>F<vertical scan frequency>, with the
|
|
* "T" standing for (T)able.
|
|
*/
|
|
#define T640F72 0
|
|
|
|
#define T800F72 4
|
|
#define T800F70 3
|
|
#define T800F60 2
|
|
#define T800F56 1
|
|
#define T800F89 5
|
|
|
|
#define T1024F72 8
|
|
#define T1024F70 7
|
|
#define T1024F60 6
|
|
#define T1024F87 9
|
|
|
|
/*
|
|
* Some resolution/vertical scan rate combinations (e.g. IBM default
|
|
* 640x480) did not have VGA parameter tables in either VGAP$PS2.ASM
|
|
* or VGAP$68A.MAC. For these modes, XlateVgaTable() will return
|
|
* the parameters in Appendix D of the Programmer's Guide to the
|
|
* Mach 32 Registers, since calculating the values for the mode table
|
|
* requires a VGA parameter table.
|
|
*
|
|
* If we encounter one of these modes (identified by its (T)able
|
|
* value being greater than or equal to USE_BOOK_VALUE), handle
|
|
* it the same way we deal with modes whose parameters are not
|
|
* stored in the EEPROM.
|
|
*/
|
|
#define NO_TBL_ENTRY -1
|
|
#define USE_BOOK_VALUE 1000
|
|
|
|
#define T640F60 USE_BOOK_VALUE+B640F60
|
|
#define T800F95 USE_BOOK_VALUE+B800F95
|
|
#define T1024F66 USE_BOOK_VALUE+B1024F66
|
|
#define T1280F87 USE_BOOK_VALUE+B1280F87
|
|
#define T1280F95 USE_BOOK_VALUE+B1280F95
|
|
#define T1120F70 USE_BOOK_VALUE+B1120F70
|
|
|
|
/*
|
|
* Value returned in overscan words if no table entry was found.
|
|
* This value was chosen because it will stand out when the overscan
|
|
* words are printed out as 4 hex digits (as is done by VIDEO.EXE).
|
|
*/
|
|
#define INVALID_WARNING 0x0DEAD
|
|
|
|
/*
|
|
* Bits which are set in pmode->control when sync polarity is negative,
|
|
* and mask which must be ORed with sync width during VGA to 8514 conversion
|
|
* if the sync is negative.
|
|
*/
|
|
#define HSYNC_BIT 0x4000
|
|
#define VSYNC_BIT 0x8000
|
|
#define NEG_SYNC_FACTOR 0x0020
|
|
|
|
/*
|
|
* Mask for bit which is set in st_vga_data.MiscParms
|
|
* for interlaced modes.
|
|
*/
|
|
#define INTERL 0x040
|
|
|
|
/*
|
|
* Mask for bit which is set in st_vga_data.Mode
|
|
* if word mode is enabled.
|
|
*/
|
|
#define WORD_MODE 0x004
|
|
|
|
/*
|
|
* Format of VGA parameter table. This structure contains only those values
|
|
* from the mode tables in VGAROM\VGAP$68A.MAC and VGAROM\VGAP$PS2.ASM which
|
|
* are used in translating EEPROM data from VGA to 8514 format (original
|
|
* tables are 64 bytes).
|
|
*
|
|
* The offsets listed in the comments are the offsets of the corresponding
|
|
* bytes in the assembler tables.
|
|
*/
|
|
struct st_vga_data
|
|
{
|
|
unsigned char Stretch; /* Horizontal values stretched if 128 here, offset 0 */
|
|
unsigned char MiscParms; /* Miscelaneous parameters, offset 7 */
|
|
unsigned char DisplayWidth; /* Offset 11 */
|
|
unsigned char DisplayHgt; /* Offset 28 */
|
|
unsigned char Mode; /* Contains word mode flag, offset 33 */
|
|
|
|
/*
|
|
* Values for CLOCK_SEL, DISP_CNTL, and ClockFreq taken from the
|
|
* Programmer's Guide to the Mach 32 Registers. These values are
|
|
* not stored as a combination of the CRT registers when the
|
|
* EEPROM data is in VGA format.
|
|
*/
|
|
unsigned short ClockSel;
|
|
unsigned short DispCntl;
|
|
unsigned long ClockFreq; /* Pixel clock frequency in Hertz */
|
|
};
|
|
|
|
/*
|
|
* Data structure to hold mode parameters as quoted in Appendix D
|
|
* of the Programmer's Guide to the Mach 32 Registers.
|
|
*/
|
|
struct st_book_data
|
|
{
|
|
unsigned char HTotal; /* Horizontal total */
|
|
unsigned char HDisp; /* Horizontal displayed */
|
|
unsigned char HSyncStrt; /* Horizontal sync start */
|
|
unsigned char HSyncWid; /* Horizontal sync width */
|
|
unsigned short VTotal; /* Vertical total */
|
|
unsigned short VDisp; /* Vertical displayed */
|
|
unsigned short VSyncStrt; /* Vertical sync start */
|
|
unsigned char VSyncWid; /* Vertical sync width */
|
|
unsigned char DispCntl; /* Display control */
|
|
unsigned long ClockFreq; /* Pixel clock frequency, in Hertz */
|
|
unsigned short ClockSel; /* Clock Select */
|
|
unsigned short Refresh; /* Refresh rate */
|
|
};
|
|
|
|
/*
|
|
* Data structure which eases setting one particular byte of a
|
|
* data word. If foo is a variable of type SplitWord, then a 16 bit
|
|
* value can be set using foo.word, or the high and low bytes
|
|
* can be accessed independently by using foo.byte.high and
|
|
* foo.byte.low.
|
|
*/
|
|
struct TwoBytes
|
|
{
|
|
unsigned char low;
|
|
unsigned char high;
|
|
};
|
|
|
|
union SplitWord
|
|
{
|
|
unsigned short word;
|
|
struct TwoBytes byte;
|
|
};
|
|
|
|
/*
|
|
* Function to translate a CRT parameter table in VGA format
|
|
* into 8514 format and fill in the mode table.
|
|
*/
|
|
extern short XlateVgaTable(PVOID HwDeviceExtension, short TableOffset,
|
|
struct st_mode_table *pmode, short VgaTblEntry,
|
|
short BookTblEntry, struct st_eeprom_data *ee,
|
|
BOOL IsMach32);
|
|
|
|
/*
|
|
* Function to fill in a CRT parameter table using values from
|
|
* Appendix D of the Programmer's Guide to the Mach 32 Registers,
|
|
* rather than the EEPROM contents. This is done when the
|
|
* bit flag for "use stored parameters" is clear.
|
|
*/
|
|
extern void BookVgaTable(short VgaTblEntry, struct st_mode_table *pmode);
|
|
|
|
/*
|
|
* Function to replace "canned" CRT tables with Mach 64 versions
|
|
* in cases where the Mach 64 needs a pixel clock value which the
|
|
* Mach 8 and Mach 32 can't generate.
|
|
*/
|
|
extern void SetMach64Tables(void);
|
|
|
|
/*
|
|
* Array of parameters taken from Appendix D of the
|
|
* Programmer's Guide to the Mach 32 Registers.
|
|
*
|
|
* For interlaced modes, the refresh rate field contains the
|
|
* frame rate, not the vertical scan frequency.
|
|
*/
|
|
#ifdef INCLUDE_CVTVGA
|
|
struct st_book_data BookValues[B1600F76-B640F60+1] =
|
|
{
|
|
{0x063, 0x04F, 0x052, 0x02C, 0x0418, 0x03BF, 0x03D2, 0x022, 0x023, 25175000L, 0x0800, 60}, /* 640x480 60Hz NI */
|
|
{0x069, 0x04F, 0x052, 0x025, 0x040B, 0x03BF, 0x03D0, 0x023, 0x023, 32000000L, 0x0800, 72}, /* 640x480 72Hz NI */
|
|
{0x068, 0x04F, 0x051, 0x028, 0x03E3, 0x03BF, 0x03C0, 0x023, 0x023, 31500000L, 0x0800, 75}, /* 640x480 75Hz NI */
|
|
{0x067, 0x04F, 0x053, 0x025, 0x0428, 0x03BF, 0x03F0, 0x02E, 0x023, 39910000L, 0x0800, 90}, /* 640x480 90Hz NI */
|
|
{0x069, 0x04F, 0x057, 0x030, 0x0422, 0x03BF, 0x03E9, 0x02C, 0x023, 44900000L, 0x0800, 100}, /* 640x480 100Hz NI */
|
|
|
|
{0x080, 0x063, 0x065, 0x004, 0x057D, 0x04AB, 0x04C2, 0x02C, 0x033, 32500000L, 0x0800, 44}, /* 800x600 89Hz I */
|
|
{0x084, 0x063, 0x06D, 0x010, 0x057C, 0x04AB, 0x04C2, 0x00C, 0x033, 36000000L, 0x0800, 47}, /* 800x600 95Hz I */
|
|
{0x07F, 0x063, 0x066, 0x009, 0x04E0, 0x04AB, 0x04B0, 0x002, 0x023, 36000000L, 0x0800, 56}, /* 800x600 56Hz NI */
|
|
{0x083, 0x063, 0x068, 0x010, 0x04E3, 0x04AB, 0x04B0, 0x004, 0x023, 40000000L, 0x0800, 60}, /* 800x600 60Hz NI */
|
|
{0x07D, 0x063, 0x066, 0x012, 0x04F3, 0x04AB, 0x04C0, 0x02C, 0x023, 44900000L, 0x0800, 70}, /* 800x600 70Hz NI */
|
|
{0x081, 0x063, 0x06A, 0x00F, 0x0537, 0x04AB, 0x04F8, 0x006, 0x023, 50000000L, 0x0800, 72}, /* 800x600 72Hz NI */
|
|
{0x083, 0x063, 0x065, 0x00A, 0x04E0, 0x04AB, 0x04B0, 0x003, 0x023, 49500000L, 0x0800, 75}, /* 800x600 75Hz NI */
|
|
{0x07B, 0x063, 0x063, 0x008, 0x04F2, 0x04AB, 0x04BB, 0x00B, 0x023, 56640000L, 0x0800, 90}, /* 800x600 90Hz NI */
|
|
{0x086, 0x063, 0x067, 0x008, 0x04E0, 0x04AB, 0x04BA, 0x004, 0x023, 67500000L, 0x0800, 100}, /* 800x600 75Hz NI */
|
|
|
|
{0x09D, 0x07F, 0x081, 0x016, 0x0660, 0x05FF, 0x0600, 0x008, 0x033, 44900000L, 0x0800, 43}, /* 1024x768 87Hz I */
|
|
{0x0A7, 0x07F, 0x082, 0x031, 0x0649, 0x05FF, 0x0602, 0x026, 0x023, 65000000L, 0x0800, 60}, /* 1024x768 60Hz NI */
|
|
{0x0AD, 0x07F, 0x085, 0x016, 0x065B, 0x05FF, 0x060B, 0x004, 0x023, 75000000L, 0x0800, 66}, /* 1024x768 66Hz NI */
|
|
{0x0A5, 0x07F, 0x082, 0x031, 0x0649, 0x05FF, 0x0602, 0x026, 0x023, 75000000L, 0x0800, 70}, /* 1024x768 70Hz NI */
|
|
{0x0A0, 0x07F, 0x082, 0x031, 0x0649, 0x05FF, 0x0602, 0x026, 0x023, 75000000L, 0x0800, 72}, /* 1024x768 72Hz NI */
|
|
{0x0A3, 0x07F, 0x081, 0x00C, 0x063B, 0x05FF, 0x0600, 0x003, 0x023, 78750000L, 0x0800, 75}, /* 1024x768 75Hz NI */
|
|
{0x0A3, 0x07F, 0x07C, 0x02C, 0x0698, 0x05FF, 0x0628, 0x02F, 0x023, 100000000L, 0x0800, 90}, /* 1024x768 90Hz NI */
|
|
{0x0AD, 0x07F, 0x081, 0x02B, 0x062B, 0x05FF, 0x05FF, 0x028, 0x023, 110000000L, 0x0800, 100}, /* 1024x768 100Hz NI */
|
|
|
|
{0x0AE, 0x08B, 0x095, 0x00F, 0x0659, 0x05DD, 0x05FC, 0x00A, 0x023, 80000000L, 0x0800, 70}, /* 1120x750 70Hz NI */
|
|
|
|
{0x0B0, 0x08F, 0x097, 0x010, 0x083E, 0x06BF, 0x075D, 0x009, 0x033, 65000000L, 0x0800, 43}, /* 1152x864 87Hz I */
|
|
{0x0B4, 0x08F, 0x09A, 0x010, 0x0766, 0x06BF, 0x06FD, 0x009, 0x033, 65000000L, 0x0800, 47}, /* 1152x864 95Hz I */
|
|
{0x0B5, 0x08F, 0x097, 0x00E, 0x0727, 0x06BF, 0x06CD, 0x005, 0x023, 80000000L, 0x0800, 60}, /* 1152x864 60Hz NI */
|
|
{0x0BC, 0x08F, 0x093, 0x013, 0x0764, 0x06BF, 0x06DC, 0x00B, 0x023, 100000000L, 0x0800, 70}, /* 1152x864 70Hz NI */
|
|
{0x0B6, 0x08F, 0x092, 0x012, 0x07D5, 0x06BF, 0x071C, 0x008, 0x023, 110000000L, 0x0800, 75}, /* 1152x864 75Hz NI */
|
|
{0x0B3, 0x08F, 0x090, 0x00E, 0x077D, 0x06BF, 0x06FD, 0x007, 0x023, 110000000L, 0x0800, 80}, /* 1152x864 80Hz NI */
|
|
|
|
{0x0C7, 0x09F, 0x0A9, 0x00A, 0x08F8, 0x07FF, 0x0861, 0x00A, 0x033, 80000000L, 0x0800, 43}, /* 1280x1024 87Hz I */
|
|
{0x0C7, 0x09F, 0x0A9, 0x00A, 0x0842, 0x07FF, 0x0800, 0x00A, 0x033, 80000000L, 0x0800, 47}, /* 1280x1024 95Hz I */
|
|
{0x0D6, 0x09F, 0x0A9, 0x02E, 0x0852, 0x07FF, 0x0800, 0x025, 0x023, 110000000L, 0x0800 | CLOCK_SEL_MUX, 60}, /* 1280x1024 60Hz NI */
|
|
{0x0D2, 0x09F, 0x0A9, 0x00E, 0x0851, 0x07FF, 0x0800, 0x005, 0x023, 126000000L, 0x0800 | CLOCK_SEL_MUX, 70}, /* 1280x1024 70Hz NI */
|
|
{0x0D5, 0x09F, 0x0A3, 0x012, 0x084B, 0x07FF, 0x07FF, 0x01E, 0x023, 135000000L, 0x0800 | CLOCK_SEL_MUX, 74}, /* 1280x1024 74Hz NI */
|
|
{0x0D2, 0x09F, 0x0A1, 0x012, 0x0851, 0x07FF, 0x0800, 0x003, 0x023, 135000000L, 0x0800 | CLOCK_SEL_MUX, 75}, /* 1280x1024 75Hz NI */
|
|
|
|
/*
|
|
* Although the horizontal CRT parameters are stored in 8-bit fields,
|
|
* some refresh rates at 1600x1200 result in a 9-bit value. In these
|
|
* cases, we store only the lower-order 8 bits, and the BIOS will
|
|
* resolve the matter when we set the mode.
|
|
*/
|
|
{0x0FF, 0x0C7, 0x0CB, 0x034, 0x09E9, 0x095F, 0x0971, 0x028, 0x023, 156000000L, 0x0800, 60}, /* 1600x1200 60Hz NI */
|
|
{0x003, 0x0C7, 0x0CC, 0x031, 0x09C8, 0x095F, 0x0962, 0x023, 0x023, 172000000L, 0x0800, 66}, /* 1600x1200 66Hz NI */
|
|
{0x003, 0x0C7, 0x0CC, 0x031, 0x09C8, 0x095F, 0x0962, 0x025, 0x023, 198000000L, 0x0800, 76} /* 1600x1200 76Hz NI */
|
|
};
|
|
#else
|
|
extern struct st_book_data BookValues[B1600F76-B640F60+1];
|
|
#endif
|