654 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			654 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright © 2001 Keith Packard
 | |
|  *
 | |
|  * Permission to use, copy, modify, distribute, and sell this software and its
 | |
|  * documentation for any purpose is hereby granted without fee, provided that
 | |
|  * the above copyright notice appear in all copies and that both that
 | |
|  * copyright notice and this permission notice appear in supporting
 | |
|  * documentation, and that the name of Keith Packard not be used in
 | |
|  * advertising or publicity pertaining to distribution of the software without
 | |
|  * specific, written prior permission.  Keith Packard makes no
 | |
|  * representations about the suitability of this software for any purpose.  It
 | |
|  * is provided "as is" without express or implied warranty.
 | |
|  *
 | |
|  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 | |
|  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 | |
|  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 | |
|  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 | |
|  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 | |
|  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 | |
|  * PERFORMANCE OF THIS SOFTWARE.
 | |
|  */
 | |
| 
 | |
| #ifndef _MACH64_H_
 | |
| #define _MACH64_H_
 | |
| #include <vesa.h>
 | |
| #include "kxv.h"
 | |
| 
 | |
| /*
 | |
|  * offset from ioport beginning 
 | |
|  */
 | |
| 
 | |
| #define MACH64_REG_BASE(c)	    ((c)->attr.address[1])
 | |
| #define MACH64_REG_SIZE(c)	    (4096)
 | |
| 
 | |
| #define MACH64_REG_OFF(c)	    (1024)
 | |
| #define MACH64_MEDIA_REG_OFF(c)	    (0)
 | |
| 
 | |
| typedef volatile CARD8	VOL8;
 | |
| typedef volatile CARD16	VOL16;
 | |
| typedef volatile CARD32	VOL32;
 | |
| 
 | |
