150806d53Smrg/* 250806d53Smrg * Copyright 1994 by Robin Cutshaw <robin@XFree86.Org> 350806d53Smrg * 450806d53Smrg * Permission to use, copy, modify, distribute, and sell this software and its 550806d53Smrg * documentation for any purpose is hereby granted without fee, provided that 650806d53Smrg * the above copyright notice appear in all copies and that both that 750806d53Smrg * copyright notice and this permission notice appear in supporting 850806d53Smrg * documentation, and that the name of Robin Cutshaw not be used in 950806d53Smrg * advertising or publicity pertaining to distribution of the software without 1050806d53Smrg * specific, written prior permission. Robin Cutshaw makes no representations 1150806d53Smrg * about the suitability of this software for any purpose. It is provided 1250806d53Smrg * "as is" without express or implied warranty. 1350806d53Smrg * 1450806d53Smrg * ROBIN CUTSHAW DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1550806d53Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1650806d53Smrg * EVENT SHALL ROBIN CUTSHAW BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1750806d53Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1850806d53Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1950806d53Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2050806d53Smrg * PERFORMANCE OF THIS SOFTWARE. 2150806d53Smrg * 2250806d53Smrg */ 2350806d53Smrg 2450806d53Smrg#ifndef I128REG_H 2550806d53Smrg#define I128REG_H 2650806d53Smrg 2750806d53Smrg#include "xf86Pci.h" 2850806d53Smrg 2950806d53Smrgstruct i128pci { 3050806d53Smrg CARD32 devicevendor; 3150806d53Smrg CARD32 statuscommand; 3250806d53Smrg CARD32 classrev; 3350806d53Smrg CARD32 bhlc; 3450806d53Smrg CARD32 base0; 3550806d53Smrg CARD32 base1; 3650806d53Smrg CARD32 base2; 3750806d53Smrg CARD32 base3; 3850806d53Smrg CARD32 base4; 3950806d53Smrg CARD32 base5; 4050806d53Smrg CARD32 rsvd0; 4150806d53Smrg CARD32 rsvd1; 4250806d53Smrg CARD32 baserom; 4350806d53Smrg CARD32 rsvd2; 4450806d53Smrg CARD32 rsvd3; 4550806d53Smrg CARD32 lgii; 4650806d53Smrg}; 4750806d53Smrg 4850806d53Smrgstruct i128io { 4950806d53Smrg CARD32 rbase_g; 5050806d53Smrg CARD32 rbase_w; 5150806d53Smrg CARD32 rbase_a; 5250806d53Smrg CARD32 rbase_b; 5350806d53Smrg CARD32 rbase_i; 5450806d53Smrg CARD32 rbase_e; 5550806d53Smrg CARD32 id; 5650806d53Smrg CARD32 config1; 5750806d53Smrg CARD32 config2; 5850806d53Smrg CARD32 sgram; 5950806d53Smrg CARD32 soft_sw; 6050806d53Smrg CARD32 vga_ctl; 6150806d53Smrg}; 6250806d53Smrg 6350806d53Smrgstruct i128mem { 6450806d53Smrg unsigned char *mw0_ad; 6550806d53Smrg unsigned char *mw1_ad; 6650806d53Smrg unsigned char *xyw_ada; 6750806d53Smrg unsigned char *xyw_adb; 6850806d53Smrg CARD32 *rbase_g; 6950806d53Smrg CARD32 *rbase_w; 7050806d53Smrg CARD32 *rbase_a; 7150806d53Smrg CARD32 *rbase_b; 7250806d53Smrg CARD32 *rbase_i; 7350806d53Smrg float *rbase_af; 7450806d53Smrg}; 7550806d53Smrg 7650806d53Smrg/* save the registers needed for restoration in this structure */ 7750806d53Smrgtypedef struct { 78a73423d7Smrg unsigned long iobase; /* saved only for iobase indexing */ 7950806d53Smrg CARD32 config1; /* iobase+0x1C register */ 8050806d53Smrg CARD32 config2; /* iobase+0x20 register */ 8150806d53Smrg CARD32 sgram; /* iobase+0x24 register */ 8250806d53Smrg CARD32 vga_ctl; /* iobase+0x30 register */ 8350806d53Smrg CARD32 i128_base_g[0x60/4]; /* base g registers */ 8450806d53Smrg CARD32 i128_base_w[0x28/4]; /* base w registers */ 8550806d53Smrg CARD32 intm; /* base a+0x04 register */ 8650806d53Smrg unsigned char Ti302X[0x40]; /* Ti302[05] registers */ 8750806d53Smrg unsigned char Ti3025[9]; /* Ti3025 N,M,P for PCLK, MCLK, LCLK */ 8850806d53Smrg unsigned char IBMRGB[0x101]; /* IBMRGB registers */ 8950806d53Smrg} I128RegRec, *I128RegPtr; 9050806d53Smrg 9150806d53Smrg 9250806d53Smrg/* display list processor instruction formats */ 9350806d53Smrgtypedef union { 9450806d53Smrg struct { 9550806d53Smrg CARD8 aad; 9650806d53Smrg CARD8 bad; 9750806d53Smrg CARD8 cad; 9850806d53Smrg CARD8 control; 9950806d53Smrg CARD32 rad; 10050806d53Smrg CARD32 rbd; 10150806d53Smrg CARD32 rcd; 10250806d53Smrg } f0; 10350806d53Smrg struct { 10450806d53Smrg CARD32 xy0; 10550806d53Smrg CARD32 xy2; 10650806d53Smrg CARD32 xy3; 10750806d53Smrg CARD32 xy1; 10850806d53Smrg } f1; 10950806d53Smrg CARD32 f4[4]; 11050806d53Smrg} I128dlpu; 11150806d53Smrg 11250806d53Smrg#define UNKNOWN_DAC -1 11350806d53Smrg#define TI3025_DAC 0 11450806d53Smrg#define IBM524_DAC 1 11550806d53Smrg#define IBM526_DAC 2 11650806d53Smrg#define IBM528_DAC 3 11750806d53Smrg#define SILVER_HAMMER_DAC 4 11850806d53Smrg 11950806d53Smrg#define I128_MEMORY_UNKNOWN 0x01 12050806d53Smrg#define I128_MEMORY_DRAM 0x02 12150806d53Smrg#define I128_MEMORY_WRAM 0x04 12250806d53Smrg#define I128_MEMORY_SGRAM 0x08 12350806d53Smrg 12450806d53Smrg/* RBASE_I register offsets */ 12550806d53Smrg 12650806d53Smrg#define GINTP 0x0000 12750806d53Smrg#define GINTM 0x0004 12850806d53Smrg#define SGRAM 0x00A4 12950806d53Smrg 13050806d53Smrg/* DMA regs, relative to RBASE_I. T2R4 only. */ 13150806d53Smrg#define DMA_SRC 0x00D0/4 13250806d53Smrg#define DMA_SRC_MASK 0x07 13350806d53Smrg#define DMA_DST 0x00D4/4 13450806d53Smrg#define DMA_DST_MASK 0xFC000007 13550806d53Smrg#define DMA_CMD 0x00D8/4 13650806d53Smrg#define DMA_QWORDS_MASK 0x0001FFFF 13750806d53Smrg#define DMA_REQ_LENGTH_4Q 0x00000000 13850806d53Smrg#define DMA_REQ_LENGTH_8Q 0x01000000 13950806d53Smrg#define DMA_REQ_LENGTH_16Q 0x02000000 14050806d53Smrg#define DMA_REQ_LENGTH_32Q 0x03000000 14150806d53Smrg#define DMA_PIPELINE_READY 0x10000000 14250806d53Smrg#define DMA_IDLE 0x20000000 14350806d53Smrg#define DMA_EXPEDITE 0x40000000 14450806d53Smrg 14550806d53Smrg/* RBASE_G register offsets (divided by four for double word indexing */ 14650806d53Smrg 14750806d53Smrg#define WR_ADR 0x0000/4 14850806d53Smrg#define PAL_DAT 0x0004/4 14950806d53Smrg#define PEL_MASK 0x0008/4 15050806d53Smrg#define RD_ADR 0x000C/4 15150806d53Smrg#define INDEX_TI 0x0018/4 /* TI ramdac */ 15250806d53Smrg#define DATA_TI 0x001C/4 /* TI ramdac */ 15350806d53Smrg#define IDXL_I 0x0010/4 /* IBM ramdac */ 15450806d53Smrg#define IDXH_I 0x0014/4 /* IBM ramdac */ 15550806d53Smrg#define DATA_I 0x0018/4 /* IBM ramdac */ 15650806d53Smrg#define IDXCTL_I 0x001C/4 /* IBM ramdac */ 15750806d53Smrg#define INT_VCNT 0x0020/4 15850806d53Smrg#define INT_HCNT 0x0024/4 15950806d53Smrg#define DB_ADR 0x0028/4 16050806d53Smrg#define DB_PTCH 0x002C/4 16150806d53Smrg#define CRT_HAC 0x0030/4 16250806d53Smrg#define CRT_HBL 0x0034/4 16350806d53Smrg#define CRT_HFP 0x0038/4 16450806d53Smrg#define CRT_HS 0x003C/4 16550806d53Smrg#define CRT_VAC 0x0040/4 16650806d53Smrg#define CRT_VBL 0x0044/4 16750806d53Smrg#define CRT_VFP 0x0048/4 16850806d53Smrg#define CRT_VS 0x004C/4 16950806d53Smrg#define CRT_LCNT 0x0050/4 17050806d53Smrg#define CRT_ZOOM 0x0054/4 17150806d53Smrg#define CRT_1CON 0x0058/4 17250806d53Smrg#define CRT_2CON 0x005C/4 17350806d53Smrg 17450806d53Smrg 17550806d53Smrg/* RBASE_W register offsets (divided by four for double word indexing */ 17650806d53Smrg/* MW1_* are probably T2R and T2R4 only */ 17750806d53Smrg 17850806d53Smrg#define MW0_CTRL 0x0000/4 17950806d53Smrg#define MW0_AD 0x0004/4 18050806d53Smrg#define MW0_SZ 0x0008/4 /* 2MB = 0x9, 4MB = 0xA, 8MB = 0xB */ 18150806d53Smrg#define MW0_PGE 0x000C/4 18250806d53Smrg#define MW0_ORG 0x0010/4 18350806d53Smrg#define MW0_MSRC 0x0018/4 18450806d53Smrg#define MW0_WKEY 0x001C/4 18550806d53Smrg#define MW0_KDAT 0x0020/4 18650806d53Smrg#define MW0_MASK 0x0024/4 18750806d53Smrg#define MW1_CTRL 0x0028/4 18850806d53Smrg#define MW1_AD 0x002C/4 18950806d53Smrg#define MW1_SZ 0x0030/4 19050806d53Smrg#define MW1_PGE 0x0034/4 19150806d53Smrg#define MW1_ORG 0x0038/4 19250806d53Smrg#define MW1_MSRC 0x0040/4 19350806d53Smrg#define MW1_WKEY 0x0044/4 19450806d53Smrg#define MW1_KDAT 0x0048/4 19550806d53Smrg#define MW1_MASK 0x004C/4 19650806d53Smrg 19750806d53Smrg/* RBASE_[AB] register offsets (divided by four for double word indexing */ 19850806d53Smrg 19950806d53Smrg#define INTP 0x0000/4 20050806d53Smrg#define INTP_DD_INT 0x01 /* drawing op completed */ 20150806d53Smrg#define INTP_CL_INT 0x02 20250806d53Smrg#define INTM 0x0004/4 20350806d53Smrg#define INTM_DD_MSK 0x01 20450806d53Smrg#define INTM_CL_MSK 0x02 20550806d53Smrg#define FLOW 0x0008/4 20650806d53Smrg#define FLOW_DEB 0x01 /* drawing engine busy */ 20750806d53Smrg#define FLOW_MCB 0x02 /* mem controller busy */ 20850806d53Smrg#define FLOW_CLP 0x04 20950806d53Smrg#define FLOW_PRV 0x08 /* prev cmd still running or cache ready */ 21050806d53Smrg#define BUSY 0x000C/4 21150806d53Smrg#define BUSY_BUSY 0x01 /* command pipeline busy */ 21250806d53Smrg#define XYW_AD 0x0010/4 21350806d53Smrg#define Z_CTRL 0x0018/4 21450806d53Smrg#define BUF_CTRL 0x0020/4 21550806d53Smrg#define BC_AMV 0x02 21650806d53Smrg#define BC_MP 0x04 21750806d53Smrg#define BC_AMD 0x08 21850806d53Smrg#define BC_SEN_MSK 0x0300 21950806d53Smrg#define BC_SEN_DB 0x0000 22050806d53Smrg#define BC_SEN_VB 0x0100 22150806d53Smrg#define BC_SEN_MB 0x0200 22250806d53Smrg#define BC_SEN_CB 0x0300 22350806d53Smrg#define BC_DEN_MSK 0x0C00 22450806d53Smrg#define BC_DEN_DB 0x0000 22550806d53Smrg#define BC_DEN_VB 0x0400 22650806d53Smrg#define BC_DEN_MB 0x0800 22750806d53Smrg#define BC_DEN_CB 0x0C00 22850806d53Smrg#define BC_DSE 0x1000 22950806d53Smrg#define BC_VSE 0x2000 23050806d53Smrg#define BC_MSE 0x4000 23150806d53Smrg#define BC_PS_MSK 0x001F0000 23250806d53Smrg#define BC_MDM_MSK 0x00600000 23350806d53Smrg#define BC_MDM_KEY 0x00200000 23450806d53Smrg#define BC_MDM_PLN 0x00400000 23550806d53Smrg#define BC_BLK_ENA 0x00800000 23650806d53Smrg#define BC_PSIZ_MSK 0x03000000 23750806d53Smrg#define BC_PSIZ_8B 0x00000000 23850806d53Smrg#define BC_PSIZ_16B 0x01000000 23950806d53Smrg#define BC_PSIZ_32B 0x02000000 24050806d53Smrg#define BC_PSIZ_NOB 0x03000000 24150806d53Smrg#define BC_CO 0x40000000 24250806d53Smrg#define BC_CR 0x80000000 24350806d53Smrg#define DE_PGE 0x0024/4 24450806d53Smrg#define DP_DVP_MSK 0x0000001F 24550806d53Smrg#define DP_MP_MSK 0x000F0000 24650806d53Smrg#define DE_SORG 0x0028/4 24750806d53Smrg#define DE_DORG 0x002C/4 24850806d53Smrg#define DE_MSRC 0x0030/4 24950806d53Smrg/* these next two sound bogus */ 25050806d53Smrg#define DE_WKEY 0x0038/4 25150806d53Smrg#define DE_KYDAT 0x003C/4 25250806d53Smrg#define DE_TPTCH 0x0038/4 25350806d53Smrg#define DE_ZPTCH 0x003C/4 25450806d53Smrg#define DE_SPTCH 0x0040/4 25550806d53Smrg#define DE_DPTCH 0x0044/4 25650806d53Smrg#define CMD 0x0048/4 25750806d53Smrg#define CMD_OPC_MSK 0x000000FF 25850806d53Smrg#define CMD_ROP_MSK 0x0000FF00 25950806d53Smrg#define CMD_STL_MSK 0x001F0000 26050806d53Smrg#define CMD_CLP_MSK 0x00E00000 26150806d53Smrg#define CMD_PAT_MSK 0x0F000000 26250806d53Smrg#define CMD_HDF_MSK 0x70000000 26350806d53Smrg#define CMD_OPC 0x0050/4 26450806d53Smrg#define CO_NOOP 0x00 26550806d53Smrg#define CO_BITBLT 0x01 26650806d53Smrg#define CO_LINE 0x02 26750806d53Smrg#define CO_ELINE 0x03 26850806d53Smrg#define CO_TRIAN 0x04 26950806d53Smrg#define CO_PLINE 0x05 27050806d53Smrg#define CO_RXFER 0x06 27150806d53Smrg#define CO_WXFER 0x07 27250806d53Smrg#define CO_LINE3D 0x08 27350806d53Smrg#define CO_TRIAN3D 0x09 27450806d53Smrg#define CO_TEXINV 0x0A 27550806d53Smrg#define CO_LOADPAL 0x0B 27650806d53Smrg#define CMD_ROP 0x0054/4 27750806d53Smrg#define CR_CLEAR 0x00 27850806d53Smrg#define CR_NOR 0x01 27950806d53Smrg#define CR_AND_INV 0x02 28050806d53Smrg#define CR_COPY_INV 0x03 28150806d53Smrg#define CR_AND_REV 0x04 28250806d53Smrg#define CR_INVERT 0x05 28350806d53Smrg#define CR_XOR 0x06 28450806d53Smrg#define CR_NAND 0x07 28550806d53Smrg#define CR_AND 0x08 28650806d53Smrg#define CR_EQUIV 0x09 28750806d53Smrg#define CR_NOOP 0x0A 28850806d53Smrg#define CR_OR_INV 0x0B 28950806d53Smrg#define CR_COPY 0x0C 29050806d53Smrg#define CR_OR_REV 0x0D 29150806d53Smrg#define CR_OR 0x0E 29250806d53Smrg#define CR_SET 0x0F 29350806d53Smrg#define CMD_STYLE 0x0058/4 29450806d53Smrg#define CS_SOLID 0x01 29550806d53Smrg#define CS_TRNSP 0x02 29650806d53Smrg#define CS_STP_NO 0x00 29750806d53Smrg#define CS_STP_PL 0x04 29850806d53Smrg#define CS_STP_PA32 0x08 29950806d53Smrg#define CS_STP_PA8 0x0C 30050806d53Smrg#define CS_EDI 0x10 30150806d53Smrg#define CMD_PATRN 0x005C/4 30250806d53Smrg#define CP_APAT_NO 0x00 30350806d53Smrg#define CP_APAT_8X 0x01 30450806d53Smrg#define CP_APAT_32X 0x02 30550806d53Smrg#define CP_NLST 0x04 30650806d53Smrg#define CP_PRST 0x08 30750806d53Smrg#define CMD_CLP 0x0060/4 30850806d53Smrg#define CC_NOCLP 0x00 30950806d53Smrg#define CC_CLPRECI 0x02 31050806d53Smrg#define CC_CLPRECO 0x03 31150806d53Smrg#define CC_CLPSTOP 0x04 31250806d53Smrg#define CMD_HDF 0x0064/4 31350806d53Smrg#define CH_BIT_SWP 0x01 31450806d53Smrg#define CH_BYT_SWP 0x02 31550806d53Smrg#define CH_WRD_SWP 0x04 31650806d53Smrg#define FORE 0x0068/4 31750806d53Smrg#define BACK 0x006C/4 31850806d53Smrg#define MASK 0x0070/4 31950806d53Smrg#define RMSK 0x0074/4 32050806d53Smrg#define LPAT 0x0078/4 32150806d53Smrg#define PCTRL 0x007C/4 32250806d53Smrg#define PC_PLEN_MSK 0x0000001F 32350806d53Smrg#define PC_PSCL_MSK 0x000000E0 32450806d53Smrg#define PC_SPTR_MSK 0x00001F00 32550806d53Smrg#define PC_SSCL_MSK 0x0000E000 32650806d53Smrg#define PC_STATE_MSK 0xFFFF0000 32750806d53Smrg#define CLPTL 0x0080/4 32850806d53Smrg#define CLPTLY_MSK 0x0000FFFF 32950806d53Smrg#define CLPTLX_MSK 0xFFFF0000 33050806d53Smrg#define CLPBR 0x0084/4 33150806d53Smrg#define CLPBRY_MSK 0x0000FFFF 33250806d53Smrg#define CLPBRX_MSK 0xFFFF0000 33350806d53Smrg#define XY0_SRC 0x0088/4 33450806d53Smrg#define XY1_DST 0x008C/4 /* trigger */ 33550806d53Smrg#define XY2_WH 0x0090/4 33650806d53Smrg#define XY3_DIR 0x0094/4 33750806d53Smrg#define DIR_LR_TB 0x00000000 33850806d53Smrg#define DIR_LR_BT 0x00000001 33950806d53Smrg#define DIR_RL_TB 0x00000002 34050806d53Smrg#define DIR_RL_BT 0x00000003 34150806d53Smrg#define XY4_ZM 0x0098/4 34250806d53Smrg#define ZOOM_NONE 0x00000000 34350806d53Smrg#define XY_Y_DATA 0x0000FFFF 34450806d53Smrg#define XY_X_DATA 0xFFFF0000 34550806d53Smrg#define XY_I_DATA1 0x0000FFFF 34650806d53Smrg#define XY_I_DATA2 0xFFFF0000 34750806d53Smrg#define LOD0_ORG 0x00D0/4 34850806d53Smrg#define LOD1_ORG 0x00D4/4 34950806d53Smrg#define LOD2_ORG 0x00D8/4 35050806d53Smrg#define LOD3_ORG 0x00DC/4 35150806d53Smrg#define LOD4_ORG 0x00E0/4 35250806d53Smrg#define LOD5_ORG 0x00E4/4 35350806d53Smrg#define LOD6_ORG 0x00E8/4 35450806d53Smrg#define LOD7_ORG 0x00EC/4 35550806d53Smrg#define LOD8_ORG 0x00F0/4 35650806d53Smrg#define LOD9_ORG 0x00F4/4 35750806d53Smrg 35850806d53Smrg#define DL_ADR 0x00F8/4 35950806d53Smrg#define DL_CNTRL 0x00FC/4 36050806d53Smrg#define ACNTRL 0x016C/4 36150806d53Smrg#define ASRC_FUNC 0x0000000F 36250806d53Smrg#define ADST_FUNC 0x000000F0 36350806d53Smrg#define ACTL_SRE 0x00000100 /* 0: pixel alpha, 1: srca reg */ 36450806d53Smrg#define ACTL_DRE 0x00000200 /* likewise */ 36550806d53Smrg#define ACTL_BE 0x00000400 36650806d53Smrg#define ACTL_AOP 0x000F0000 36750806d53Smrg#define ACTL_AEN 0x00100000 /* alpha compare enable */ 36850806d53Smrg#define ACTL_ASL 0x01000000 /* 0: texture alpha, 1: vertex alpha */ 36950806d53Smrg#define ACTL_AMD 0x02000000 37050806d53Smrg#define ACTL_DAB 0x04000000 37150806d53Smrg#define THREEDCTL 0x0170/4 37250806d53Smrg#define TCTL_ZE 0x00000001 37350806d53Smrg#define TCTL_ZRO 0x00000002 37450806d53Smrg#define TCTL_FIS 0x00000008 37550806d53Smrg#define TCTL_FSL 0x00000010 37650806d53Smrg#define TCTL_ZOP 0x000000E0 37750806d53Smrg#define TCTL_ZOP_SHIFT 5 37850806d53Smrg#define TCTL_YOP 0x00000800 37950806d53Smrg#define TCTL_HOP 0x00003100 38050806d53Smrg#define TCTL_KYP 0x00004000 38150806d53Smrg#define TCTL_KYE 0x00008000 38250806d53Smrg#define TCTL_DOP 0x00010000 38350806d53Smrg#define TCTL_ABS 0x00020000 38450806d53Smrg#define TCTL_TBS 0x00040000 38550806d53Smrg#define TCTL_RSL 0x00080000 38650806d53Smrg#define TCTL_SSC 0x00200000 38750806d53Smrg#define TCTL_CW 0x00400000 38850806d53Smrg#define TCTL_BCE 0x00800000 38950806d53Smrg#define TCTL_SH 0x01000000 39050806d53Smrg#define TCTL_SPE 0x02000000 39150806d53Smrg#define TCTL_RSC 0x04000000 39250806d53Smrg#define TCTL_FEN 0x08000000 39350806d53Smrg#define TCTL_RT 0x10000000 39450806d53Smrg#define TCTL_P8 0x20000000 39550806d53Smrg#define TCTL_ZS 0x40000000 39650806d53Smrg#define TEX_CTL 0x0174/4 39750806d53Smrg#define TEX_TM 0x00000001 39850806d53Smrg#define TEX_MM 0x00000002 39950806d53Smrg#define TEX_NMG 0x00000004 40050806d53Smrg#define TEX_MLM 0x00000008 40150806d53Smrg#define TEX_NMN 0x00000010 40250806d53Smrg#define TEX_RM 0x00000020 40350806d53Smrg#define TEX_PM 0x00000040 40450806d53Smrg#define TEX_CCS 0x00000080 40550806d53Smrg#define TEX_TCU 0x00000100 40650806d53Smrg#define TEX_TCV 0x00000200 40750806d53Smrg#define TEX_MLP2 0x00000400 40850806d53Smrg#define TEX_MMN 0x0000F000 40950806d53Smrg#define TEX_MMSIZEX 0x000F0000 41050806d53Smrg#define TEX_MMSIZEY 0x00F00000 41150806d53Smrg#define TEX_FMT 0x3F000000 41250806d53Smrg#define TEX_TCT 0x40000000 41350806d53Smrg#define TEX_UVS 0x80000000 41450806d53Smrg#define PPTR 0x0178/4 41550806d53Smrg/* for each vertex: x, y, z, w, color, specular color, u, v */ 41650806d53Smrg#define V0_X 0x017C/4 41750806d53Smrg#define V0_Y 0x0180/4 41850806d53Smrg#define V0_Z 0x0184/4 41950806d53Smrg#define V0_W 0x0188/4 42050806d53Smrg#define V0_C 0x018C/4 42150806d53Smrg#define V0_S 0x0190/4 42250806d53Smrg#define V0_U 0x0194/4 42350806d53Smrg#define V0_V 0x0198/4 42450806d53Smrg#define V1_X 0x019C/4 42550806d53Smrg#define V1_Y 0x01A0/4 42650806d53Smrg#define V1_Z 0x01A4/4 42750806d53Smrg#define V1_W 0x01A8/4 42850806d53Smrg#define V1_C 0x01AC/4 42950806d53Smrg#define V1_S 0x01B0/4 43050806d53Smrg#define V1_U 0x01B4/4 43150806d53Smrg#define V1_V 0x01B8/4 43250806d53Smrg#define V2_X 0x01BC/4 43350806d53Smrg#define V2_Y 0x01C0/4 43450806d53Smrg#define V2_Z 0x01C4/4 43550806d53Smrg#define V2_W 0x01C8/4 43650806d53Smrg#define V2_C 0x01CC/4 43750806d53Smrg#define V2_S 0x01D0/4 43850806d53Smrg#define V2_U 0x01D4/4 43950806d53Smrg#define V2_V 0x01D8/4 44050806d53Smrg#define TRIGGER3D 0x01DC/4 44150806d53Smrg 44250806d53Smrg/* alpha blend functions */ 44350806d53Smrg#define ABLEND_SRC_ZERO 0 44450806d53Smrg#define ABLEND_SRC_ONE 1 44550806d53Smrg#define ABLEND_SRC_DST_COLOR 2 44650806d53Smrg#define ABLEND_SRC_OMDST_COLOR 3 44750806d53Smrg#define ABLEND_SRC_SRC_ALPHA 4 44850806d53Smrg#define ABLEND_SRC_OMSRC_ALPHA 5 44950806d53Smrg#define ABLEND_SRC_DST_ALPHA 6 45050806d53Smrg#define ABLEND_SRC_OMDST_ALPHA 7 45150806d53Smrg#define ABLEND_DST_ZERO 0 << 4 45250806d53Smrg#define ABLEND_DST_ONE 1 << 4 45350806d53Smrg#define ABLEND_DST_SRC_COLOR 2 << 4 45450806d53Smrg#define ABLEND_DST_OMSRC_COLOR 3 << 4 45550806d53Smrg#define ABLEND_DST_SRC_ALPHA 4 << 4 45650806d53Smrg#define ABLEND_DST_OMSRC_ALPHA 5 << 4 45750806d53Smrg#define ABLEND_DST_DST_ALPHA 6 << 4 45850806d53Smrg#define ABLEND_DST_OMDST_ALPHA 7 << 4 45950806d53Smrg 46050806d53Smrg/* comparison functions */ 46150806d53Smrg#define COMP_FALSE 0 46250806d53Smrg#define COMP_TRUE 1 46350806d53Smrg#define COMP_LT 2 46450806d53Smrg#define COMP_LE 3 46550806d53Smrg#define COMP_EQ 4 46650806d53Smrg#define COMP_GE 5 46750806d53Smrg#define COMP_GT 6 46850806d53Smrg#define COMP_NE 7 46950806d53Smrg 47050806d53Smrg 47150806d53Smrg#define I128_WAIT_READY 1 47250806d53Smrg#define I128_WAIT_DONE 2 47350806d53Smrg 47450806d53Smrgtypedef struct { 47550806d53Smrg unsigned char r, b, g; 47650806d53Smrg} LUTENTRY; 47750806d53Smrg 47850806d53Smrg#define RGB8_PSEUDO (-1) 47950806d53Smrg#define RGB16_565 0 48050806d53Smrg#define RGB16_555 1 48150806d53Smrg#define RGB32_888 2 48250806d53Smrg 48350806d53Smrg#define MB mem_barrier() 48450806d53Smrg 48550806d53Smrg 48650806d53Smrg/* TI ramdac indirect indexed registers */ 48750806d53Smrg 48850806d53Smrg#define TI_CURS_X_LOW 0x00 48950806d53Smrg#define TI_CURS_X_HIGH 0x01 /* only lower 4 bits are used */ 49050806d53Smrg#define TI_CURS_Y_LOW 0x02 49150806d53Smrg#define TI_CURS_Y_HIGH 0x03 /* only lower 4 bits are used */ 49250806d53Smrg#define TI_SPRITE_ORIGIN_X 0x04 49350806d53Smrg#define TI_SPRITE_ORIGIN_Y 0x05 49450806d53Smrg#define TI_CURS_CONTROL 0x06 49550806d53Smrg#define TI_PLANAR_ACCESS 0x80 /* 3025 only - 80 == BT485 mode */ 49650806d53Smrg#define TI_CURS_SPRITE_ENABLE 0x40 49750806d53Smrg#define TI_CURS_X_WINDOW_MODE 0x10 49850806d53Smrg#define TI_CURS_CTRL_MASK (TI_CURS_SPRITE_ENABLE | TI_CURS_X_WINDOW_MODE) 49950806d53Smrg#define TI_CURS_RAM_ADDR_LOW 0x08 50050806d53Smrg#define TI_CURS_RAM_ADDR_HIGH 0x09 50150806d53Smrg#define TI_CURS_RAM_DATA 0x0A 50250806d53Smrg#define TI_TRUE_COLOR_CONTROL 0x0E /* 3025 only */ 50350806d53Smrg#define TI_TC_BTMODE 0x04 /* on = BT485 mode, off = TI3020 mode */ 50450806d53Smrg#define TI_TC_NONVGAMODE 0x02 /* on = nonvgamode, off = vgamode */ 50550806d53Smrg#define TI_TC_8BIT 0x01 /* on = 8/4bit, off = 16/32bit */ 50650806d53Smrg#define TI_VGA_SWITCH_CONTROL 0x0F /* 3025 only */ 50750806d53Smrg#define TI_LATCH_CONTROL 0x0F /* 3026 only */ 50850806d53Smrg#define TI_WINDOW_START_X_LOW 0x10 50950806d53Smrg#define TI_WINDOW_START_X_HIGH 0x11 51050806d53Smrg#define TI_WINDOW_STOP_X_LOW 0x12 51150806d53Smrg#define TI_WINDOW_STOP_X_HIGH 0x13 51250806d53Smrg#define TI_WINDOW_START_Y_LOW 0x14 51350806d53Smrg#define TI_WINDOW_START_Y_HIGH 0x15 51450806d53Smrg#define TI_WINDOW_STOP_Y_LOW 0x16 51550806d53Smrg#define TI_WINDOW_STOP_Y_HIGH 0x17 51650806d53Smrg#define TI_MUX_CONTROL_1 0x18 51750806d53Smrg#define TI_MUX1_PSEUDO_COLOR 0x80 51850806d53Smrg#define TI_MUX1_DIRECT_888 0x06 51950806d53Smrg#define TI_MUX1_DIRECT_565 0x05 52050806d53Smrg#define TI_MUX1_DIRECT_555 0x04 52150806d53Smrg#define TI_MUX1_DIRECT_664 0x03 52250806d53Smrg#define TI_MUX1_TRUE_888 0x46 52350806d53Smrg#define TI_MUX1_TRUE_565 0x45 52450806d53Smrg#define TI_MUX1_TRUE_555 0x44 52550806d53Smrg#define TI_MUX1_TRUE_664 0x43 52650806d53Smrg#define TI_MUX1_3025D_888 0x0E /* 3025 only */ 52750806d53Smrg#define TI_MUX1_3025D_565 0x0D /* 3025 only */ 52850806d53Smrg#define TI_MUX1_3025D_555 0x0C /* 3025 only */ 52950806d53Smrg#define TI_MUX1_3025T_888 0x4E /* 3025 only */ 53050806d53Smrg#define TI_MUX1_3025T_565 0x4D /* 3025 only */ 53150806d53Smrg#define TI_MUX1_3025T_555 0x4C /* 3025 only */ 53250806d53Smrg#define TI_MUX1_3026D_888 0x06 /* 3026 only */ 53350806d53Smrg#define TI_MUX1_3026D_565 0x05 /* 3026 only */ 53450806d53Smrg#define TI_MUX1_3026D_555 0x04 /* 3026 only */ 53550806d53Smrg#define TI_MUX1_3026D_888_P8 0x16 /* 3026 only */ 53650806d53Smrg#define TI_MUX1_3026D_888_P5 0x1e /* 3026 only */ 53750806d53Smrg#define TI_MUX1_3026T_888 0x46 /* 3026 only */ 53850806d53Smrg#define TI_MUX1_3026T_565 0x45 /* 3026 only */ 53950806d53Smrg#define TI_MUX1_3026T_555 0x44 /* 3026 only */ 54050806d53Smrg#define TI_MUX1_3026T_888_P8 0x56 /* 3026 only */ 54150806d53Smrg#define TI_MUX1_3026T_888_P5 0x5e /* 3026 only */ 54250806d53Smrg#define TI_MUX_CONTROL_2 0x19 54350806d53Smrg#define TI_MUX2_BUS_VGA 0x98 54450806d53Smrg#define TI_MUX2_BUS_PC_D8P64 0x1C 54550806d53Smrg#define TI_MUX2_BUS_DC_D24P64 0x1C 54650806d53Smrg#define TI_MUX2_BUS_DC_D16P64 0x04 54750806d53Smrg#define TI_MUX2_BUS_DC_D15P64 0x04 54850806d53Smrg#define TI_MUX2_BUS_TC_D24P64 0x04 54950806d53Smrg#define TI_MUX2_BUS_TC_D16P64 0x04 55050806d53Smrg#define TI_MUX2_BUS_TC_D15P64 0x04 55150806d53Smrg#define TI_MUX2_BUS_3026PC_D8P64 0x4C 55250806d53Smrg#define TI_MUX2_BUS_3026DC_D24P64 0x5C 55350806d53Smrg#define TI_MUX2_BUS_3026DC_D16P64 0x54 55450806d53Smrg#define TI_MUX2_BUS_3026DC_D15P64 0x54 55550806d53Smrg#define TI_MUX2_BUS_3026TC_D24P64 0x5c 55650806d53Smrg#define TI_MUX2_BUS_3026TC_D16P64 0x54 55750806d53Smrg#define TI_MUX2_BUS_3026TC_D15P64 0x54 55850806d53Smrg#define TI_MUX2_BUS_3030PC_D8P128 0x4d 55950806d53Smrg#define TI_MUX2_BUS_3030DC_D24P128 0x5d 56050806d53Smrg#define TI_MUX2_BUS_3030DC_D16P128 0x55 56150806d53Smrg#define TI_MUX2_BUS_3030DC_D15P128 0x55 56250806d53Smrg#define TI_MUX2_BUS_3030TC_D24P128 0x5d 56350806d53Smrg#define TI_MUX2_BUS_3030TC_D16P128 0x55 56450806d53Smrg#define TI_MUX2_BUS_3030TC_D15P128 0x55 56550806d53Smrg#define TI_INPUT_CLOCK_SELECT 0x1A 56650806d53Smrg#define TI_ICLK_CLK0 0x00 56750806d53Smrg#define TI_ICLK_CLK0_DOUBLE 0x10 56850806d53Smrg#define TI_ICLK_CLK1 0x01 56950806d53Smrg#define TI_ICLK_CLK1_DOUBLE 0x11 57050806d53Smrg#define TI_ICLK_CLK2 0x02 /* 3025 only */ 57150806d53Smrg#define TI_ICLK_CLK2_DOUBLE 0x12 /* 3025 only */ 57250806d53Smrg#define TI_ICLK_CLK2_I 0x03 /* 3025 only */ 57350806d53Smrg#define TI_ICLK_CLK2_I_DOUBLE 0x13 /* 3025 only */ 57450806d53Smrg#define TI_ICLK_CLK2_E 0x04 /* 3025 only */ 57550806d53Smrg#define TI_ICLK_CLK2_E_DOUBLE 0x14 /* 3025 only */ 57650806d53Smrg#define TI_ICLK_PLL 0x05 /* 3025 only */ 57750806d53Smrg#define TI_OUTPUT_CLOCK_SELECT 0x1B 57850806d53Smrg#define TI_OCLK_VGA 0x3E 57950806d53Smrg#define TI_OCLK_S 0x40 58050806d53Smrg#define TI_OCLK_NS 0x80 /* 3025 only */ 58150806d53Smrg#define TI_OCLK_V1 0x00 58250806d53Smrg#define TI_OCLK_V2 0x08 58350806d53Smrg#define TI_OCLK_V4 0x10 58450806d53Smrg#define TI_OCLK_V8 0x18 58550806d53Smrg#define TI_OCLK_R1 0x00 58650806d53Smrg#define TI_OCLK_R2 0x01 58750806d53Smrg#define TI_OCLK_R4 0x02 58850806d53Smrg#define TI_OCLK_R8 0x03 58950806d53Smrg#define TI_OCLK_S_V1_R8 (TI_OCLK_S | TI_OCLK_V1 | TI_OCLK_R8) 59050806d53Smrg#define TI_OCLK_S_V2_R8 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R8) 59150806d53Smrg#define TI_OCLK_S_V4_R8 (TI_OCLK_S | TI_OCLK_V4 | TI_OCLK_R8) 59250806d53Smrg#define TI_OCLK_S_V8_R8 (TI_OCLK_S | TI_OCLK_V8 | TI_OCLK_R8) 59350806d53Smrg#define TI_OCLK_S_V2_R4 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R4) 59450806d53Smrg#define TI_OCLK_S_V4_R4 (TI_OCLK_S | TI_OCLK_V4 | TI_OCLK_R4) 59550806d53Smrg#define TI_OCLK_S_V1_R2 (TI_OCLK_S | TI_OCLK_V1 | TI_OCLK_R2) 59650806d53Smrg#define TI_OCLK_S_V2_R2 (TI_OCLK_S | TI_OCLK_V2 | TI_OCLK_R2) 59750806d53Smrg#define TI_OCLK_NS_V1_R1 (TI_OCLK_NS | TI_OCLK_V1 | TI_OCLK_R1) 59850806d53Smrg#define TI_OCLK_NS_V2_R2 (TI_OCLK_NS | TI_OCLK_V2 | TI_OCLK_R2) 59950806d53Smrg#define TI_OCLK_NS_V4_R4 (TI_OCLK_NS | TI_OCLK_V4 | TI_OCLK_R4) 60050806d53Smrg#define TI_PALETTE_PAGE 0x1C 60150806d53Smrg#define TI_GENERAL_CONTROL 0x1D 60250806d53Smrg#define TI_MISC_CONTROL 0x1E /* 3025 only */ 60350806d53Smrg#define TI_MC_POWER_DOWN 0x01 60450806d53Smrg#define TI_MC_DOTCLK_DISABLE 0x02 60550806d53Smrg#define TI_MC_INT_6_8_CONTROL 0x04 /* 00 == external 6/8 pin */ 60650806d53Smrg#define TI_MC_8_BPP 0x08 /* 00 == 6bpp */ 60750806d53Smrg#define TI_MC_PSEL_POLARITY 0x20 /* 3026 only, PSEL polarity select */ 60850806d53Smrg#define TI_MC_VCLK_POLARITY 0x20 60950806d53Smrg#define TI_MC_LCLK_LATCH 0x40 /* VCLK == 00, default */ 61050806d53Smrg#define TI_MC_LOOP_PLL_RCLK 0x80 61150806d53Smrg#define TI_OVERSCAN_COLOR_RED 0x20 61250806d53Smrg#define TI_OVERSCAN_COLOR_GREEN 0x21 61350806d53Smrg#define TI_OVERSCAN_COLOR_BLUE 0x22 61450806d53Smrg#define TI_CURSOR_COLOR_0_RED 0x23 61550806d53Smrg#define TI_CURSOR_COLOR_0_GREEN 0x24 61650806d53Smrg#define TI_CURSOR_COLOR_0_BLUE 0x25 61750806d53Smrg#define TI_CURSOR_COLOR_1_RED 0x26 61850806d53Smrg#define TI_CURSOR_COLOR_1_GREEN 0x27 61950806d53Smrg#define TI_CURSOR_COLOR_1_BLUE 0x28 62050806d53Smrg#define TI_AUXILIARY_CONTROL 0x29 62150806d53Smrg#define TI_AUX_SELF_CLOCK 0x08 62250806d53Smrg#define TI_AUX_W_CMPL 0x01 62350806d53Smrg#define TI_GENERAL_IO_CONTROL 0x2A 62450806d53Smrg#define TI_GIC_ALL_BITS 0x1F 62550806d53Smrg#define TI_GENERAL_IO_DATA 0x2B 62650806d53Smrg#define TI_GID_W2000_6BIT 0x00 62750806d53Smrg#define TI_GID_N9_964 0x01 62850806d53Smrg#define TI_GID_ELSA_SOG 0x04 62950806d53Smrg#define TI_GID_W2000_8BIT 0x08 63050806d53Smrg#define TI_GID_S3_DAC_6BIT 0x1C 63150806d53Smrg#define TI_GID_S3_DAC_8BIT 0x1E 63250806d53Smrg#define TI_GID_TI_DAC_6BIT 0x1D 63350806d53Smrg#define TI_GID_TI_DAC_8BIT 0x1F 63450806d53Smrg#define TI_PLL_CONTROL 0x2C /* 3025 only */ 63550806d53Smrg#define TI_PIXEL_CLOCK_PLL_DATA 0x2D /* 3025 only */ 63650806d53Smrg#define TI_PLL_ENABLE 0x08 /* 3025 only */ 63750806d53Smrg#define TI_MCLK_PLL_DATA 0x2E /* 3025 only */ 63850806d53Smrg#define TI_LOOP_CLOCK_PLL_DATA 0x2F /* 3025 only */ 63950806d53Smrg#define TI_COLOR_KEY_OLVGA_LOW 0x30 64050806d53Smrg#define TI_COLOR_KEY_OLVGA_HIGH 0x31 64150806d53Smrg#define TI_COLOR_KEY_RED_LOW 0x32 64250806d53Smrg#define TI_COLOR_KEY_RED_HIGH 0x33 64350806d53Smrg#define TI_COLOR_KEY_GREEN_LOW 0x34 64450806d53Smrg#define TI_COLOR_KEY_GREEN_HIGH 0x35 64550806d53Smrg#define TI_COLOR_KEY_BLUE_LOW 0x36 64650806d53Smrg#define TI_COLOR_KEY_BLUE_HIGH 0x37 64750806d53Smrg#define TI_COLOR_KEY_CONTROL 0x38 64850806d53Smrg#define TI_COLOR_KEY_CMPL 0x10 64950806d53Smrg#define TI_MCLK_DCLK_CONTROL 0x39 /* 3025 only */ 65050806d53Smrg#define TI_MCLK_LCLK_CONTROL 0x39 /* 3026 only */ 65150806d53Smrg#define TI_SENSE_TEST 0x3A 65250806d53Smrg#define TI_TEST_DATA 0x3B 65350806d53Smrg#define TI_CRC_LOW 0x3C 65450806d53Smrg#define TI_CRC_HIGH 0x3D 65550806d53Smrg#define TI_CRC_CONTROL 0x3E 65650806d53Smrg#define TI_ID 0x3F 65750806d53Smrg#define TI_VIEWPOINT20_ID 0x20 65850806d53Smrg#define TI_VIEWPOINT25_ID 0x25 65950806d53Smrg#define TI_MODE_85_CONTROL 0xD5 /* 3025 only */ 66050806d53Smrg 66150806d53Smrg#define TI_REF_FREQ 14.31818 /* 3025 only */ 66250806d53Smrg 66350806d53Smrg/* 66450806d53Smrg * which clocks should be set (just flags...) 66550806d53Smrg */ 66650806d53Smrg#define TI_BOTH_CLOCKS 1 66750806d53Smrg#define TI_LOOP_CLOCK 2 66850806d53Smrg 66950806d53Smrg/* IBM ramdac registers */ 67050806d53Smrg 67150806d53Smrg#define IBMRGB_rev 0x00 67250806d53Smrg#define IBMRGB_id 0x01 67350806d53Smrg#define IBMRGB_misc_clock 0x02 67450806d53Smrg#define IBMRGB_sync 0x03 67550806d53Smrg#define IBMRGB_hsync_pos 0x04 67650806d53Smrg#define IBMRGB_pwr_mgmt 0x05 67750806d53Smrg#define IBMRGB_dac_op 0x06 67850806d53Smrg#define IBMRGB_pal_ctrl 0x07 67950806d53Smrg#define IBMRGB_sysclk 0x08 /* not RGB525 */ 68050806d53Smrg#define IBMRGB_pix_fmt 0x0a 68150806d53Smrg#define IBMRGB_8bpp 0x0b 68250806d53Smrg#define IBMRGB_16bpp 0x0c 68350806d53Smrg#define IBMRGB_24bpp 0x0d 68450806d53Smrg#define IBMRGB_32bpp 0x0e 68550806d53Smrg#define IBMRGB_pll_ctrl1 0x10 68650806d53Smrg#define IBMRGB_pll_ctrl2 0x11 68750806d53Smrg#define IBMRGB_pll_ref_div_fix 0x14 68850806d53Smrg#define IBMRGB_sysclk_ref_div 0x15 /* not RGB525 */ 68950806d53Smrg#define IBMRGB_sysclk_vco_div 0x16 /* not RGB525 */ 69050806d53Smrg#define IBMRGB_f0 0x20 69150806d53Smrg#define IBMRGB_m0 0x20 69250806d53Smrg#define IBMRGB_n0 0x21 69350806d53Smrg#define IBMRGB_curs 0x30 69450806d53Smrg#define IBMRGB_curs_xl 0x31 69550806d53Smrg#define IBMRGB_curs_xh 0x32 69650806d53Smrg#define IBMRGB_curs_yl 0x33 69750806d53Smrg#define IBMRGB_curs_yh 0x34 69850806d53Smrg#define IBMRGB_curs_hot_x 0x35 69950806d53Smrg#define IBMRGB_curs_hot_y 0x36 70050806d53Smrg#define IBMRGB_curs_col1_r 0x40 70150806d53Smrg#define IBMRGB_curs_col1_g 0x41 70250806d53Smrg#define IBMRGB_curs_col1_b 0x42 70350806d53Smrg#define IBMRGB_curs_col2_r 0x43 70450806d53Smrg#define IBMRGB_curs_col2_g 0x44 70550806d53Smrg#define IBMRGB_curs_col2_b 0x45 70650806d53Smrg#define IBMRGB_curs_col3_r 0x46 70750806d53Smrg#define IBMRGB_curs_col3_g 0x47 70850806d53Smrg#define IBMRGB_curs_col3_b 0x48 70950806d53Smrg#define IBMRGB_border_col_r 0x60 71050806d53Smrg#define IBMRGB_border_col_g 0x61 71150806d53Smrg#define IBMRGB_botder_col_b 0x62 71250806d53Smrg#define IBMRGB_misc1 0x70 71350806d53Smrg#define IBMRGB_misc2 0x71 71450806d53Smrg#define IBMRGB_misc3 0x72 71550806d53Smrg#define IBMRGB_misc4 0x73 /* not RGB525 */ 71650806d53Smrg#define IBMRGB_dac_sense 0x82 71750806d53Smrg#define IBMRGB_misr_r 0x84 71850806d53Smrg#define IBMRGB_misr_g 0x86 71950806d53Smrg#define IBMRGB_misr_b 0x88 72050806d53Smrg#define IBMRGB_pll_vco_div_in 0x8e 72150806d53Smrg#define IBMRGB_pll_ref_div_in 0x8f 72250806d53Smrg#define IBMRGB_vram_mask_0 0x90 72350806d53Smrg#define IBMRGB_vram_mask_1 0x91 72450806d53Smrg#define IBMRGB_vram_mask_2 0x92 72550806d53Smrg#define IBMRGB_vram_mask_3 0x93 72650806d53Smrg#define IBMRGB_curs_array 0x100 72750806d53Smrg 72850806d53Smrg#endif 729