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