| typedef struct _Reg {
 | |
|     VOL32	CRTC_H_TOTAL_DISP;	    /* 0x00 */
 | |
|     VOL32	CRTC_H_SYNC_STRT_WID;	    /* 0x01 */
 | |
|     VOL32	CRTC_V_TOTAL_DISP;	    /* 0x02 */
 | |
|     VOL32	CRTC_V_SYNC_STRT_WID;	    /* 0x03 */
 | |
|     VOL32	CRTC_VLINE_CRNT_VLINE;	    /* 0x04 */
 | |
|     VOL32	CRTC_OFF_PITCH;		    /* 0x05 */
 | |
|     VOL32	CRTC_INT_CNTL;		    /* 0x06 */
 | |
|     VOL32	CRTC_GEN_CNTL;		    /* 0x07 */
 | |
|     VOL32	DSP_CONFIG;		    /* 0x08 */
 | |
|     VOL32	DSP_ON_OFF;		    /* 0x09 */
 | |
|     VOL32	TIMER_CONFIG;		    /* 0x0a */
 | |
|     VOL32	MEM_BUF_CNTL;		    /* 0x0b */
 | |
|     VOL32	unused0;		    /* 0x0c */
 | |
|     VOL32	MEM_ADDR_CONFIG;	    /* 0x0d */
 | |
|     VOL32	CRT_TRAP;		    /* 0x0e */
 | |
|     VOL32	I2C_CNTL_0;		    /* 0x0f */
 | |
|     VOL32	OVR_CLR;		    /* 0x10 */
 | |
|     VOL32	OVR_WID_LEFT_RIGHT;	    /* 0x11 */
 | |
|     VOL32	OVR_WID_TOP_BOTTOM;	    /* 0x12 */
 | |
|     VOL32	VGA_DSP_CONFIG;		    /* 0x13 */
 | |
|     VOL32	VGA_DSP_ON_OFF;		    /* 0x14 */
 | |
|     VOL32	DSP2_CONFIG;		    /* 0x15 */
 | |
|     VOL32	DSP2_ON_OFF;		    /* 0x16 */
 | |
|     VOL32	CRTC2_OFF_PITCH;	    /* 0x17 */
 | |
|     VOL32	CUR_CLR0;		    /* 0x18 */
 | |
|     VOL32	CUR_CLR1;		    /* 0x19 */
 | |
|     VOL32	CUR_OFFSET;		    /* 0x1a */
 | |
|     VOL32	CUR_HORZ_VERT_POSN;	    /* 0x1b */
 | |
|     VOL32	CUR_HORZ_VERT_OFF;	    /* 0x1c */
 | |
|     VOL32	TV_OUT_INDEX;		    /* 0x1d */
 | |
|     VOL32	GP_IO;			    /* 0x1e */
 | |
|     VOL32	HW_DEBUG;		    /* 0x1f */
 | |
|     VOL32	SCRATCH_REG0;		    /* 0x20 */
 | |
|     VOL32	SCRATCH_REG1;
 | |
|     VOL32	SCRATCH_REG2;
 | |
|     VOL32	SCRATCH_REG3;
 | |
|     VOL32	CLOCK_CNTL;
 | |
|     VOL32	CONFIG_STAT1;
 | |
|     VOL32	CONFIG_STAT2;
 | |
|     VOL32	TV_OUT_DATA;
 | |
|     VOL32	BUS_CNTL;		    /* 0x28 */
 | |
|     VOL32	LCD_INDEX;		    /* 0x29 */
 | |
|     VOL32	LCD_DATA;		    /* 0x2a */
 | |
|     VOL32	EXT_MEM_CNTL;
 | |
|     VOL32	MEM_CNTL;
 | |
|     VOL32	MEM_VGA_WP_SEL;
 | |
|     VOL32	MEM_VGA_RP_SEL;
 | |
|     VOL32	I2C_CNTL_1;
 | |
|     VOL32	DAC_REGS;		    /* 0x30 */
 | |
|     VOL32	DAC_CNTL;		    /* 0x31 */
 | |
|     VOL32	unused_32;
 | |
|     VOL32	unused_33;
 | |
|     VOL32	GEN_TEST_CNTL;		    /* 0x34 */
 | |
|     VOL32	CUSTOM_MACRO_CNTL;
 | |
|     VOL32	unused36;
 | |
|     VOL32	CONFIG_CNTL;
 | |
|     VOL32	CONFIG_CHIP_ID;
 | |
|     VOL32	CONFIG_STAT0;
 | |
|     VOL32	CRC_SIG;
 | |
|     VOL32	unused_3b;
 | |
|     VOL32	unused_3c;
 | |
|     VOL32	unused_3d;
 | |
|     VOL32	unused_3e;
 | |
|     VOL32	unused_3f;
 | |
|     VOL32	DST_OFF_PITCH;		    /* 0x40 */
 | |
|     VOL32	DST_X;
 | |
|     VOL32	DST_Y;
 | |
|     VOL32	DST_Y_X;
 | |
|     VOL32	DST_WIDTH;
 | |
|     VOL32	DST_HEIGHT;
 | |
|     VOL32	DST_HEIGHT_WIDTH;
 | |
|     VOL32	DST_X_WIDTH;
 | |
|     VOL32	DST_BRES_LNTH;
 | |
|     VOL32	DST_BRES_ERR;
 | |
|     VOL32	DST_BRES_INC;
 | |
|     VOL32	DST_BRES_DEC;
 | |
|     VOL32	DST_CNTL;
 | |
|     VOL32	DST_Y_X_ALIAS;
 | |
|     VOL32	TRAIL_BRES_ERR;
 | |
|     VOL32	TRAIL_BRES_INC;
 | |
|     VOL32	TRAIL_BRES_DEC;
 | |
|     VOL32	LEAD_BRES_LNTH;
 | |
|     VOL32	Z_OFF_PITCH;
 | |
|     VOL32	Z_CNTL;
 | |
|     VOL32	ALPHA_TST_CNTL;
 | |
|     VOL32	unused55;
 | |
|     VOL32	SECONDARY_STW_EXP;
 | |
|     VOL32	SECONDARY_S_X_INC;
 | |
|     VOL32	SECONDARY_S_Y_INC;
 | |
|     VOL32	SECONDARY_S_START;
 | |
|     VOL32	SECONDARY_W_X_INC;
 | |
|     VOL32	SECONDARY_W_Y_INC;
 | |
|     VOL32	SECONDARY_W_START;
 | |
|     VOL32	SECONDARY_T_X_INC;
 | |
|     VOL32	SECONDARY_T_Y_INC;
 | |
|     VOL32	SECONDARY_T_START;
 | |
|     VOL32	SRC_OFF_PITCH;
 | |
|     VOL32	SRC_X;
 | |
|     VOL32	SRC_Y;
 | |
|     VOL32	SRC_Y_X;
 | |
|     VOL32	SRC_WIDTH1;
 | |
|     VOL32	SRC_HEIGHT1;
 | |
|     VOL32	SRC_HEIGHT1_WIDTH1;
 | |
|     VOL32	SRC_X_START;
 | |
|     VOL32	SRC_Y_START;
 | |
|     VOL32	SRC_Y_X_START;
 | |
|     VOL32	SRC_WIDTH2;
 | |
|     VOL32	SRC_HEIGHT2;
 | |
|     VOL32	SRC_HEIGHT2_WIDTH2;
 | |
|     VOL32	SRC_CNTL;
 | |
|     VOL32	unused6e;
 | |
|     VOL32	unused6f;
 | |
|     union {
 | |
| 	struct {
 | |
|     VOL32	SCALE_OFF;		/* 0x70 */
 | |
|     VOL32	unused71;
 | |
|     VOL32	unused72;
 | |
|     VOL32	unused73;
 | |
|     VOL32	unused74;
 | |
|     VOL32	unused75;
 | |
|     VOL32	unused76;
 | |
|     VOL32	SCALE_WIDTH;
 | |
|     VOL32	SCALE_HEIGHT;
 | |
|     VOL32	unused79;
 | |
|     VOL32	unused7a;
 | |
|     VOL32	SCALE_PITCH;
 | |
|     VOL32	SCALE_X_INC;
 | |
|     VOL32	SCALE_Y_INC;
 | |
|     VOL32	SCALE_VACC;
 | |
|     VOL32	SCALE_3D_CNTL;		/* 0x7f */
 | |
| 	} scaler;
 | |
| 	struct {
 | |
|     VOL32	TEX_0_OFF;		/* 0x70 */
 | |
|     VOL32	TEX_1_OFF;
 | |
|     VOL32	TEX_2_OFF;
 | |
|     VOL32	TEX_3_OFF;
 | |
|     VOL32	TEX_4_OFF;
 | |
|     VOL32	TEX_5_OFF;
 | |
|     VOL32	TEX_6_OFF;
 | |
|     VOL32	TEX_7_OFF;
 | |
|     VOL32	TEX_8_OFF;
 | |
|     VOL32	TEX_9_OFF;
 | |
|     VOL32	TEX_10_OFF;
 | |
|     VOL32	S_Y_INC;
 | |
|     VOL32	RED_X_INC;
 | |
|     VOL32	GREEN_X_INC;		/* 0x7d */
 | |
|     VOL32	unused7e;
 | |
|     VOL32	unused7f;
 | |
| 	} texture;
 | |
|     } u;
 | |
|     VOL32	HOST_DATA[16];		/* 0x80 */
 | |
|     VOL32	HOST_CNTL;		/* 0x90 */
 | |
|     VOL32	BM_HOSTDATA;		/* 0x91 */
 | |
|     VOL32	BM_ADDR;		/* 0x92 */
 | |
|     VOL32	BM_GUI_TABLE_CMD;	/* 0x93 */
 | |
|     VOL32	unused94;		/* 0x94 */
 | |
|     VOL32	unused95;		/* 0x95 */
 | |
|     VOL32	unused96;		/* 0x96 */
 | |
|     VOL32	FOG_TABLE_INDEX;	/* 0x97 */
 | |
|     VOL32	FOG_TABLE_DATA[8];	/* 0x98 */
 | |
|     VOL32	PAT_REG0;		/* 0xa0 */
 | |
|     VOL32	PAT_REG1;
 | |
|     VOL32	PAT_CNTL;
 | |
|     VOL32	unused_0a3;
 | |
|     VOL32	unused_0a4;
 | |
|     VOL32	unused_0a5;
 | |
|     VOL32	unused_0a6;
 | |
|     VOL32	unused_0a7;
 | |
|     VOL32	SC_LEFT;
 | |
|     VOL32	SC_RIGHT;
 | |
|     VOL32	SC_LEFT_RIGHT;
 | |
|     VOL32	SC_TOP;
 | |
|     VOL32	SC_BOTTOM;
 | |
|     VOL32	SC_TOP_BOTTOM;
 | |
|     VOL32	USR1_DST_OFF_PITCH;
 | |
|     VOL32	USR2_DST_OFF_PITCH;
 | |
|     VOL32	DP_BKGD_CLR;		/* 0xb0 */
 | |
|     VOL32	DP_FRGD_CLR;
 | |
|     VOL32	DP_WRITE_MSK;
 | |
|     VOL32	unused_0b3;
 | |
|     VOL32	DP_PIX_WIDTH;
 | |
|     VOL32	DP_MIX;
 | |
|     VOL32	DP_SRC;
 | |
|     VOL32	DP_FRGD_CLR_MIX;
 | |
|     VOL32	DP_FRGD_BKGD_CLR;
 | |
|     VOL32	unused_0b9;
 | |
|     VOL32	DST_X_Y;
 | |
|     VOL32	DST_WIDTH_HEIGHT;
 | |
|     VOL32	USR_DST_PITCH;
 | |
|     VOL32	unused_0bd;
 | |
|     VOL32	DP_SET_GUI_ENGINE2;
 | |
|     VOL32	DP_SET_GUI_ENGINE;
 | |
|     VOL32	CLR_CMP_CLR;		/* 0xc0 */
 | |
|     VOL32	CLR_CMP_MSK;
 | |
|     VOL32	CLR_CMP_CNTL;
 | |
|     VOL32	unused_0c3;
 | |
|     VOL32	FIFO_STAT;
 | |
|     VOL32	unused_0c5;
 | |
|     VOL32	unused_0c6;
 | |
|     VOL32	unused_0c7;
 | |
|     VOL32	unused_0c8;
 | |
|     VOL32	unused_0c9;
 | |
|     VOL32	unused_0ca;
 | |
|     VOL32	unused_0cb;
 | |
|     VOL32	GUI_TRAJ_CNTL;
 | |
|     VOL32	unused_0cd;
 | |
|     VOL32	GUI_STAT;
 | |
|     VOL32	unused_0cf;
 | |
|     VOL32	TEX_PALETTE_INDEX;
 | |
|     VOL32	STW_EXP;
 | |
|     VOL32	LOG_MAX_INC;
 | |
|     VOL32	S_X_INC;
 | |
|     VOL32	S_Y_INC_2_SCALE_PITCH;
 | |
|     VOL32	S_START;
 | |
|     VOL32	W_X_INC;
 | |
|     VOL32	W_Y_INC;
 | |
|     VOL32	W_START;
 | |
|     VOL32	T_X_INC;
 | |
|     VOL32	T_Y_INC_SECONDARY_SCALE_PITCH;
 | |
|     VOL32	T_START;
 | |
|     VOL32	TEX_SIZE_PITCH;
 | |
|     VOL32	TEX_CNTL;
 | |
|     VOL32	SECONDARY_TEX_OFFSET_SECONDARY_SCALE_OFF;
 | |
|     VOL32	TEX_PALETTE;
 | |
|     VOL32	SCALE_PITCH_BOTH;	/* 0xe0 */
 | |
|     VOL32	SECONDARY_SCALE_OFF_ACC;
 | |
|     VOL32	SCALE_OFF_ACC;
 | |
|     VOL32	SCALE_DST_Y_X;
 | |
|     VOL32	unused_0e4;
 | |
|     VOL32	unused_0e5;
 | |
|     VOL32	COMPOSITE_SHADOW_ID;
 | |
|     VOL32	SECONDARY_SCALE_X_INC_SPECULAR_RED_X_INC;
 | |
|     VOL32	SPECULAR_RED_Y_INC;
 | |
|     VOL32	SPECULAR_RED_START_SECONDARY_SCALE_HACC;;
 | |
|     VOL32	SPECULAR_GREEN_X_INC;
 | |
|     VOL32	SPECULAR_GREEN_Y_INC;
 | |
|     VOL32	SPECULAR_GREEN_START;
 | |
|     VOL32	SPECULAR_BLUE_X_INC;
 | |
|     VOL32	SPECULAR_BLUE_Y_INC;
 | |
|     VOL32	SPECULAR_BLUE_START;
 | |
|     VOL32	RED_X_INC_SCALE_X_INC;
 | |
|     VOL32	RED_Y_INC;
 | |
|     VOL32	RED_START_SCALE_HACC;
 | |
|     VOL32	GREEN_X_INC_SCALE_Y_INC;
 | |
|     VOL32	GREEN_Y_INC_SECONDARY_SCALE_Y_INC;
 | |
|     VOL32	GREEN_START_SECONDARY_SCALE_VACC;
 | |
|     VOL32	BLUE_X_INC;
 | |
|     VOL32	BLUE_Y_INC;
 | |
|     VOL32	BLUE_START;
 | |
|     VOL32	Z_X_INC;
 | |
|     VOL32	Z_Y_INC;
 | |
|     VOL32	Z_START;
 | |
|     VOL32	ALPHA_X_INC;
 | |
|     VOL32	FOG_X_INC;
 | |
|     VOL32	ALPHA_Y_INC;
 | |
|     VOL32	FOG_Y_INC;
 | |
|     VOL32	ALPHA_START;
 | |
|     VOL32	FOG_START;
 | |
|     VOL32	unused_0ff;
 | |
| } Reg;					/* 0x100 */
 | |
