Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

152 lines
4.2 KiB

/**********************************************************
* Copyright Cirrus Logic, 1997. All rights reserved.
***********************************************************
*
* 5465BW.H - Bandwidth function header for CL-GD5465
*
***********************************************************
*
* Author: Rick Tillery
* Date: 03/20/97
*
* Revision History:
* -----------------
* WHO WHEN WHAT/WHY/HOW
* --- ---- ------------
*
***********************************************************/
// If WinNT 3.5 skip all the source code
#if defined WINNT_VER35 // WINNT_VER35
#else
#ifndef _5465BW_H
#define _5465BW_H
#ifndef WINNT_VER40
#include <Windows.h>
#endif
#ifdef DEBUGSTRINGS
#ifndef ODS
extern void __cdecl Msg( LPSTR szFormat, ... );
#define ODS Msg
#endif // ODS
#else
#ifndef ODS
#define ODS (void)
#endif // ODS
#endif // DEBUGSTRINGS
#ifdef _DEBUG
#define BREAK1 _asm int 01h
#define BREAK3 _asm int 03h
#else
#define BREAK1
#define BREAK3
#endif // _DEBUG
#include "BW.h"
#include <stdlib.h>
//
// CL-GD5465 specifications
//
#define FIFOWIDTH 64 // Bits
#define BLTFIFOSIZE 32 // QWORDS
#define CAPFIFOSIZE 16 // QWORDS
#define GFXFIFOSIZE 64 // QWORDS
#define VIDFIFOSIZE 32 // QWORDS
#define NORM_RANDOM 14 // MCLKs for random access
#ifndef OLDONE
#define CONC_RANDOM 8 // MCLKs for concurrent random access
#define CONC_HIT_LATENCY (8 - 2) // MCLKs for concurrent hit minus
#else
#define CONC_RANDOM 10 // MCLKs for concurrent random access
#define CONC_HIT_LATENCY 8 // MCLKs for concurrent hit minus
#endif
#define NORM_HIT_LATENCY (4 - 2) // MCLKs for hit minus MCLK/VCLK sync
// MCLK/VCLK sync
#define RIF_SAVINGS 4 // MCLKs savings for sequential randoms
#define SYNCDELAY 3 // MCLKs for synchronization delay to
// account for VCLK/MCLK sync, state
// machine and RIF delays
#define DISP_LATENCY 6ul // Max delay through display arbitraion
// pipeline.
#define ONEVIDLEVELFILL 2 // MCLKs to fill one video FIFO level
#define ONELEVEL 1
#define ARBSYNC 5 // Arbitration sync (pipelining)
#define CURSORFILL 2
#define BLTFILL (BLTFIFOSIZE / 2) // MCLKs to burst fill BLT FIFO
#define CAPFILL (CAPFIFOSIZE / 2) // MCLKs to burst fill capture FIFO
#define VIDFILL (VIDFIFOSIZE / 2) // MCLKs to burst fill video FIFO
#define VID420FILL (VIDFIFOSIZE / 4) // 4:2:0 divides FIFO into two
#define REF_XTAL (14318182ul) // Crystal reference frequency (Hz)
#define TVO_XTAL (27000000ul) // TV-Out reference freq.
typedef struct BWREGS_
{
BYTE MISCOutput; // 0x0080
BYTE VCLK3Denom; // 0x0084
BYTE VCLK3Num; // 0x0088
WORD DispThrsTiming; // 0x00EA
WORD GfVdFormat; // 0x00C0
WORD RIFControl; // 0x0200
BYTE BCLK_Mult; // 0x02C0
BYTE BCLK_Denom; // 0x02C1
WORD Control2; // 0x0418
BYTE CR1; // 0x4 Get Screen Width from these registers
BYTE CR1E; // 0x78
}BWREGS, FAR *LPBWREGS;
#ifdef WINNT_VER40
// Be sure to synchronize the following structures with the one
// in i386\Laguna.inc!
//
typedef struct PROGREGS_
{
WORD VW0_FIFO_THRSH;
WORD DispThrsTiming;
}PROGREGS, FAR *LPPROGREGS;
#else
typedef struct PROGREGS_
{
WORD VW0_FIFO_THRSH;
WORD DispThrsTiming;
}PROGREGS, FAR *LPPROGREGS;
#endif
static int ScaleMultiply(DWORD, DWORD, LPDWORD);
DWORD ChipCalcTileWidth(LPBWREGS);
BOOL ChipCalcMCLK(LPBWREGS, LPDWORD);
BOOL ChipCalcVCLK(LPBWREGS, LPDWORD);
BOOL ChipGetMCLK
(
#ifdef WINNT_VER40
PDEV *,
#endif
LPDWORD
);
BOOL ChipGetVCLK
(
#ifdef WINNT_VER40
PDEV *,
#endif
LPDWORD
);
BOOL ChipIsEnoughBandwidth(LPPROGREGS, LPVIDCONFIG, LPBWREGS);
#endif // _5465BW_H
#endif // WINNT_VER35