1841 lines
64 KiB
C++
1841 lines
64 KiB
C++
/*-*-c++-*-*/
|
|
/*
|
|
** Copyright (c) 1997, 3Dfx Interactive, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of 3Dfx Interactive, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
**
|
|
**
|
|
** $Revision: 62 $
|
|
** $Date: 7/24/98 1:38p $
|
|
**
|
|
*/
|
|
|
|
#ifndef __SST1INIT_H__
|
|
#define __SST1INIT_H__
|
|
|
|
/*
|
|
** Copyright (c) 1996, 3Dfx Interactive, Inc.
|
|
** All Rights Reserved.
|
|
**
|
|
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.;
|
|
** the contents of this file may not be disclosed to third parties, copied or
|
|
** duplicated in any form, in whole or in part, without the prior written
|
|
** permission of 3Dfx Interactive, Inc.
|
|
**
|
|
** RESTRICTED RIGHTS LEGEND:
|
|
** Use, duplication or disclosure by the Government is subject to restrictions
|
|
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
|
|
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
|
|
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
|
|
** rights reserved under the Copyright Laws of the United States.
|
|
**
|
|
** $Revision: 62 $
|
|
** $Date: 7/24/98 1:38p $
|
|
**
|
|
** SST-1 Initialization routine protypes
|
|
**
|
|
** If all initialization routines are called, it is assumed they are called
|
|
** in the following order:
|
|
** 1. sst1InitMapBoard();
|
|
** 2. sst1InitRegisters();
|
|
** 3. sst1InitGamma();
|
|
** 4. sst1InitVideoBuffers();
|
|
** 5. sst1InitSli(); [Optional]
|
|
** 6. sst1InitCmdFifo();
|
|
**
|
|
** sst1InitShutdown() is called at the end of an application to turn off
|
|
** the SST-1 graphics subsystem
|
|
**
|
|
*/
|
|
|
|
/* sst1init.h assumes "glide.h" and "sst.h" are already included */
|
|
|
|
/* Init code debug print routine */
|
|
#ifdef INIT_DOS /* Glide version... */
|
|
#define INIT_OUTPUT
|
|
#define INIT_PRINTF(a) sst1InitPrintf a
|
|
#define INIT_INFO(A)
|
|
#endif
|
|
|
|
#ifndef DIRECTX
|
|
#undef GETENV
|
|
#undef ATOI
|
|
#undef ATOF
|
|
#undef SSCANF
|
|
#undef POW
|
|
#define GETENV(A) sst1InitGetenv(A)
|
|
#define ATOI(A) atoi(A)
|
|
#define ATOF(A) atof(A)
|
|
#define SSCANF( A, B, C ) sscanf( A, B, C )
|
|
#define POW( A, B ) pow( A, B )
|
|
#define FTOL( X ) ((FxU32)(X))
|
|
|
|
// Video resolution declarations
|
|
#include "sst1vid.h"
|
|
|
|
// Info Structure declaration
|
|
#include "cvginfo.h"
|
|
|
|
#else /* DIRECTX */
|
|
#include "ddglobal.h"
|
|
#pragma optimize ("",off) /* ddglobal.h tuns this on for retail builds */
|
|
#undef INIT_PRINTF
|
|
#undef INIT_INFO
|
|
#undef GETENV
|
|
#undef ATOI
|
|
#undef ATOF
|
|
#undef FTOL
|
|
#undef ITOF_INV
|
|
#undef SSCANF
|
|
#undef POW
|
|
/* #define INIT_PRINTF(a) */
|
|
#ifdef FXTRACE
|
|
#define INIT_PRINTF DDPRINTF
|
|
#else
|
|
#define INIT_PRINTF 1 ? (void) 0 : (void)
|
|
#endif
|
|
#define INIT_INFO(A)
|
|
#define GETENV(A) ddgetenv(A)
|
|
#define ATOI(A) ddatoi(A)
|
|
#define ATOF(A) ddatof(A)
|
|
#define FTOL(A) ddftol(A)
|
|
#define ITOF_INV(A) dd_itof_inv(A)
|
|
#define SSCANF( A, B, C ) ddsscanf( A, B, C )
|
|
#define POW( A, B ) ddpow( A, B )
|
|
|
|
#endif /* DIRECTX */
|
|
|
|
/* Defines to writing to/reading from SST-1 */
|
|
#if 0
|
|
#define IGET(A) A
|
|
#define ISET(A,D) A = (D)
|
|
#else
|
|
#define IGET(A) sst1InitRead32((FxU32 *) &(A))
|
|
#define ISET(A,D) sst1InitWrite32((FxU32 *) &(A), D)
|
|
#endif
|
|
|
|
/*
|
|
** P6 Fence
|
|
**
|
|
** Here's the stuff to do P6 Fencing. This is required for the
|
|
** certain things on the P6
|
|
*/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef SST1INIT_ALLOCATE
|
|
FxU32 p6FenceVar;
|
|
#else
|
|
extern FxU32 p6FenceVar;
|
|
#endif
|
|
|
|
#if defined(__WATCOMC__)
|
|
void
|
|
p6Fence(void);
|
|
# pragma aux p6Fence = \
|
|
"xchg eax, p6FenceVar" \
|
|
modify [eax];
|
|
# define P6FENCE p6Fence()
|
|
#elif defined(__MSC__)
|
|
# define P6FENCE {_asm xchg eax, p6FenceVar}
|
|
#elif defined(macintosh) && __POWERPC__ && defined(__MWERKS__)
|
|
# define P6FENCE __eieio()
|
|
#else
|
|
# error "P6 Fencing in-line assembler code needs to be added for this compiler"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifndef _FXPCI_H_
|
|
#include <fxpci.h>
|
|
#endif
|
|
#include <sst1_pci.h>
|
|
|
|
/*--------------------------------------------------------*/
|
|
/* Following defines need to go in "cvgdefs.h" eventually */
|
|
#define SST_CMDFIFO_ADDR BIT(21)
|
|
|
|
/*--------- SST PCI Configuration Command bits --------------*/
|
|
#define SST_PCIMEM_ACCESS_EN BIT(1)
|
|
|
|
/*------- SST PCI Configuration Register defaults -----------*/
|
|
#define SST_PCI_INIT_ENABLE_DEFAULT 0x0
|
|
#define SST_PCI_BUS_SNOOP_DEFAULT 0x0
|
|
|
|
/*--- SST PCI Init Enable Configuration Register defaults ---*/
|
|
#define SST_SLI_OWNPCI SST_SCANLINE_SLV_OWNPCI
|
|
#define SST_SLI_MASTER_OWNPCI 0x0
|
|
#define SST_SLI_SLAVE_OWNPCI SST_SCANLINE_SLV_OWNPCI
|
|
#define SST_CHUCK_REVISION_ID_SHIFT 12
|
|
#define SST_CHUCK_REVISION_ID (0xF<<SST_CHUCK_REVISION_ID_SHIFT)
|
|
#define SST_CHUCK_MFTG_ID_SHIFT 16
|
|
#define SST_CHUCK_MFTG_ID (0xF<<SST_CHUCK_MFTG_ID_SHIFT)
|
|
#define SST_PCI_INTR_EN BIT(20)
|
|
#define SST_PCI_INTR_TIMEOUT_EN BIT(21)
|
|
#define SST_SLI_SNOOP_EN BIT(23)
|
|
#define SST_SLI_SNOOP_MEMBASE_SHIFT 24
|
|
#define SST_SLI_SNOOP_MEMBASE (0xFF<<SST_SLI_SNOOP_MEMBASE_SHIFT)
|
|
|
|
/*------- SST Silicon Process Monitor Register Defines ------*/
|
|
#define SST_SIPROCESS_OSC_CNTR 0xFFFF
|
|
#define SST_SIPROCESS_PCI_CNTR_SHIFT 16
|
|
#define SST_SIPROCESS_PCI_CNTR (0xFFF<<SST_SIPROCESS_PCI_CNTR_SHIFT)
|
|
#define SST_SIPROCESS_OSC_CNTR_RESET_N 0
|
|
#define SST_SIPROCESS_OSC_CNTR_RUN BIT(28)
|
|
#define SST_SIPROCESS_OSC_NAND_SEL 0
|
|
#define SST_SIPROCESS_OSC_NOR_SEL BIT(29)
|
|
#define SST_SIPROCESS_OSC_FORCE_ENABLE BIT(30)
|
|
|
|
/*----------------- SST fbiinit0 bits -----------------------*/
|
|
//#define SST_FBIINIT0_DEFAULT 0x00000410
|
|
// Must include SST_EN_TEX_MEMFIFO and SST_EN_LFB_MEMFIFO in FBIINIT0_DEFAULT
|
|
// or else texture memory detection will hang on some machines (see bug_3.c)
|
|
#define SST_FBIINIT0_DEFAULT (0x00000410 | SST_EN_TEX_MEMFIFO | \
|
|
SST_EN_LFB_MEMFIFO)
|
|
#define SST_GRX_RESET BIT(1)
|
|
#define SST_PCI_FIFO_RESET BIT(2)
|
|
#define SST_EN_ENDIAN_SWAPPING BIT(3)
|
|
|
|
/*----------------- SST fbiinit1 bits -----------------------*/
|
|
#define SST_FBIINIT1_DEFAULT 0x00201102
|
|
#define SST_VIDEO_TILES_MASK 0x010000F0
|
|
#define SST_VIDEO_TILES_IN_X_MSB_SHIFT 24
|
|
#define SST_VIDEO_TILES_IN_X_MSB (1<<SST_VIDEO_TILES_IN_X_MSB_SHIFT)
|
|
|
|
/*----------------- SST fbiinit2 bits -----------------------*/
|
|
#define SST_FBIINIT2_DEFAULT 0x80000040
|
|
#define SST_SWAP_ALGORITHM_SHIFT 9
|
|
#define SST_SWAP_ALGORITHM (0x3<<SST_SWAP_ALGORITHM_SHIFT)
|
|
# define SST_SWAP_VSYNC (0<<SST_SWAP_ALGORITHM_SHIFT)
|
|
# define SST_SWAP_DACDATA0 (1<<SST_SWAP_ALGORITHM_SHIFT)
|
|
# define SST_SWAP_FIFOSTALL (2<<SST_SWAP_ALGORITHM_SHIFT)
|
|
# define SST_SWAP_SLISYNC (3<<SST_SWAP_ALGORITHM_SHIFT)
|
|
#define SST_DRAM_REFRESH_16MS (0x30 << SST_DRAM_REFRESH_CNTR_SHIFT)
|
|
|
|
/*----------------- SST fbiinit3 bits -----------------------*/
|
|
#define SST_TEXMAP_DISABLE BIT(6)
|
|
#define SST_FBI_MEM_TYPE_SHIFT 8
|
|
#define SST_FBI_MEM_TYPE (0x7<<SST_FBI_MEM_TYPE_SHIFT)
|
|
#define SST_FBI_VGA_PASS_POWERON BIT(12)
|
|
#define SST_FT_CLK_DEL_ADJ_SHIFT 13
|
|
#define SST_FT_CLK_DEL_ADJ (0xF<<SST_FT_CLK_DEL_ADJ_SHIFT)
|
|
#define SST_TF_FIFO_THRESH_SHIFT 17
|
|
#define SST_TF_FIFO_THRESH (0x1F<<SST_TF_FIFO_THRESH_SHIFT)
|
|
#define SST_FBIINIT3_DEFAULT (0x001E4000|SST_TEXMAP_DISABLE)
|
|
|
|
/*----------------- SST fbiinit4 bits -----------------------*/
|
|
#define SST_FBIINIT4_DEFAULT 0x00000001
|
|
#define SST_PCI_RDWS_1 0x0
|
|
#define SST_PCI_RDWS_2 BIT(0)
|
|
#define SST_EN_LFB_RDAHEAD BIT(1)
|
|
#define SST_MEM_FIFO_LWM_SHIFT 2
|
|
#define SST_MEM_FIFO_LWM (0x3F<<SST_MEM_FIFO_LWM_SHIFT)
|
|
#define SST_MEM_FIFO_ROW_BASE_SHIFT 8
|
|
#define SST_MEM_FIFO_ROW_BASE (0x3FF<<SST_MEM_FIFO_ROW_BASE_SHIFT)
|
|
#define SST_MEM_FIFO_ROW_ROLL_SHIFT 18
|
|
#define SST_MEM_FIFO_ROW_ROLL (0x3FF<<SST_MEM_FIFO_ROW_ROLL_SHIFT)
|
|
|
|
/*----------------- SST fbiinit5 bits -----------------------*/
|
|
#define SST_DAC_24BPP_PORT BIT(2)
|
|
#define SST_GPIO_0 BIT(3)
|
|
#define SST_GPIO_0_DRIVE0 0x0
|
|
#define SST_GPIO_0_DRIVE1 BIT(3)
|
|
#define SST_GPIO_0_SHIFT 3
|
|
#define SST_GPIO_1 BIT(4)
|
|
#define SST_GPIO_1_DRIVE0 0x0
|
|
#define SST_GPIO_1_DRIVE1 BIT(4)
|
|
#define SST_GPIO_1_SHIFT 4
|
|
#define SST_BUFFER_ALLOC_SHIFT 9
|
|
#define SST_BUFFER_ALLOC (0x3 << SST_BUFFER_ALLOC_SHIFT)
|
|
# define SST_BUFFER_ALLOC_2C0Z (0x0 << SST_BUFFER_ALLOC_SHIFT)
|
|
# define SST_BUFFER_ALLOC_2C1Z (0x0 << SST_BUFFER_ALLOC_SHIFT)
|
|
# define SST_BUFFER_ALLOC_3C0Z (0x1 << SST_BUFFER_ALLOC_SHIFT)
|
|
# define SST_BUFFER_ALLOC_3C1Z (0x2 << SST_BUFFER_ALLOC_SHIFT)
|
|
#define SST_VIDEO_CLK_SLAVE_OE_EN BIT(11)
|
|
#define SST_VID_CLK_2X_OUT_OE_EN BIT(12)
|
|
#define SST_VID_CLK_DAC_DATA16_SEL BIT(13)
|
|
#define SST_SLI_DETECT BIT(14)
|
|
#define SST_HVRETRACE_SYNC_READS BIT(15)
|
|
#define SST_COLOR_BORDER_RIGHT_EN BIT(16)
|
|
#define SST_COLOR_BORDER_LEFT_EN BIT(17)
|
|
#define SST_COLOR_BORDER_BOTTOM_EN BIT(18)
|
|
#define SST_COLOR_BORDER_TOP_EN BIT(19)
|
|
#define SST_SCAN_DOUBLE_HORIZ BIT(20)
|
|
#define SST_SCAN_DOUBLE_VERT BIT(21)
|
|
#define SST_GAMMA_CORRECT_16BPP_EN BIT(22)
|
|
#define SST_INVERT_HSYNC BIT(23)
|
|
#define SST_INVERT_VSYNC BIT(24)
|
|
#define SST_VIDEO_OUT_24BPP_EN BIT(25)
|
|
#define SST_GPIO_1_SEL BIT(27)
|
|
#define SST_FBIINIT5_DEFAULT \
|
|
(SST_HVRETRACE_SYNC_READS | \
|
|
SST_GAMMA_CORRECT_16BPP_EN | \
|
|
SST_GPIO_1_SEL)
|
|
|
|
/*----------------- SST fbiinit6 bits -----------------------*/
|
|
#define SST_SLI_SWAP_VACTIVE_SHIFT 0
|
|
#define SST_SLI_SWAP_VACTIVE (0x7<<SST_SLI_SWAP_VACTIVE_SHIFT)
|
|
#define SST_SLI_SWAP_VACTIVE_DRAG_SHIFT 3
|
|
#define SST_SLI_SWAP_VACTIVE_DRAG (0x1F<<SST_SLI_SWAP_VACTIVE_DRAG_SHIFT)
|
|
#define SST_SLI_SYNC_MASTER BIT(8)
|
|
#define SST_GPIO_2 (0x3<<9)
|
|
#define SST_GPIO_2_DRIVE0 (0x2<<9)
|
|
#define SST_GPIO_2_DRIVE1 (0x3<<9)
|
|
#define SST_GPIO_2_FLOAT (0x1<<9)
|
|
#define SST_GPIO_2_SHIFT 9
|
|
#define SST_GPIO_3 (0x3<<11)
|
|
#define SST_GPIO_3_DRIVE0 (0x2<<11)
|
|
#define SST_GPIO_3_DRIVE1 (0x3<<11)
|
|
#define SST_GPIO_3_FLOAT (0x1<<11)
|
|
#define SST_GPIO_3_SHIFT 11
|
|
#define SST_SLI_SYNCIN (0x3<<13)
|
|
#define SST_SLI_SYNCIN_DRIVE0 (0x2<<13)
|
|
#define SST_SLI_SYNCIN_DRIVE1 (0x3<<13)
|
|
#define SST_SLI_SYNCIN_FLOAT (0x1<<13)
|
|
#define SST_SLI_SYNCOUT (0x3<<15)
|
|
#define SST_SLI_SYNCOUT_DRIVE0 (0x2<<15)
|
|
#define SST_SLI_SYNCOUT_DRIVE1 (0x3<<15)
|
|
#define SST_SLI_SYNCOUT_FLOAT (0x1<<15)
|
|
#define SST_DAC_RD (0x3<<17)
|
|
#define SST_DAC_RD_DRIVE0 (0x2<<17)
|
|
#define SST_DAC_RD_DRIVE1 (0x3<<17)
|
|
#define SST_DAC_RD_FLOAT (0x1<<17)
|
|
#define SST_DAC_WR (0x3<<19)
|
|
#define SST_DAC_WR_DRIVE0 (0x2<<19)
|
|
#define SST_DAC_WR_DRIVE1 (0x3<<19)
|
|
#define SST_DAC_WR_FLOAT (0x1<<19)
|
|
#define SST_PCI_FIFO_LWM_RDY_SHIFT 21
|
|
#define SST_PCI_FIFO_LWM_RDY (0x7f<<SST_PCI_FIFO_LWM_RDY_SHIFT)
|
|
#define SST_VGA_PASS_N (0x3<<28)
|
|
#define SST_VGA_PASS_N_DRIVE0 (0x2<<28)
|
|
#define SST_VGA_PASS_N_DRIVE1 (0x3<<28)
|
|
#define SST_VIDEO_TILES_IN_X_LSB_SHIFT 30
|
|
#define SST_VIDEO_TILES_IN_X_LSB (1<<SST_VIDEO_TILES_IN_X_LSB_SHIFT)
|
|
#define SST_FBIINIT6_DEFAULT 0x0
|
|
|
|
/*----------------- SST fbiinit7 bits -----------------------*/
|
|
#define SST_CMDFIFO_EN BIT(8)
|
|
#define SST_CMDFIFO_STORE_OFFSCREEN BIT(9)
|
|
#define SST_CMDFIFO_DISABLE_HOLES BIT(10)
|
|
#define SST_CMDFIFO_RDFETCH_THRESH_SHIFT 11
|
|
#define SST_CMDFIFO_RDFETCH_THRESH (0x1FUL<<SST_CMDFIFO_RDFETCH_THRESH_SHIFT)
|
|
#define SST_CMDFIFO_SYNC_WRITES BIT(16)
|
|
#define SST_CMDFIFO_SYNC_READS BIT(17)
|
|
#define SST_PCI_PACKER_RESET BIT(18)
|
|
#define SST_TMU_CHROMA_REG_WR_EN BIT(19)
|
|
#define SST_CMDFIFO_PCI_TIMEOUT_SHIFT 20
|
|
#define SST_CMDFIFO_PCI_TIMEOUT (0x7FUL<<SST_CMDFIFO_PCI_TIMEOUT_SHIFT)
|
|
#define SST_TEXMEMWR_BURST_EN BIT(27)
|
|
#define SST_FBIINIT7_DEFAULT \
|
|
(SST_TEXMEMWR_BURST_EN | SST_TMU_CHROMA_REG_WR_EN)
|
|
|
|
/*----------------- SST trexInit0 bits -----------------------*/
|
|
#define SST_EN_TEX_MEM_REFRESH BIT(0)
|
|
#define SST_TEX_MEM_REFRESH_SHIFT 1
|
|
#define SST_TEX_MEM_REFRESH (0x1FF<<SST_TEX_MEM_REFRESH_SHIFT)
|
|
#define SST_TEX_MEM_PAGE_SIZE_SHIFT 10
|
|
#define SST_TEX_MEM_PAGE_SIZE_8BITS (0x0<<SST_TEX_MEM_PAGE_SIZE_SHIFT)
|
|
#define SST_TEX_MEM_PAGE_SIZE_9BITS (0x1<<SST_TEX_MEM_PAGE_SIZE_SHIFT)
|
|
#define SST_TEX_MEM_PAGE_SIZE_10BITS (0x2<<SST_TEX_MEM_PAGE_SIZE_SHIFT)
|
|
#define SST_TEX_MEM_SECOND_RAS_BIT_SHIFT 12
|
|
#define SST_TEX_MEM_SECOND_RAS_BIT_BIT17 (0x0<<SST_TEX_MEM_SECOND_RAS_BIT_SHIFT)
|
|
#define SST_TEX_MEM_SECOND_RAS_BIT_BIT18 (0x1<<SST_TEX_MEM_SECOND_RAS_BIT_SHIFT)
|
|
#define SST_EN_TEX_MEM_SECOND_RAS BIT(14)
|
|
#define SST_TEX_MEM_TYPE_SHIFT 15
|
|
#define SST_TEX_MEM_TYPE_EDO (0x0<<SST_TEX_MEM_TYPE_SHIFT)
|
|
#define SST_TEX_MEM_TYPE_SYNC (0x1<<SST_TEX_MEM_TYPE_SHIFT)
|
|
#define SST_TEX_MEM_DATA_SIZE_16BIT 0x0
|
|
#define SST_TEX_MEM_DATA_SIZE_8BIT BIT(18)
|
|
#define SST_TEX_MEM_DO_EXTRA_CAS BIT(19)
|
|
#define SST_TEX_MEM2 BIT(20)
|
|
|
|
#define SST_TREXINIT0_DEFAULT \
|
|
( (SST_EN_TEX_MEM_REFRESH) \
|
|
| (0x020 << SST_TEX_MEM_REFRESH_SHIFT) \
|
|
| (SST_TEX_MEM_PAGE_SIZE_9BITS) \
|
|
| (SST_TEX_MEM_SECOND_RAS_BIT_BIT18) \
|
|
| (SST_EN_TEX_MEM_SECOND_RAS) \
|
|
| (SST_TEX_MEM_TYPE_EDO) \
|
|
| (SST_TEX_MEM_DATA_SIZE_16BIT) \
|
|
| (0 & SST_TEX_MEM_DO_EXTRA_CAS) \
|
|
| (0 & SST_TEX_MEM2) )
|
|
|
|
#define SST_TREX0INIT0_DEFAULT SST_TREXINIT0_DEFAULT
|
|
#define SST_TREX1INIT0_DEFAULT SST_TREXINIT0_DEFAULT
|
|
#define SST_TREX2INIT0_DEFAULT SST_TREXINIT0_DEFAULT
|
|
|
|
/*----------------- SST trexInit1 bits -----------------------*/
|
|
#define SST_TEX_SCANLINE_INTERLEAVE_MASTER 0x0
|
|
#define SST_TEX_SCANLINE_INTERLEAVE_SLAVE BIT(0)
|
|
#define SST_EN_TEX_SCANLINE_INTERLEAVE BIT(1)
|
|
#define SST_TEX_FT_FIFO_SIL_SHIFT 2
|
|
#define SST_TEX_FT_FIFO_SIL (0x1F<<SST_TEX_FT_FIFO_SIL_SHIFT)
|
|
#define SST_TEX_TT_FIFO_SIL_SHIFT 7
|
|
#define SST_TEX_TT_FIFO_SIL (0xF<<SST_TEX_TT_FIFO_SIL_SHIFT)
|
|
#define SST_TEX_TF_CLK_DEL_ADJ_SHIFT 12
|
|
#define SST_TEX_TF_CLK_DEL_ADJ (0xF<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT)
|
|
#define SST_TEX_RG_TTCII_INH BIT(16)
|
|
#define SST_TEX_USE_RG_TTCII_INH BIT(17)
|
|
#define SST_TEX_SEND_CONFIG BIT(18)
|
|
#define SST_TEX_RESET_FIFO BIT(19)
|
|
#define SST_TEX_RESET_GRX BIT(20)
|
|
#define SST_TEX_PALETTE_DEL_SHIFT 21
|
|
#define SST_TEX_PALETTE_DEL (0x3<<SST_TEX_PALETTE_DEL_SHIFT)
|
|
#define SST_TEX_SEND_CONFIG_SEL_SHIFT 23
|
|
#define SST_TEX_SEND_CONFIG_SEL (0x7<<SST_TEX_SEND_CONFIG_SEL_SHIFT)
|
|
|
|
/* After things stabilize, the fifo stall inputs levels should be backed off
|
|
|
|
from the max. conservative values that are being used now for better
|
|
performance.
|
|
SST_TEX_FT_FIFO_SIL = ??
|
|
SST_TEX_TT_FIFO_SIL = ?? (effects multi-trex only)
|
|
*/
|
|
|
|
/* for trex ver. 1 bringup, SST_TEX_PALETTE_DEL should be set to it's max
|
|
(== 3) for <50 MHz bringup */
|
|
|
|
#define SST_TREXINIT1_DEFAULT \
|
|
( (SST_TEX_SCANLINE_INTERLEAVE_MASTER) \
|
|
| (0 & SST_EN_TEX_SCANLINE_INTERLEAVE) \
|
|
| (0x8 << SST_TEX_FT_FIFO_SIL_SHIFT) \
|
|
| (0x8 << SST_TEX_TT_FIFO_SIL_SHIFT) \
|
|
| (0xf << SST_TEX_TF_CLK_DEL_ADJ_SHIFT) \
|
|
| (0 & SST_TEX_RG_TTCII_INH) \
|
|
| (0 & SST_TEX_USE_RG_TTCII_INH) \
|
|
| (0 & SST_TEX_SEND_CONFIG) \
|
|
| (0 & SST_TEX_RESET_FIFO) \
|
|
| (0 & SST_TEX_RESET_GRX) \
|
|
| (0 << SST_TEX_PALETTE_DEL_SHIFT) \
|
|
| (0 << SST_TEX_SEND_CONFIG_SEL_SHIFT) )
|
|
|
|
#define SST_TREX0INIT1_DEFAULT SST_TREXINIT1_DEFAULT
|
|
#define SST_TREX1INIT1_DEFAULT SST_TREXINIT1_DEFAULT
|
|
#define SST_TREX2INIT1_DEFAULT SST_TREXINIT1_DEFAULT
|
|
|
|
/*----------------- SST clutData bits -----------------------*/
|
|
#define SST_CLUTDATA_INDEX_SHIFT 24
|
|
#define SST_CLUTDATA_RED_SHIFT 16
|
|
#define SST_CLUTDATA_GREEN_SHIFT 8
|
|
#define SST_CLUTDATA_BLUE_SHIFT 0
|
|
|
|
/*----------------- SST video setup shifts ------------------*/
|
|
#define SST_VIDEO_HSYNC_OFF_SHIFT 16
|
|
#define SST_VIDEO_HSYNC_ON_SHIFT 0
|
|
#define SST_VIDEO_VSYNC_OFF_SHIFT 16
|
|
#define SST_VIDEO_VSYNC_ON_SHIFT 0
|
|
#define SST_VIDEO_HBACKPORCH_SHIFT 0
|
|
#define SST_VIDEO_VBACKPORCH_SHIFT 16
|
|
#define SST_VIDEO_XDIM_SHIFT 0
|
|
#define SST_VIDEO_YDIM_SHIFT 16
|
|
|
|
/*----------------- SST dacData constants -------------------*/
|
|
#define SST_DACREG_WMA 0x0
|
|
#define SST_DACREG_LUT 0x1
|
|
#define SST_DACREG_RMR 0x2
|
|
#define SST_DACREG_RMA 0x3
|
|
#define SST_DACREG_ICS_PLLADDR_WR 0x4 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_RD 0x7 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_DATA 0x5 /* ICS only */
|
|
#define SST_DACREG_ICS_CMD 0x6 /* ICS only */
|
|
#define SST_DACREG_ICS_COLORMODE_16BPP 0x50 /* ICS only */
|
|
#define SST_DACREG_ICS_COLORMODE_24BPP 0x70 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_VCLK0 0x0 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_VCLK1 0x1 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_VCLK7 0x7 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_VCLK1_DEFAULT 0x55 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_VCLK7_DEFAULT 0x71 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_GCLK0 0xa /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_GCLK1 0xb /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_GCLK1_DEFAULT 0x79 /* ICS only */
|
|
#define SST_DACREG_ICS_PLLADDR_CTRL 0xe /* ICS only */
|
|
#define SST_DACREG_ICS_PLLCTRL_CLK1SEL BIT(4)
|
|
#define SST_DACREG_ICS_PLLCTRL_CLK0SEL BIT(5)
|
|
#define SST_DACREG_ICS_PLLCTRL_CLK0FREQ 0x7
|
|
#define SST_DACREG_INDEXADDR SST_DACREG_WMA
|
|
#define SST_DACREG_INDEXDATA SST_DACREG_RMR
|
|
#define SST_DACREG_INDEX_RMR 0x0
|
|
#define SST_DACREG_INDEX_CR0 0x1
|
|
#define SST_DACREG_INDEX_MIR 0x2
|
|
#define SST_DACREG_INDEX_MIR_ATT_DEFAULT 0x84 /* AT&T */
|
|
#define SST_DACREG_INDEX_MIR_TI_DEFAULT 0x97 /* TI */
|
|
#define SST_DACREG_INDEX_DIR 0x3
|
|
#define SST_DACREG_INDEX_DIR_ATT_DEFAULT 0x9 /* AT&T */
|
|
#define SST_DACREG_INDEX_DIR_TI_DEFAULT 0x9 /* TI */
|
|
#define SST_DACREG_INDEX_TST 0x4
|
|
#define SST_DACREG_INDEX_CR1 0x5
|
|
#define SST_DACREG_INDEX_CC 0x6
|
|
#define SST_DACREG_INDEX_AA0 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_AA1 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_AB0 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_AB1 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_AB2 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_AC0 0x48
|
|
#define SST_DACREG_INDEX_AC1 0x49
|
|
#define SST_DACREG_INDEX_AC2 0x4a
|
|
#define SST_DACREG_INDEX_AD0 0x4c
|
|
#define SST_DACREG_INDEX_AD1 0x4d
|
|
#define SST_DACREG_INDEX_AD2 0x4e
|
|
#define SST_DACREG_INDEX_BA0 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BA1 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BB0 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BB1 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BB2 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BC0 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BC1 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BC2 0xff /* can't access */
|
|
#define SST_DACREG_INDEX_BD0 0x6c
|
|
#define SST_DACREG_INDEX_BD1 0x6d
|
|
#define SST_DACREG_INDEX_BD2 0x6e
|
|
|
|
#define SST_DACREG_CR0_INDEXED_ADDRESSING BIT(0)
|
|
#define SST_DACREG_CR0_8BITDAC BIT(1)
|
|
#define SST_DACREG_CR0_SLEEP BIT(3)
|
|
#define SST_DACREG_CR0_COLOR_MODE_SHIFT 4
|
|
#define SST_DACREG_CR0_COLOR_MODE (0xF<<SST_DACREG_CR0_COLOR_MODE_SHIFT)
|
|
#define SST_DACREG_CR0_COLOR_MODE_16BPP (0x3<<SST_DACREG_CR0_COLOR_MODE_SHIFT)
|
|
#define SST_DACREG_CR0_COLOR_MODE_24BPP (0x5<<SST_DACREG_CR0_COLOR_MODE_SHIFT)
|
|
|
|
#define SST_DACREG_CR1_BLANK_PEDASTAL_EN BIT(4)
|
|
|
|
#define SST_DACREG_CC_BCLK_SEL_SHIFT 0
|
|
#define SST_DACREG_CC_BCLK_SELECT_BD BIT(3)
|
|
#define SST_DACREG_CC_ACLK_SEL_SHIFT 4
|
|
#define SST_DACREG_CC_ACLK_SELECT_AD BIT(7)
|
|
|
|
#define SST_DACREG_CLKREG_MSHIFT 0
|
|
#define SST_DACREG_CLKREG_PSHIFT 6
|
|
#define SST_DACREG_CLKREG_NSHIFT 0
|
|
#define SST_DACREG_CLKREG_LSHIFT 4
|
|
#define SST_DACREG_CLKREG_IBSHIFT 0
|
|
|
|
#define SST_FBI_DACTYPE_ATT 0
|
|
#define SST_FBI_DACTYPE_ICS 1
|
|
#define SST_FBI_DACTYPE_TI 2
|
|
|
|
/* Definitions for parsing voodoo.ini file */
|
|
#define DACRDWR_TYPE_WR 0
|
|
#define DACRDWR_TYPE_RDMODWR 1
|
|
#define DACRDWR_TYPE_RDNOCHECK 2
|
|
#define DACRDWR_TYPE_RDCHECK 3
|
|
#define DACRDWR_TYPE_RDPUSH 4
|
|
#define DACRDWR_TYPE_WRMOD_POP 5
|
|
|
|
/* Other useful defines */
|
|
#define PCICFG_WR(ADDR, DATA) \
|
|
n = DATA; \
|
|
if(pciSetConfigData(ADDR, sst1InitDeviceNumber, &n) == FXFALSE) \
|
|
return(FXFALSE)
|
|
#define PCICFG_RD(ADDR, DATA) \
|
|
if(pciGetConfigData(ADDR, sst1InitDeviceNumber, &DATA) == FXFALSE) \
|
|
return(FXFALSE)
|
|
#define DAC_INDEXWRADDR(ADDR) \
|
|
sst1InitDacWr(sstbase, SST_DACREG_INDEXADDR, ADDR)
|
|
#define DAC_INDEXWR(DATA) \
|
|
sst1InitDacWr(sstbase, SST_DACREG_INDEXDATA, (DATA))
|
|
#define DAC_INDEXRD() \
|
|
sst1InitDacRd(sstbase, SST_DACREG_INDEXDATA)
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
/*
|
|
** SST-1 Initialization typedefs
|
|
**
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct {
|
|
float freq;
|
|
FxU32 clkTiming_M;
|
|
FxU32 clkTiming_P;
|
|
FxU32 clkTiming_N;
|
|
FxU32 clkTiming_L;
|
|
FxU32 clkTiming_IB;
|
|
} sst1ClkTimingStruct;
|
|
|
|
typedef struct {
|
|
unsigned char type;
|
|
unsigned char addr;
|
|
FxU32 data;
|
|
FxU32 mask;
|
|
void *nextRdWr;
|
|
} sst1InitDacRdWrStruct;
|
|
|
|
typedef struct {
|
|
FxU32 width;
|
|
FxU32 height;
|
|
FxU32 refresh;
|
|
FxU32 video16BPP;
|
|
sst1InitDacRdWrStruct *setVideoRdWr;
|
|
void *nextSetVideo;
|
|
} sst1InitDacSetVideoStruct;
|
|
|
|
typedef struct {
|
|
FxU32 frequency;
|
|
sst1InitDacRdWrStruct *setMemClkRdWr;
|
|
void *nextSetMemClk;
|
|
} sst1InitDacSetMemClkStruct;
|
|
|
|
typedef struct {
|
|
FxU32 video16BPP;
|
|
sst1InitDacRdWrStruct *setVideoModeRdWr;
|
|
void *nextSetVideoMode;
|
|
} sst1InitDacSetVideoModeStruct;
|
|
|
|
typedef struct {
|
|
char dacManufacturer[100];
|
|
char dacDevice[100];
|
|
sst1InitDacRdWrStruct *detect;
|
|
sst1InitDacSetVideoStruct *setVideo;
|
|
sst1InitDacSetMemClkStruct *setMemClk;
|
|
sst1InitDacSetVideoModeStruct *setVideoMode;
|
|
void *nextDac;
|
|
} sst1InitDacStruct;
|
|
|
|
#define kMaxEnvVarLen 100
|
|
#define kMaxEnvValLen 256
|
|
typedef struct {
|
|
char envVariable[kMaxEnvVarLen];
|
|
char envValue[kMaxEnvValLen];
|
|
void *nextVar;
|
|
} sst1InitEnvVarStruct;
|
|
|
|
FX_ENTRY FxU32 * FX_CALL sst1InitMapBoard(FxU32);
|
|
FX_ENTRY FxU32 * FX_CALL sst1InitMapBoardDirect(FxU32, FxBool);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitNumBoardsInSystem(void);
|
|
FX_ENTRY FxBool FX_CALL sst1InitRegisters(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGamma(FxU32 *, double);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGammaRGB(FxU32 *, double, double, double);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGammaTable(FxU32 *, FxU32, FxU32 *, FxU32 *, FxU32 *);
|
|
// Note: sst1InitVideo() is for compatibility with SST-1 only, and should
|
|
// not be used for Voodoo2. Use sst1InitVideoBuffers() instead
|
|
FX_ENTRY FxBool FX_CALL sst1InitVideo(FxU32 *, GrScreenResolution_t,
|
|
GrScreenRefresh_t, void *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitVideoBuffers(FxU32 *, GrScreenResolution_t,
|
|
GrScreenRefresh_t, FxU32, FxU32, sst1VideoTimingStruct *, FxBool);
|
|
FX_ENTRY FxBool FX_CALL sst1InitAllocBuffers(FxU32 *, FxU32, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitVideoShutdown(FxU32 *, FxBool);
|
|
FX_ENTRY FxBool FX_CALL sst1InitShutdown(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitShutdownSli(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitSli(FxU32 *, FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGetDeviceInfo(FxU32 *, sst1DeviceInfoStruct *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitVideoBorder(FxU32 *, FxU32, FxU32);
|
|
|
|
/* Miscellaneous routines */
|
|
FX_ENTRY void FX_CALL sst1InitWrite32(FxU32 *, FxU32);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitRead32(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitIdle(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitIdleWithTimeout(FxU32 *, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitIdleNoNOP(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitIdleFBI(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitIdleFBINoNOP(FxU32 *);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitReturnStatus(FxU32 *);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitDacRd(FxU32 *, FxU32);
|
|
FX_ENTRY void FX_CALL sst1InitDacWr(FxU32 *, FxU32, FxU32);
|
|
FxBool sst1InitExecuteDacRdWr(FxU32 *, sst1InitDacRdWrStruct *);
|
|
FX_ENTRY void FX_CALL sst1InitSetResolution(FxU32 *, sst1VideoTimingStruct *,
|
|
FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitDacIndexedEnable(FxU32 *, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGrxClk(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitCalcGrxClk(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitDacDetect(FxU32 *);
|
|
FxBool sst1InitDacDetectATT(FxU32 *);
|
|
FxBool sst1InitDacDetectTI(FxU32 *);
|
|
FxBool sst1InitDacDetectICS(FxU32 *);
|
|
FxBool sst1InitDacDetectINI(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitSetGrxClk(FxU32 *, sst1ClkTimingStruct *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitComputeClkParams(float, sst1ClkTimingStruct *);
|
|
FxBool sst1InitComputeClkParamsATT(float, sst1ClkTimingStruct *);
|
|
FxBool sst1InitComputeClkParamsTI(float, sst1ClkTimingStruct *);
|
|
FxBool sst1InitSetGrxClkATT(FxU32 *, sst1ClkTimingStruct *);
|
|
FxBool sst1InitSetGrxClkICS(FxU32 *, sst1ClkTimingStruct *);
|
|
FxBool sst1InitSetGrxClkINI(FxU32 *, sst1ClkTimingStruct *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitSetVidClk(FxU32 *, float);
|
|
FxBool sst1InitSetVidClkATT(FxU32 *, sst1ClkTimingStruct *);
|
|
FxBool sst1InitSetVidClkICS(FxU32 *, sst1ClkTimingStruct *);
|
|
FxBool sst1InitSetVidClkINI(FxU32 *, FxU32, FxU32, FxU32, FxU32);
|
|
FxBool sst1InitSetVidMode(FxU32 *, FxU32);
|
|
FxBool sst1InitSetVidModeATT(FxU32 *, FxU32);
|
|
FxBool sst1InitSetVidModeICS(FxU32 *, FxU32);
|
|
FxBool sst1InitSetVidModeINI(FxU32 *, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitCheckBoard(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGetFbiInfo(FxU32 *, sst1DeviceInfoStruct *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGetTmuInfo(FxU32 *, sst1DeviceInfoStruct *);
|
|
FX_ENTRY void FX_CALL sst1InitRenderingRegisters(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitGetTmuMemory(FxU32 *sstbase,
|
|
sst1DeviceInfoStruct *info, FxU32 tmu, FxU32 *TmuMemorySize);
|
|
FX_ENTRY FxBool FX_CALL sst1InitClearSwapPending(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitVgaPassCtrl(FxU32 *, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitResetFbi(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitResetTmus(FxU32 *);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitSliDetect(FxU32 *);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitSliPaired(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitVoodooFile(void);
|
|
FX_ENTRY char * FX_CALL sst1InitGetenv(char *);
|
|
FX_ENTRY FxU32 * FX_CALL sst1InitGetBaseAddr(FxU32);
|
|
FxBool sst1InitFillDeviceInfo(FxU32 *, sst1DeviceInfoStruct *);
|
|
void sst1InitIdleLoop(FxU32 *, FxBool);
|
|
int sst1InitIdleWithTimeoutLoop(FxU32 *, FxBool, FxU32);
|
|
void sst1InitPciFifoIdleLoop(FxU32 *);
|
|
void sst1InitClearBoardInfo(void);
|
|
FX_ENTRY FxBool FX_CALL sst1InitCaching(FxU32* sstBase, FxBool enableP);
|
|
FX_ENTRY void FX_CALL sst1InitPrintInitRegs(FxU32 *);
|
|
FX_ENTRY sst1VideoTimingStruct* FX_CALL
|
|
sst1InitFindVideoTimingStruct(GrScreenResolution_t, GrScreenRefresh_t);
|
|
FX_ENTRY FxU32 FX_CALL sst1InitMeasureSiProcess(FxU32 *, FxU32);
|
|
|
|
FX_ENTRY FxBool FX_CALL sst1InitCmdFifo(FxU32 *, FxBool, FxU32 *, FxU32 *,
|
|
FxU32 *, FxSet32Proc);
|
|
FX_ENTRY FxBool FX_CALL sst1InitCmdFifoDirect(FxU32 *, FxU32, FxU32, FxU32,
|
|
FxBool, FxBool, FxSet32Proc);
|
|
FX_ENTRY FxBool FX_CALL sst1InitLfbLock(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitLfbLockDirect(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitLfbUnlock(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitLfbUnlockDirect(FxU32 *);
|
|
FxU32 sst1InitConvertRefreshRate( FxU32 );
|
|
FX_ENTRY FxBool FX_CALL sst1InitMonitorDetect(FxU32 *);
|
|
FX_ENTRY FxBool FX_CALL sst1InitCalcTClkDelay(FxU32 *, FxU32, FxU32);
|
|
FX_ENTRY FxBool FX_CALL sst1InitSetClkDelays(FxU32 *);
|
|
void sst1InitCheckTmuMemConst(FxU32 *, FxU32, FxU32);
|
|
void sst1InitDrawRectUsingTris(FxU32 *, FxU32, FxU32, FxU32);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/* Info/Print routines */
|
|
#ifdef INIT_OUTPUT
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
FX_ENTRY void FX_CALL sst1InitPrintf(const char *, ...);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifndef _FILE_DEFINED
|
|
#include <stdio.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef SST1INIT_ALLOCATE
|
|
FILE *sst1InitMsgFile = stdout;
|
|
#else
|
|
extern FILE *sst1InitMsgFile;
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/* Maximum number of SST-1 boards supported in system */
|
|
#define SST1INIT_MAX_BOARDS 16
|
|
|
|
/* Maximum number of read pushes in "voodoo.ini" file */
|
|
#define DACRDWR_MAX_PUSH 16
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef SST1INIT_ALLOCATE
|
|
static char headersIdent[] = "@#%Voodoo2 InitHeaders $Revision: 62 $";
|
|
FxBool sst1InitUseVoodooFile = FXFALSE;
|
|
sst1InitEnvVarStruct *envVarsBase = (sst1InitEnvVarStruct *) NULL;
|
|
sst1InitDacStruct *dacStructBase = (sst1InitDacStruct *) NULL;
|
|
sst1InitDacStruct *iniDac = (sst1InitDacStruct *) NULL;
|
|
sst1InitDacSetVideoStruct *iniVideo = (sst1InitDacSetVideoStruct *) NULL;
|
|
sst1InitDacSetMemClkStruct *iniMemClk = (sst1InitDacSetMemClkStruct *) NULL;
|
|
FxU32 iniStack[DACRDWR_MAX_PUSH];
|
|
int iniStackPtr = 0;
|
|
sst1DeviceInfoStruct *sst1CurrentBoard;
|
|
FxU32 sst1InitDeviceNumber;
|
|
sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS];
|
|
FxU32 boardsInSystem;
|
|
FxU32 boardsInSystemReally;
|
|
FxU32 initIdleEnabled = 1;
|
|
|
|
|
|
const PciRegister SST1_PCI_CFG_SCRATCH = { 0x50, 4, READ_WRITE };
|
|
const PciRegister SST1_PCI_SIPROCESS = { 0x54, 4, READ_WRITE };
|
|
#else
|
|
extern FxBool sst1InitUseVoodooFile;
|
|
extern sst1InitEnvVarStruct *envVarsBase;
|
|
extern sst1InitDacStruct *dacStructBase;
|
|
extern sst1InitDacStruct *iniDac;
|
|
extern sst1InitDacSetVideoStruct *iniVideo;
|
|
extern sst1InitDacSetMemClkStruct *iniMemClk;
|
|
extern FxU32 iniStack[];
|
|
extern int iniStackPtr;
|
|
extern sst1DeviceInfoStruct *sst1CurrentBoard;
|
|
extern FxU32 sst1InitDeviceNumber;
|
|
extern sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS];
|
|
extern FxU32 boardsInSystem;
|
|
extern FxU32 boardsInSystemReally;
|
|
extern FxU32 initIdleEnabled;
|
|
|
|
extern PciRegister SST1_PCI_CFG_SCRATCH;
|
|
extern PciRegister SST1_PCI_SIPROCESS;
|
|
#endif /* SST1INIT_ALLOCATE */
|
|
|
|
#ifdef __3Dfx_PCI_CFG__
|
|
/* This is really ugly, but it makes us happy w/ the top of the tree
|
|
* pci library which is happier than Gary's library.
|
|
*/
|
|
#define SST1_PCI_INIT_ENABLE PCI_SST1_INIT_ENABLE
|
|
#define SST1_PCI_BUS_SNOOP0 PCI_SST1_BUS_SNOOP_0
|
|
#define SST1_PCI_BUS_SNOOP1 PCI_SST1_BUS_SNOOP_1
|
|
#define SST1_PCI_CFG_STATUS PCI_SST1_CFG_STATUS
|
|
#else /* !__3Dfx_PCI_CFG__ */
|
|
#define SST1_PCI_BUS_SNOOP0 SST1_PCI_BUS_SNOOP_0
|
|
#define SST1_PCI_BUS_SNOOP1 SST1_PCI_BUS_SNOOP_1
|
|
#endif /* !__3Dfx_PCI_CFG__ */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifdef SST1INIT_VIDEO_ALLOCATE
|
|
/* SST1INIT_VIDEO_ALLOCATE is only #defined in video.c
|
|
|
|
Define useful clock and video timings
|
|
Clocks generated are follows:
|
|
Clock Freq. (MHz) =
|
|
[14.318 * (clkTiming_M+2)] / [(clkTiming_N+2) * (2^clkTiming_P)]
|
|
|
|
Solving for clkTiming_M yields:
|
|
clkTiming_M =
|
|
[ [(Clock Freq (Mhz)) * (clkTiming_N+2) * (2^clkTiming_P)] / 14.318 ] - 2
|
|
|
|
NOTE: [14.318 * (clkTiming_M+2)] / (clkTiming_N+2) should be between
|
|
120 and 240
|
|
NOTE: Max. M is 127
|
|
NOTE: Max. N is 31
|
|
NOTE: Max. P is 3
|
|
NOTE: Max. L is 15
|
|
NOTE: Max. IB is 15
|
|
*/
|
|
|
|
|
|
/* H3D video timing structures */
|
|
#ifdef H3D
|
|
/* This guy's not used anywhere */
|
|
sst1VideoTimingStruct SST_VREZ_640X502_60 = {
|
|
96, /* hSyncOn */
|
|
704, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
523, /* vSyncOff */
|
|
38, /* hBackPorch */
|
|
15, /* vBackPorch */
|
|
640, /* xDimension */
|
|
502, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
160, /* memOffset */
|
|
20, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
25.175F, /* clkFreq16bpp */
|
|
50.350F /* clkFreq24bpp */
|
|
};
|
|
|
|
|
|
/* Line doubled 640x480...line doubling done externally */
|
|
sst1VideoTimingStruct SST_VREZ_640X960LD_60 = {
|
|
45, /* hSyncOn */
|
|
785, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
1044, /* vSyncOff */
|
|
100, /* hBackPorch */
|
|
18, /* vBackPorch */
|
|
640, /* xDimension */
|
|
502, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
160, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
50.82F, /* clkFreq16bpp */
|
|
101.64F /* clkFreq24bpp */
|
|
};
|
|
|
|
|
|
/* Full resolution 640x480... */
|
|
sst1VideoTimingStruct SST_VREZ_640X960_60 = {
|
|
45, /* hSyncOn */
|
|
785, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
1044, /* vSyncOff */
|
|
100, /* hBackPorch */
|
|
18, /* vBackPorch */
|
|
640, /* xDimension */
|
|
1004, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
320, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
50.82F, /* clkFreq16bpp */
|
|
101.64F /* clkFreq24bpp */
|
|
};
|
|
|
|
|
|
/* Line doubled 800x600...line doubling done externally */
|
|
sst1VideoTimingStruct SST_VREZ_800X1200LD_45 = {
|
|
63, /* hSyncOn */
|
|
983, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
1242, /* vSyncOff */
|
|
150, /* hBackPorch */
|
|
27, /* vBackPorch */
|
|
800, /* xDimension */
|
|
608, /* yDimension */
|
|
42, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
247, /* memOffset */
|
|
26, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
56.25F, /* clkFreq16bpp */
|
|
112.5F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_800X630_60 = {
|
|
127, /* hSyncOn */
|
|
927, /* hSyncOff */
|
|
4, /* vSyncOn */
|
|
656, /* vSyncOff */
|
|
86, /* hBackPorch */
|
|
23, /* vBackPorch */
|
|
800, /* xDimension */
|
|
630, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
260, /* memOffset */
|
|
26, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
40.0F, /* clkFreq16bpp */
|
|
80.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
|
|
/* Full res 800x600...so far, ain't nobody got enough memory */
|
|
sst1VideoTimingStruct SST_VREZ_800X1200_45 = {
|
|
63, /* hSyncOn */
|
|
983, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
1244, /* vSyncOff */
|
|
150, /* hBackPorch */
|
|
27, /* vBackPorch */
|
|
800, /* xDimension */
|
|
1216, /* yDimension */
|
|
42, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
494, /* memOffset */
|
|
26, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
56.25F, /* clkFreq16bpp */
|
|
112.5F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_960X742_60 = {
|
|
103, /* hSyncOn */
|
|
1151, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
765, /* vSyncOff */
|
|
142, /* hBackPorch */
|
|
22, /* vBackPorch */
|
|
960, /* xDimension */
|
|
742, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
360, /* memOffset */
|
|
30, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
56.219F, /* clkFreq16bpp */
|
|
112.437F /* clkFreq24bpp */
|
|
};
|
|
|
|
#endif
|
|
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X200_70 = {
|
|
96, /* hSyncOn */
|
|
704, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
447, /* vSyncOff */
|
|
48, /* hBackPorch */
|
|
35, /* vBackPorch */
|
|
320, /* xDimension */
|
|
200, /* yDimension */
|
|
70, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
35, /* memOffset */
|
|
10, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
25.175F, /* clkFreq16bpp */
|
|
50.350F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X200_75 = {
|
|
99, /* hSyncOn */
|
|
733, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
429, /* vSyncOff */
|
|
52, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
320, /* xDimension */
|
|
200, /* yDimension */
|
|
75, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
35, /* memOffset */
|
|
10, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
27.0F, /* clkFreq16bpp */
|
|
54.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X200_85 = {
|
|
63, /* hSyncOn */
|
|
767, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
442, /* vSyncOff */
|
|
94, /* hBackPorch */
|
|
41, /* vBackPorch */
|
|
320, /* xDimension */
|
|
200, /* yDimension */
|
|
85, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
35, /* memOffset */
|
|
10, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
31.5F, /* clkFreq16bpp */
|
|
63.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X200_120 = {
|
|
67, /* hSyncOn */
|
|
798, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
424, /* vSyncOff */
|
|
94, /* hBackPorch */
|
|
16, /* vBackPorch */
|
|
320, /* xDimension */
|
|
200, /* yDimension */
|
|
120, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
35, /* memOffset */
|
|
10, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
44.47F, /* clkFreq16bpp */
|
|
88.94F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X240_60 = {
|
|
96, /* hSyncOn */
|
|
704, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
523, /* vSyncOff */
|
|
38, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
320, /* xDimension */
|
|
240, /* yDimension */
|
|
60, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
40, /* memOffset */
|
|
10, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
25.175F, /* clkFreq16bpp */
|
|
50.350F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X240_75 = {
|
|
63, /* hSyncOn */
|
|
775, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
497, /* vSyncOff */
|
|
118, /* hBackPorch */
|
|
16, /* vBackPorch */
|
|
320, /* xDimension */
|
|
240, /* yDimension */
|
|
75, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
40, /* memOffset */
|
|
10, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
31.5F, /* clkFreq16bpp */
|
|
63.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X240_85 = {
|
|
55, /* hSyncOn */
|
|
776, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
506, /* vSyncOff */
|
|
78, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
320, /* xDimension */
|
|
240, /* yDimension */
|
|
85, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
40, /* memOffset */
|
|
10, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
36.0F, /* clkFreq16bpp */
|
|
72.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_320X240_120 = {
|
|
45, /* hSyncOn */
|
|
785, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
506, /* vSyncOff */
|
|
100, /* hBackPorch */
|
|
18, /* vBackPorch */
|
|
320, /* xDimension */
|
|
240, /* yDimension */
|
|
120, /* refreshRate */
|
|
0x3, /* miscCtrl */
|
|
40, /* memOffset */
|
|
10, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
50.82F, /* clkFreq16bpp */
|
|
101.64F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_400X300_60 = {
|
|
39, /* hSyncOn */
|
|
471, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
619, /* vSyncOff */
|
|
54, /* hBackPorch */
|
|
18, /* vBackPorch */
|
|
400, /* xDimension */
|
|
300, /* yDimension */
|
|
60, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
70, /* memOffset */
|
|
14, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
19.108F, /* clkFreq16bpp */
|
|
38.216F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_400X300_75 = {
|
|
39, /* hSyncOn */
|
|
487, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
624, /* vSyncOff */
|
|
62, /* hBackPorch */
|
|
23, /* vBackPorch */
|
|
400, /* xDimension */
|
|
300, /* yDimension */
|
|
75, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
70, /* memOffset */
|
|
14, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
24.829F, /* clkFreq16bpp */
|
|
49.658F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_400X300_85 = {
|
|
39, /* hSyncOn */
|
|
487, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
627, /* vSyncOff */
|
|
62, /* hBackPorch */
|
|
26, /* vBackPorch */
|
|
400, /* xDimension */
|
|
300, /* yDimension */
|
|
85, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
70, /* memOffset */
|
|
14, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
28.274F, /* clkFreq16bpp */
|
|
56.548F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_400X300_120 = {
|
|
39, /* hSyncOn */
|
|
503, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
640, /* vSyncOff */
|
|
70, /* hBackPorch */
|
|
39, /* vBackPorch */
|
|
400, /* xDimension */
|
|
300, /* yDimension */
|
|
120, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
70, /* memOffset */
|
|
14, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
41.975F, /* clkFreq16bpp */
|
|
83.950F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* 512x256@60 only syncs to Arcade-style monitors */
|
|
sst1VideoTimingStruct SST_VREZ_512X256_60 = {
|
|
41, /* hSyncOn */
|
|
626, /* hSyncOff */
|
|
4, /* vSyncOn */
|
|
286, /* vSyncOff */
|
|
65, /* hBackPorch */
|
|
24, /* vBackPorch */
|
|
512, /* xDimension */
|
|
256, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
64, /* memOffset */
|
|
16, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXFALSE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
23.334F, /* clkFreq16bpp */
|
|
23.334F /* clkFreq24bpp */
|
|
};
|
|
|
|
#if 0
|
|
// For Arcade monitors...
|
|
sst1VideoTimingStruct SST_VREZ_512X384_60 = {
|
|
23, /* hSyncOn */
|
|
640, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
411, /* vSyncOff */
|
|
90, /* hBackPorch */
|
|
24, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXFALSE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
33.0F, /* clkFreq16bpp */
|
|
33.0F /* clkFreq24bpp */
|
|
};
|
|
#else
|
|
// For PC monitors...
|
|
sst1VideoTimingStruct SST_VREZ_512X384_60 = {
|
|
55, /* hSyncOn */
|
|
615, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
792, /* vSyncOff */
|
|
78, /* hBackPorch */
|
|
23, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
60, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
32.054F, /* clkFreq16bpp */
|
|
64.108F /* clkFreq24bpp */
|
|
};
|
|
#endif
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_72 = {
|
|
51, /* hSyncOn */
|
|
591, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
430, /* vSyncOff */
|
|
55, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
72, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
20.093F, /* clkFreq16bpp */
|
|
40.186F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_75 = {
|
|
55, /* hSyncOn */
|
|
631, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
799, /* vSyncOff */
|
|
86, /* hBackPorch */
|
|
30, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
75, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
41.383F, /* clkFreq16bpp */
|
|
82.766F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_75_NOSCANDOUBLE = {
|
|
47, /* hSyncOn */
|
|
591, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
399, /* vSyncOff */
|
|
62, /* hBackPorch */
|
|
14, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
19.296F, /* clkFreq16bpp */
|
|
38.592F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_85 = {
|
|
55, /* hSyncOn */
|
|
631, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
804, /* vSyncOff */
|
|
86, /* hBackPorch */
|
|
35, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
85, /* refreshRate */
|
|
0x2, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
47.193F, /* clkFreq16bpp */
|
|
94.386F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_85_NOSCANDOUBLE = {
|
|
55, /* hSyncOn */
|
|
599, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
401, /* vSyncOff */
|
|
70, /* hBackPorch */
|
|
16, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
22.527F, /* clkFreq16bpp */
|
|
45.054F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_512X384_120 = {
|
|
25, /* hSyncOn */
|
|
650, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
409, /* vSyncOff */
|
|
110, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
512, /* xDimension */
|
|
384, /* yDimension */
|
|
120, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
96, /* memOffset */
|
|
16, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
33.5F, /* clkFreq16bpp */
|
|
67.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X400_70 = {
|
|
96, /* hSyncOn */
|
|
704, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
447, /* vSyncOff */
|
|
48, /* hBackPorch */
|
|
35, /* vBackPorch */
|
|
640, /* xDimension */
|
|
400, /* yDimension */
|
|
70, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
130, /* memOffset */
|
|
20, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
25.175F, /* clkFreq16bpp */
|
|
50.350F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X400_75 = {
|
|
99, /* hSyncOn */
|
|
733, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
429, /* vSyncOff */
|
|
52, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
640, /* xDimension */
|
|
400, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
130, /* memOffset */
|
|
20, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
27.0F, /* clkFreq16bpp */
|
|
54.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X400_85 = {
|
|
63, /* hSyncOn */
|
|
767, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
442, /* vSyncOff */
|
|
94, /* hBackPorch */
|
|
41, /* vBackPorch */
|
|
640, /* xDimension */
|
|
400, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
130, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
31.5F, /* clkFreq16bpp */
|
|
63.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X400_120 = {
|
|
67, /* hSyncOn */
|
|
798, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
424, /* vSyncOff */
|
|
94, /* hBackPorch */
|
|
16, /* vBackPorch */
|
|
640, /* xDimension */
|
|
400, /* yDimension */
|
|
120, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
130, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
44.47F, /* clkFreq16bpp */
|
|
88.94F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X480_60 = {
|
|
96, /* hSyncOn */
|
|
|
|
704, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
523, /* vSyncOff */
|
|
38, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
640, /* xDimension */
|
|
480, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
150, /* memOffset */
|
|
20, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
25.175F, /* clkFreq16bpp */
|
|
50.350F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X480_75 = {
|
|
63, /* hSyncOn */
|
|
775, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
497, /* vSyncOff */
|
|
118, /* hBackPorch */
|
|
16, /* vBackPorch */
|
|
640, /* xDimension */
|
|
480, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
150, /* memOffset */
|
|
20, /* tilesInX */
|
|
25, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
31.5F, /* clkFreq16bpp */
|
|
63.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X480_85 = {
|
|
55, /* hSyncOn */
|
|
776, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
506, /* vSyncOff */
|
|
78, /* hBackPorch */
|
|
25, /* vBackPorch */
|
|
640, /* xDimension */
|
|
480, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
150, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
36.0F, /* clkFreq16bpp */
|
|
72.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_640X480_120 = {
|
|
45, /* hSyncOn */
|
|
785, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
506, /* vSyncOff */
|
|
100, /* hBackPorch */
|
|
18, /* vBackPorch */
|
|
640, /* xDimension */
|
|
480, /* yDimension */
|
|
120, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
150, /* memOffset */
|
|
20, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
50.82F, /* clkFreq16bpp */
|
|
101.64F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
// 800x600 requires 832x608 amount of memory usage...
|
|
sst1VideoTimingStruct SST_VREZ_800X600_60 = {
|
|
127, /* hSyncOn */
|
|
927, /* hSyncOff */
|
|
4, /* vSyncOn */
|
|
624, /* vSyncOff */
|
|
86, /* hBackPorch */
|
|
23, /* vBackPorch */
|
|
800, /* xDimension */
|
|
600, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
247, /* memOffset */
|
|
26, /* tilesInX */
|
|
23, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
40.0F, /* clkFreq16bpp */
|
|
80.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_800X600_75 = {
|
|
79, /* hSyncOn */
|
|
975, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
622, /* vSyncOff */
|
|
158, /* hBackPorch */
|
|
21, /* vBackPorch */
|
|
800, /* xDimension */
|
|
600, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
247, /* memOffset */
|
|
26, /* tilesInX */
|
|
21, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
49.5F, /* clkFreq16bpp */
|
|
99.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
/* VESA Standard */
|
|
/* Verified 10/21/96 */
|
|
sst1VideoTimingStruct SST_VREZ_800X600_85 = {
|
|
63, /* hSyncOn */
|
|
983, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
628, /* vSyncOff */
|
|
150, /* hBackPorch */
|
|
27, /* vBackPorch */
|
|
800, /* xDimension */
|
|
600, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
247, /* memOffset */
|
|
26, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
56.25F, /* clkFreq16bpp */
|
|
112.5F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_800X600_120 = {
|
|
87, /* hSyncOn */
|
|
999, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
640, /* vSyncOff */
|
|
142, /* hBackPorch */
|
|
39, /* vBackPorch */
|
|
800, /* xDimension */
|
|
600, /* yDimension */
|
|
120, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
247, /* memOffset */
|
|
26, /* tilesInX */
|
|
17, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
83.950F, /* clkFreq16bpp */
|
|
83.950F /* clkFreq24bpp -- unsupported */
|
|
};
|
|
|
|
// 856x480 requires 896x480 amount of memory usage...
|
|
sst1VideoTimingStruct SST_VREZ_856X480_60 = {
|
|
136, /* hSyncOn */
|
|
1008, /* hSyncOff */
|
|
2, /* vSyncOn */
|
|
523, /* vSyncOff */
|
|
100, /* hBackPorch */
|
|
23, /* vBackPorch */
|
|
856, /* xDimension */
|
|
480, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
210, /* memOffset */
|
|
28, /* tilesInX */
|
|
16, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
36.0F, /* clkFreq16bpp */
|
|
72.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
// 960x720 requires 960x736 amount of memory usage...
|
|
sst1VideoTimingStruct SST_VREZ_960X720_60 = {
|
|
103, /* hSyncOn */
|
|
1151, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
743, /* vSyncOff */
|
|
142, /* hBackPorch */
|
|
22, /* vBackPorch */
|
|
960, /* xDimension */
|
|
720, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
345, /* memOffset */
|
|
30, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXTRUE, /* video24BPPIsOK */
|
|
56.219F, /* clkFreq16bpp */
|
|
112.437F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_960X720_75 = {
|
|
103, /* hSyncOn */
|
|
1183, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
749, /* vSyncOff */
|
|
158, /* hBackPorch */
|
|
28, /* vBackPorch */
|
|
960, /* xDimension */
|
|
720, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
345, /* memOffset */
|
|
30, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
72.643F, /* clkFreq16bpp */
|
|
72.643F /* clkFreq24bpp -- unsupported */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_960X720_85 = {
|
|
103, /* hSyncOn */
|
|
1199, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
753, /* vSyncOff */
|
|
166, /* hBackPorch */
|
|
32, /* vBackPorch */
|
|
960, /* xDimension */
|
|
720, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
345, /* memOffset */
|
|
30, /* tilesInX */
|
|
19, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
83.795F, /* clkFreq16bpp */
|
|
83.795F /* clkFreq24bpp -- unsupported */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_1024X768_60 = {
|
|
136, /* hSyncOn */
|
|
1208, /* hSyncOff */
|
|
6, /* vSyncOn */
|
|
800, /* vSyncOff */
|
|
160, /* hBackPorch */
|
|
29, /* vBackPorch */
|
|
1024, /* xDimension */
|
|
768, /* yDimension */
|
|
60, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
384, /* memOffset */
|
|
32, /* tilesInX */
|
|
16, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
65.0F, /* clkFreq16bpp */
|
|
130.0F /* clkFreq24bpp */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_1024X768_75 = {
|
|
96, /* hSyncOn */
|
|
1216, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
797, /* vSyncOff */
|
|
176, /* hBackPorch */
|
|
28, /* vBackPorch */
|
|
1024, /* xDimension */
|
|
768, /* yDimension */
|
|
75, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
384, /* memOffset */
|
|
32, /* tilesInX */
|
|
16, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
78.75F, /* clkFreq16bpp */
|
|
78.75F /* clkFreq24bpp -- unsupported */
|
|
};
|
|
|
|
sst1VideoTimingStruct SST_VREZ_1024X768_85 = {
|
|
96, /* hSyncOn */
|
|
1280, /* hSyncOff */
|
|
3, /* vSyncOn */
|
|
805, /* vSyncOff */
|
|
208, /* hBackPorch */
|
|
36, /* vBackPorch */
|
|
1024, /* xDimension */
|
|
768, /* yDimension */
|
|
85, /* refreshRate */
|
|
0, /* miscCtrl */
|
|
384, /* memOffset */
|
|
32, /* tilesInX */
|
|
16, /* vFifoThreshold */
|
|
FXTRUE, /* video16BPPIsOK */
|
|
FXFALSE, /* video24BPPIsOK */
|
|
94.5F, /* clkFreq16bpp */
|
|
94.5F /* clkFreq24bpp -- unsupported */
|
|
};
|
|
|
|
#else /* SST1INIT_VIDEO_ALLOCATE */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern sst1VideoTimingStruct SST_VREZ_640X480_60;
|
|
extern sst1VideoTimingStruct SST_VREZ_800X600_60;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SST1INIT_VIDEO_ALLOCATE */
|
|
|
|
#endif /* !__SST1INIT_H__ */
|