| 
 | |
| #define DST_X_DIR		(1 << 0)
 | |
| #define DST_Y_DIR		(1 << 1)
 | |
| #define DST_Y_MAJOR		(1 << 2)
 | |
| #define DST_X_TILE		(1 << 3)
 | |
| #define DST_Y_TILE		(1 << 4)
 | |
| #define DST_LAST_PEL		(1 << 5)
 | |
| #define DST_POLYGON_EN		(1 << 6)
 | |
| #define DST_24_ROT_EN		(1 << 7)
 | |
| #define DST_24_ROT(n)		((n) << 8)
 | |
| #define DST_BRES_ZERO		(1 << 11)
 | |
| #define DST_POLYGON_RTEDGE_DIS	(1 << 12)
 | |
| #define TRAIL_X_DIR		(1 << 13)
 | |
| #define TRAP_FILL_DIR		(1 << 14)
 | |
| #define TRAIL_BRES_SIGN		(1 << 15)
 | |
| #define SRC_PATT_EN		(1 << 16)
 | |
| #define SRC_PATT_ROT_EN		(1 << 17)
 | |
| #define SRC_LINEAR_EN		(1 << 18)
 | |
| #define SRC_BYTE_ALIGN		(1 << 19)
 | |
| #define SRC_LINE_X_DIR		(1 << 20)
 | |
| #define SRC_8x8x8_BRUSH		(1 << 21)
 | |
| #define FAST_FILL_EN		(1 << 22)
 | |
| #define SRC_TRACK_DST		(1 << 23)
 | |
| #define PAT_MONO_EN		(1 << 24)
 | |
| #define PAT_CLR_4x2_EN		(1 << 25)
 | |
| #define PAT_CLR_8x1_EN		(1 << 26)
 | |
| #define HOST_BYTE_ALIGN		(1 << 28)
 | |
| #define HOST_BIG_ENDIAN_EN	(1 << 29)
 | |
| 
 | |
| /* BUS_CNTL bits */
 | |
| #define BUS_DBL_RESYNC		(1 << 0)
 | |
| #define BUS_MSTR_RESET		(1 << 1)
 | |
| #define BUS_FLUSH_BUF		(1 << 2)
 | |
| #define BUS_STOP_REQ_DIS	(1 << 3)
 | |
| #define BUS_APER_REG_DIS	(1 << 4)
 | |
| #define BUS_EXTRA_PIPE_DIS	(1 << 5)
 | |
| #define BUS_MASTER_DIS		(1 << 6)
 | |
| #define ROM_WRT_EN		(1 << 7)
 | |
| #define CHIP_HIDDEN_REV		(3 << 8)
 | |
| #define BUS_PCI_READ_RETRY_EN	(1 << 13)
 | |
| #define BUS_PCI_WRT_RETRY_EN	(1 << 15)
 | |
| #define BUS_RETRY_WS		(0xf << 16)
 | |
| #define BUS_MSTR_RD_MULT	(1 << 20)
 | |
| #define BUS_MSTR_RD_LINE	(1 << 21)
 | |
| #define BUS_SUSPEND		(1 << 22)
 | |
| #define LAT16X			(1 << 23)
 | |
| #define BUS_RD_DISCARD_EN	(1 << 24)
 | |
| #define BUS_RD_ABORT_EN		(1 << 25)
 | |
| #define BUS_MSTR_WS		(1 << 26)
 | |
| #define BUS_EXT_REG_EN		(1 << 27)
 | |
| #define BUS_MSTR_DISCONNECT_EN	(1 << 28)
 | |
| #define BUS_WRT_BURST		(1 << 29)
 | |
| #define BUS_READ_BURST		(1 << 30)
 | |
| #define BUS_RDY_READ_DLY	(1 << 31)
 | |
| 
 | |
| #define SCALE_PIX_EXPAND    (1 << 0)
 | |
| #define SCALE_Y2R_TEMP	    (1 << 1)
 | |
| #define SCALE_HORZ_MODE	    (1 << 2)
 | |
| #define SCALE_VERT_MODE	    (1 << 3)
 | |
| #define SCALE_SIGNED_UV	    (1 << 4)
 | |
| #define SCALE_GAMMA_SEL	    (3 << 5)
 | |
| #define SCALE_GAMMA_BRIGHT  (0 << 5)
 | |
| #define SCALE_GAMMA_22	    (1 << 5)
 | |
| #define SCALE_GAMMA_18	    (2 << 5)
 | |
| #define SCALE_GAMMA_14	    (3 << 5)
 | |
| #define SCALE_DISP_SEL	    (1 << 7)
 | |
| #define SCALE_BANDWIDTH	    (1 << 26)
 | |
| #define SCALE_DIS_LIMIT	    (1 << 27)
 | |
| #define SCALE_CLK_FORCE_ON  (1 << 29)
 | |
| #define SCALE_OVERLAY_EN    (1 << 30)
 | |
| #define SCALE_EN	    (1 << 31)
 | |
| 
 | |
| #define VIDEO_IN_VYUY422    (0xb)
 | |
| #define VIDEO_IN_YVYU422    (0xc)
 | |
| #define SCALER_IN_15bpp	    (0x3 << 16)
 | |
| #define SCALER_IN_16bpp	    (0x4 << 16)
 | |
| #define SCALER_IN_32bpp	    (0x6 << 16)
 | |
| #define SCALER_IN_YUV_9	    (0x9 << 16)
 | |
| #define SCALER_IN_YUV_12    (0xa << 16)
 | |
| #define SCALER_IN_VYUY422   (0xb << 16)
 | |
| #define SCALER_IN_YVYU422   (0xc << 16)
 | |
| 
 | |
| #define CAP_INPUT_MODE	    (1 << 0)
 | |
| #define CAP_BUF_MODE	    (1 << 2)
 | |
| #define CAP_START_BUF	    (1 << 3)
 | |
| #define CAP_BUF_TYPE_FIELD  (0 << 4)
 | |
| #define CAP_BUF_TYPE_ALTERNATING  (1 << 4)
 | |
| #define CAP_BUF_TYPE_FRAME  (2 << 4)
 | |
| 
 | |
| #define OVL_BUF_MODE	    (1 << 28)
 | |
| #define OVL_BUF_NEXT	    (1 << 29)
 | |
| 
 | |
| #define CAP_TRIGGER	    (3 << 0)
 | |
| #define OVL_CUR_BUF	    (1 << 5)
 | |
| #define OVL_BUF_STATUS	    (1 << 6)
 | |
| #define CAP_BUF_STATUS	    (1 << 7)
 | |
| #define CAPTURE_EN	    (1 << 31)
 | |
| 
 | |
| typedef struct _MediaReg {
 | |
|     VOL32	OVERLAY_Y_X_START;	/* 0x100 */
 | |
|     VOL32	OVERLAY_Y_X_END;
 | |
|     VOL32	OVERLAY_VIDEO_KEY_CLR;
 | |
|     VOL32	OVERLAY_VIDEO_KEY_MSK;
 | |
|     VOL32	OVERLAY_GRAPHICS_KEY_CLR;
 | |
|     VOL32	OVERLAY_GRAPHICS_KEY_MSK;
 | |
|     VOL32	OVERLAY_KEY_CNTL;
 | |
|     VOL32	unused_107;
 | |
|     VOL32	OVERLAY_SCALE_INC;
 | |
|     VOL32	OVERLAY_SCALE_CNTL;
 | |
|     VOL32	SCALER_HEIGHT_WIDTH;
 | |
|     VOL32	SCALER_TEST;
 | |
|     VOL32	unused_10c;
 | |
|     VOL32	SCALER_BUF0_OFFSET;
 | |
|     VOL32	SCALER_BUF1_OFFSET;
 | |
|     VOL32	SCALER_BUF_PITCH;
 | |
|     VOL32	CAPTURE_START_END;	/* 0x110 */
 | |
|     VOL32	CAPTURE_X_WIDTH;
 | |
|     VOL32	VIDEO_FORMAT;
 | |
|     VOL32	VBI_START_END;
 | |
|     VOL32	CAPTURE_CONFIG;
 | |
|     VOL32	TRIG_CNTL;
 | |
|     VOL32	OVERLAY_EXCLUSIVE_HORZ;
 | |
|     VOL32	OVERLAY_EXCLUSIVE_VERT;
 | |
|     VOL32	VBI_WIDTH;
 | |
|     VOL32	CAPTURE_DEBUG;
 | |
|     VOL32	VIDEO_SYNC_TEST;
 | |
|     VOL32	unused_11b;
 | |
|     VOL32	SNAPSHOT_VH_COUNTS;
 | |
|     VOL32	SNAPSHOT_F_COUNT;
 | |
|     VOL32	N_VIF_COUNT;
 | |
|     VOL32	SNAPSHOT_VIF_COUNT;
 | |
|     VOL32	CAPTURE_BUF0_OFFSET;	/* 0x120 */
 | |
|     VOL32	CAPTURE_BUF1_OFFSET;
 | |
|     VOL32	ONESHOT_BUF_OFFSET;
 | |
|     VOL32	unused_123;
 | |
|     VOL32	unused_124;
 | |
|     VOL32	unused_125;
 | |
|     VOL32	unused_126;
 | |
|     VOL32	unused_127;
 | |
|     VOL32	unused_128;
 | |
|     VOL32	unused_129;
 | |
|     VOL32	unused_12a;
 | |
|     VOL32	unused_12b;
 | |
|     VOL32	SNAPSHOT2_VH_COUNTS;
 | |
|     VOL32	SNAPSHOT2_F_COUNT;
 | |
|     VOL32	N_VIF2_COUNT;
 | |
|     VOL32	SNAPSHOT2_VIF_COUNT;
 | |
|     VOL32	MPP_CONFIG;		/* 0x130 */
 | |
|     VOL32	MPP_STROBE_SEQ;
 | |
|     VOL32	MPP_ADDR;
 | |
|     VOL32	MPP_DATA;
 | |
|     VOL32	unused_134;
 | |
|     VOL32	unused_135;
 | |
|     VOL32	unused_136;
 | |
|     VOL32	unused_137;
 | |
|     VOL32	unused_138;
 | |
|     VOL32	unused_139;
 | |
|     VOL32	unused_13a;
 | |
|     VOL32	unused_13b;
 | |
|     VOL32	unused_13c;
 | |
|     VOL32	unused_13d;
 | |
|     VOL32	unused_13e;
 | |
|     VOL32	unused_13f;
 | |
|     VOL32	TVO_CNTL;		/* 0x140 */
 | |
|     VOL32	unused_141[15];
 | |
|     VOL32	unused_150;		/* 0x150 */
 | |
|     VOL32	CRT_HORZ_VERT_LOAD;	/* 0x151 */
 | |
|     VOL32	AGP_BASE;		/* 0x152 */
 | |
|     VOL32	AGP_CNTL;		/* 0x153 */
 | |
|     VOL32	SCALER_COLOUR_CNTL;	/* 0x154 */
 | |
|     VOL32	SCALER_H_COEFF0;	/* 0x155 */
 | |
|     VOL32	SCALER_H_COEFF1;	/* 0x156 */
 | |
|     VOL32	SCALER_H_COEFF2;	/* 0x157 */
 | |
|     VOL32	SCALER_H_COEFF3;	/* 0x158 */
 | |
|     VOL32	SCALER_H_COEFF4;	/* 0x159 */
 | |
|     VOL32	unused_15a;
 | |
|     VOL32	unused_15b;
 | |
|     VOL32	GUI_CMDFIFO_DEBUG;
 | |
|     VOL32	GUI_CMDFIFO_DATA;
 | |
|     VOL32	GUI_CNTL;
 | |
|     VOL32	unused_15f;
 | |
|     VOL32	BM_FRAME_BUF_OFFSET;	/* 0x160 */
 | |
|     VOL32	BM_SYSTEM_MEM_ADDR;
 | |
|     VOL32	BM_COMMAND;
 | |
|     VOL32	BM_STATUS;
 | |
|     VOL32	unused_164[10];
 | |
|     VOL32	BM_GUI_TABLE;
 | |
|     VOL32	BM_SYSTEM_TABLE;
 | |
|     VOL32	unused_170[5];		/* 0x170 */
 | |
|     VOL32	SCALER_BUF0_OFFSET_U;
 | |
|     VOL32	SCALER_BUF0_OFFSET_V;
 | |
|     VOL32	SCALER_BUF1_OFFSET_U;
 | |
|     VOL32	SCALER_BUF1_OFFSET_V;
 | |
|     VOL32	unused_179[7];
 | |
|     VOL32	unused_180[16];		/* 0x180 */
 | |
|     VOL32	setup_engine[0x40];	/* 0x190 */
 | |
|     VOL32	dvd_subpicture[0x30];	/* 0x1d0 */
 | |
| } MediaReg;
 | |
| 
 | |
| #define MACH64_XY(x,y)	    (((x) & 0x7fff) | (((y) & 0x7fff) << 16))
 | |
| #define MACH64_YX(x,y)	    (((y) & 0x7fff) | (((x) & 0x7fff) << 16))
 | |
| 
 | |
| typedef struct _mach64Save {
 | |
|     CARD32	LCD_GEN_CTRL;
 | |
| } Mach64Save;
 | |
| 
 | |
| typedef struct _mach64CardInfo {
 | |
|     VesaCardPrivRec	vesa;
 | |
|     CARD8		*reg_base;
 | |
|     Reg			*reg;
 | |
|     MediaReg		*media_reg;
 | |
|     Mach64Save		save;
 | |
|     Bool		lcdEnabled;
 | |
| } Mach64CardInfo;
 | |
|     
 | |
| #define getMach64CardInfo(kd)	((Mach64CardInfo *) ((kd)->card->driver))
 | |
| #define mach64CardInfo(kd)	Mach64CardInfo	*mach64c = getMach64CardInfo(kd)
 | |
| 
 | |
| typedef struct _mach64Cursor {
 | |
|     int		width, height;
 | |
|     int		xhot, yhot;
 | |
|     Bool	has_cursor;
 | |
|     CursorPtr	pCursor;
 | |
|     Pixel	source, mask;
 | |
| } Mach64Cursor;
 | |
| 
 | |
| #define MACH64_CURSOR_WIDTH	64
 | |
| #define MACH64_CURSOR_HEIGHT	64
 | |
| 
 | |
| /*
 | |
|  * Xv information, optional
 | |
|  */
 | |
| typedef struct _mach64PortPriv {
 | |
|     CARD32      YBuf0Offset;
 | |
| 
 | |
|     CARD32      YBuf1Offset;
 | |
| 
 | |
|     CARD8	currentBuf;
 | |
| 
 | |
|     int		brightness;
 | |
|     int		saturation;
 | |
| 
 | |
|     RegionRec   clip;
 | |
|     CARD32      colorKey;
 | |
| 
 | |
|     Bool	videoOn;
 | |
|     Time        offTime;
 | |
|     Time        freeTime;
 | |
|     CARD32	size;
 | |
|     CARD32	offset;
 | |
|     KdOffscreenArea *off_screen;
 | |
| } Mach64PortPrivRec, *Mach64PortPrivPtr;
 | |
| 
 | |
| Bool mach64InitVideo(ScreenPtr pScreen);
 | |
| void mach64FiniVideo(ScreenPtr pScreen);
 | |
| 
 | |
| /*
 | |
|  * These values are per-format, which is essentially per-depth/per-bpp.
 | |
|  * Because bpp is fixed for the screen by depth, they're computed
 | |
|  * per-screen per-depth.
 | |
|  */
 | |
| 
 | |
| typedef struct _mach64ScreenInfo {
 | |
|     VesaScreenPrivRec		vesa;
 | |
|     Mach64Cursor		cursor;
 | |
|     CARD32			colorKey;
 | |
|     KdVideoAdaptorPtr		pAdaptor;
 | |
|     KaaScreenInfoRec		kaa;
 | |
| } Mach64ScreenInfo;
 | |
| 
 | |
| #define getMach64ScreenInfo(kd) ((Mach64ScreenInfo *) ((kd)->screen->driver))
 | |
| #define mach64ScreenInfo(kd)    Mach64ScreenInfo *mach64s = getMach64ScreenInfo(kd)
 | |
| 
 | |
| CARD32
 | |
| mach64ReadLCD (Reg *reg, int id);
 | |
| 
 | |
| void
 | |
| mach64WriteLCD (Reg *reg, int id, CARD32 data);
 | |
|     
 | |
| void
 | |
| mach64Preserve (KdCardInfo *card);
 | |
| 
 | |
| Bool
 | |
| mach64MapReg (KdCardInfo *card, Mach64CardInfo *mach64c);
 | |
| 
 | |
| void
 | |
| mach64UnmapReg (KdCardInfo *card, Mach64CardInfo *mach64c);
 | |
| 
 | |
| void
 | |
| mach64SetMMIO (KdCardInfo *card, Mach64CardInfo *mach64c);
 | |
| 
 | |
| void
 | |
| mach64ResetMMIO (KdCardInfo *card, Mach64CardInfo *mach64c);
 | |
| 
 | |
| Bool
 | |
| mach64Enable (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64Disable (ScreenPtr pScreen);
 | |
| 
 | |
| Bool
 | |
| mach64DPMS (ScreenPtr pScreen, int mode);
 | |
| 
 | |
| void
 | |
| mach64WaitAvail(Reg *reg, int n);
 | |
| 
 | |
| void
 | |
| mach64WaitIdle (Reg *reg);
 | |
|     
 | |
| Bool
 | |
| mach64DrawSetup (ScreenPtr pScreen);
 | |
| 
 | |
| Bool
 | |
| mach64DrawInit (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64DrawReinit (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64DrawEnable (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64DrawDisable (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64DrawFini (ScreenPtr pScreen);
 | |
| 
 | |
| CARD8
 | |
| mach64ReadIndex (Mach64CardInfo *mach64c, CARD16 port, CARD8 index);
 | |
| 
 | |
| void
 | |
| mach64WriteIndex (Mach64CardInfo *mach64c, CARD16 port, CARD8 index, CARD8 value);
 | |
| 
 | |
| Bool
 | |
| mach64CursorInit (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64CursorEnable (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64CursorDisable (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64CursorFini (ScreenPtr pScreen);
 | |
| 
 | |
| void
 | |
| mach64RecolorCursor (ScreenPtr pScreen, int ndef, xColorItem *pdef);
 | |
| 
 | |
| extern KdCardFuncs  mach64Funcs;
 | |
| 
 | |
| #endif /* _MACH64_H_ */
 |