patch-2.3.9 linux/include/asm-mips/ng1hw.h

Next file: linux/include/asm-mips/offset.h
Previous file: linux/include/asm-mips/ng1.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.8/linux/include/asm-mips/ng1hw.h linux/include/asm-mips/ng1hw.h
@@ -0,0 +1,572 @@
+/* This is the hardware interface for newport graphics.  It's taken from
+   IRIX.
+
+   Alex deVries <puffin@redhat.com>
+
+*/
+
+
+#ifndef __SYS_NG1HW_H__
+#define __SYS_NG1HW_H__
+
+#ident "$Revision: 1.1 $"
+
+#define BIT(n)	(0x1 << n)
+
+
+#ifndef REX_ASMCODE
+
+typedef union {
+    volatile float flt;
+    volatile unsigned int word;
+} float_long;
+
+typedef volatile unsigned int vol_ulong;
+typedef volatile unsigned int fixed16;
+
+typedef union {
+    vol_ulong   byword;
+    struct {
+	volatile unsigned short s0;
+	volatile unsigned short s1;
+    } byshort;
+    struct {
+	volatile unsigned char b0, b1, b2;
+	volatile unsigned char b3;
+    } bybyte;
+} DCB_reg;
+
+#ifndef REXSIM
+typedef struct rex3regs {	/* THE CHIP */
+    vol_ulong drawmode1;	/* extra mode bits for GL 	0x0000 */
+    vol_ulong drawmode0;	/* command register 		0x0004 */
+
+    vol_ulong lsmode;		/* line stipple mode		0x0008 */
+    vol_ulong lspattern;	/* 32 bit pixel lspattern	0x000c */
+    vol_ulong lspatsave;	/* save register for lspattern	0x0010 */
+    vol_ulong zpattern;		/* 32 bit pixel zpattern	0x0014 */
+
+    vol_ulong colorback;	/* background color		0x0018 */
+    vol_ulong colorvram;	/* fast vram clear color	0x001c */
+    vol_ulong alpharef;		/* afunction reference value	0x0020 */
+
+    vol_ulong pad0;		/* padding 			0x0024 */	
+
+    vol_ulong smask0x;		/* screen mask 0, window rel,	0x0028 */
+    vol_ulong smask0y;		/* exclusively for the GL	0x002c */
+    vol_ulong _setup;		/* do line/span setup, no iter  0x0030 */
+    vol_ulong _stepz;		/* Enable ZPATTERN for this pix 0x0034 */
+    vol_ulong _lsrestore;	/* Restore lspattern,count	0x0038 */
+    vol_ulong _lssave;		/* Backup lspattern,count	0x003c */
+
+    char _pad1[0x100-0x40];
+
+    float_long _xstart;		/* 16.4(7) current x		0x0100 */
+    float_long _ystart;		/* 16.4(7) current y		0x0104 */
+    float_long _xend;		/* 16.4(7)			0x0108 */
+    float_long _yend;		/* 16.4(7)			0x010c */
+    vol_ulong xsave;		/* 16	x save for blocks	0x0110 */
+    vol_ulong xymove;		/* x,y copy dest offset		0x0114 */
+    float_long bresd;		/* s19.8 bres d error term	0x0118 */
+    float_long bress1;		/* s2.15 bres s coverage term	0x011c */
+    vol_ulong bresoctinc1;	/* 3(4)17.3 octant+inc1 value	0x0120 */
+    volatile int bresrndinc2;	/* 8(3)18.3 bres inc2 value	0x0124 */
+    vol_ulong brese1;		/* 1.15 bres e1 (minor slope)	0x0128 */
+    vol_ulong bress2;           /* s18.8 bres s2 coverage term  0x012c */
+    vol_ulong aweight0;		/* antialiasing weights		0x0130 */
+    vol_ulong aweight1;		/* antialiasing weights		0x0134 */
+    float_long xstartf;		/* 12.4(7) GL version of _xstart0x0138 */
+    float_long ystartf;		/* 12.4(7)			0x013c */
+    float_long xendf;		/* 12.4(7)			0x0140 */
+    float_long yendf;		/* 12.4(7)			0x0144 */
+    fixed16 xstarti;		/* 16 integer format for xstart 0x0148 */
+    float_long xendf1;		/* 12.4(7) same as xend		0x014c */
+    fixed16 xystarti;		/* 16,16			0x0150 */
+    fixed16 xyendi;		/* 16,16			0x0154 */
+    fixed16 xstartendi;		/* 16,16			0x0158 */
+    char _pad2[0x200-0x15c];
+    float_long colorred;	/* o12.11 red (also foreground)	0x0200 */
+    float_long coloralpha;	/* o8.11 alpha			0x0204 */
+    float_long colorgrn;	/* o8.11 green			0x0208 */
+    float_long colorblue;	/* o8.11 blue			0x020c */
+    float_long slopered;	/* s9.11			0x0210 */
+    float_long slopealpha;	/* s9.11			0x0214 */
+    float_long slopegrn;	/* s9.11			0x0218 */
+    float_long slopeblue;	/* s9.11			0x021c */
+    vol_ulong wrmask;		/* writemask			0x0220 */
+    vol_ulong colori;		/* packed bgr/ci		0x0224 */
+    float_long colorx;		/* 12.11 red (no overflow)	0x0228 */
+    float_long slopered1;	/* same as slopered		0x022c */
+    vol_ulong hostrw0;		/* host PIO/DMA port (msw)	0x0230 */
+    vol_ulong hostrw1;		/* host PIO/DMA port (lsw)	0x0234 */
+    vol_ulong dcbmode;		/* display ctrl bus mode reg 	0x0238 */
+    volatile int pad3;						/* 0x023c */
+    DCB_reg dcbdata0;		/* display ctrl bus port (msw)	0x0240 */
+    vol_ulong dcbdata1;		/* display ctrl bus port (lsw)	0x0244 */
+} Rex3regs;
+	
+
+typedef struct configregs {
+    vol_ulong smask1x;		/* screenmask1 right,left edges 0x1300 */
+    vol_ulong smask1y;		/* screenmask1 bottom,top edges 0x1304 */
+    vol_ulong smask2x;		/* screenmask2 right,left edges 0x1308 */
+    vol_ulong smask2y;		/* screenmask2 bottom,top edges 0x130c */
+    vol_ulong smask3x;		/* screenmask3 right,left edges 0x1310 */
+    vol_ulong smask3y;		/* screenmask3 bottom,top edges 0x1314 */
+    vol_ulong smask4x;		/* screenmask4 right,left edges 0x1318 */
+    vol_ulong smask4y;		/* screenmask4 bottom,top edges 0x131c */
+    vol_ulong topscan;		/* y coord of top screen line	0x1320 */
+    vol_ulong xywin;		/* window offset 		0x1324 */
+    vol_ulong clipmode;		/* cid,smask settings 		0x1328 */
+    vol_ulong pad0;		/*				0x132c */
+    vol_ulong config;		/* miscellaneous  config bits 	0x1330 */
+    vol_ulong pad1;		/*				0x1334 */
+    vol_ulong status;		/* chip busy, FIFO, int status  0x1338 */
+				/* read clears interrupt status bits   */
+    vol_ulong ustatus;		/* padding on rex rev a, 'read-only' 0x133c */
+				/* copy of status on rex rev b.	       */
+    vol_ulong dcbreset;		/* resets DCB and flushes BFIFO 0x1340 */
+} Configregs;
+
+typedef struct rex3chip {
+		/* page 0 */    
+	struct rex3regs set;		/* 0x0000 */
+	char _pad0[0x7fc-sizeof(struct rex3regs)];
+	volatile unsigned int dummy; /* 0x7fc */
+	struct rex3regs go;		/* 0x0800 */
+
+	char _pad1[0x1300-0x800-sizeof(struct rex3regs)];
+
+		/* page 1 */
+	struct {
+	    struct configregs set; 	/* 0x1300 */
+	    char _pad0[0x800-sizeof(struct configregs)];
+	    struct configregs go; 	/* 0x1b00 */
+	} p1;
+} rex3Chip, Rex3chip;
+
+
+#endif /* REX_ASMCODE */
+#endif /* REXSIM */
+
+/* Since alot of flags went away, define here as null bits
+   and leave the code as it is for now, 
+   marking where we have to change stuff.
+
+   NONE of these should be defined !   - billt
+   */
+
+#define LSCONTINUE 0
+#define SHADECONTINUE 0
+#define XYCONTINUE 0
+#define XMAJOR 0
+#define YMAJOR 0
+#define QUADMODE 0
+#define LRQPOLY 0
+/* RGBMODE, DITHER now live in DM1 */
+#define RGBMODECMD 0
+#define DITHER 0
+#define DITHERRANGE 0
+/* BLOCK is a function of ADDRMODE */
+#define BLOCK 0
+#define STOPONX 0
+#define STOPONY 0
+/* COLORCOMPARE is a combo of 3 bits (<, = , >) */
+#define COLORCOMP 0
+/* FRACTIONS are gone... */
+#define INITFRAC 0
+#define FRACTION1 0
+
+/* -- some old AUX1 junk -- */
+#define DOUBLEBUF 0
+#define DBLDST0 0
+#define DBLDST1 0
+#define DBLSRC 0
+#define COLORAUX 0
+
+
+/* --- a couple of old cmds also only for conversion --- */
+#define REX_LDPIXEL 0x1
+#define REX_ANTIAUX 0
+#define REX_DRAW 0
+#define LOGICSRC 0
+/* --- Blech! locicops are in DM1 too! */
+#define REX_LO_ZERO REX_LO_ZERO 
+#define REX_LO_AND DM1_LO_AND
+#define REX_LO_ANDR DM1_LO_ANDR
+#define REX_LO_SRC DM1_LO_SRC
+#define REX_LO_ANDI DM1_LO_ANDI
+#define REX_LO_DST DM1_LO_DST
+#define REX_LO_XOR DM1_LO_XOR
+#define REX_LO_OR DM1_LO_OR
+#define REX_LO_NOR DM1_LO_NOR
+#define REX_LO_XNOR DM1_LO_XNOR
+#define REX_LO_NDST DM1_LO_NDST
+#define REX_LO_ORR DM1_LO_ORR
+#define REX_LO_NSRC DM1_LO_NSRC
+#define REX_LO_ORI DM1_LO_ORI
+#define REX_LO_NAND DM1_LO_NAND
+#define REX_LO_ONE DM1_LO_ONE
+
+
+/*
+ *  drawmode flags
+ */
+#define DM0_OPCODE	0x3		/* opcode(1:0)	*/
+#	define DM0_NOP		0x0
+#	define DM0_READ		0x1
+#	define DM0_DRAW		0x2
+#	define DM0_SCR2SCR	0x3
+#define DM0_ADRMODE_SHIFT	2	/* adrmode(2:0)	*/
+#	define DM0_ADRMODE	(0x7<<DM0_ADRMODE_SHIFT)
+#	define DM0_SPAN		(0x0<<DM0_ADRMODE_SHIFT)
+#	define DM0_BLOCK	(0x1<<DM0_ADRMODE_SHIFT)
+#	define DM0_ILINE	(0x2<<DM0_ADRMODE_SHIFT)
+#	define DM0_FLINE	(0x3<<DM0_ADRMODE_SHIFT)
+#	define DM0_ALINE	(0x4<<DM0_ADRMODE_SHIFT)
+#ifdef OLDJUNK
+
+/* XXX These definitions are obsolete */
+
+#	define DM0_AELINE	(0x5<<DM0_ADRMODE_SHIFT)
+#	define DM0_ACWEDGE	(0x6<<DM0_ADRMODE_SHIFT)
+#	define DM0_ACCWEDGE	(0x7<<DM0_ADRMODE_SHIFT)
+
+#else
+
+/* XXX These are according to 11/2/92 spec */
+
+#       define DM0_TLINE        (0x5<<DM0_ADRMODE_SHIFT)
+#       define DM0_BLINE        (0x6<<DM0_ADRMODE_SHIFT)
+
+#endif /* OLDJUNK */
+
+#define DM0_DOSETUP	BIT(5)
+#define DM0_COLORHOST	BIT(6)
+#define DM0_ALPHAHOST	BIT(7)
+#define DM0_STOPONX	BIT(8)
+#define DM0_STOPONY	BIT(9)
+#define DM0_STOPONXY	(DM0_STOPONX | DM0_STOPONY)
+#define DM0_SKIPFIRST	BIT(10)
+#define DM0_SKIPLAST	BIT(11)
+#define DM0_ENZPATTERN	BIT(12)
+#define DM0_ENLSPATTERN	BIT(13)
+#define DM0_LSADVLAST	BIT(14)
+#define DM0_LENGTH32	BIT(15)
+#define DM0_ZOPAQUE	BIT(16)
+#define DM0_LSOPAQUE	BIT(17)
+#define DM0_SHADE	BIT(18)
+#define DM0_LRONLY	BIT(19)
+
+#ifdef OLDJUNK
+
+/* XXX These definitions are obsolete */
+
+#define DM0_CICLAMP     BIT(20)
+#define DM0_ENDPTFILTER BIT(21)
+
+#else
+
+/* XXX These are according to 11/2/92 spec */
+
+#define DM0_XYOFFSET    BIT(20)
+#define DM0_CICLAMP     BIT(21)
+#define DM0_ENDPTFILTER BIT(22)
+
+#endif	/* OLDJUNK */
+/* New Feature in REX REV B */
+#define	DM0_YSTRIDE	BIT(23)
+
+#define DM1_PLANES_SHIFT	0
+#define DM1_PLANES	0x7		/* planes(2:0)	*/
+#	define DM1_NOPLANES	0x0
+#	define DM1_RGBPLANES	0x1
+#	define DM1_RGBAPLANES	0x2
+#	define DM1_OLAYPLANES	0x4
+#	define DM1_PUPPLANES	0x5
+#	define DM1_CIDPLANES	0x6
+#define DM1_DRAWDEPTH_SHIFT	3	/* drawdepth(1:0)	*/
+#define DM1_DRAWDEPTH_MASK      (3 << DM1_DRAWDEPTH_SHIFT)
+#	define DM1_DRAWDEPTH	(0x3 << DM1_DRAWDEPTH_SHIFT)	
+#	define DM1_DRAWDEPTH4	(0x0 << DM1_DRAWDEPTH_SHIFT)
+#	define DM1_DRAWDEPTH8	(0x1 << DM1_DRAWDEPTH_SHIFT)
+#	define DM1_DRAWDEPTH12	(0x2 << DM1_DRAWDEPTH_SHIFT)
+#	define DM1_DRAWDEPTH24	(0x3 << DM1_DRAWDEPTH_SHIFT)
+#define DM1_DBLSRC		BIT(5)
+#define DM1_YFLIP		BIT(6)
+#define DM1_RWPACKED		BIT(7)
+#define DM1_HOSTDEPTH_SHIFT 	8	/* hostdepth(1:0)	*/
+#define DM1_HOSTDEPTH_MASK      (3 << DM1_HOSTDEPTH_SHIFT)
+#	define DM1_HOSTDEPTH	(0x3 << DM1_HOSTDEPTH_SHIFT)
+#	define DM1_HOSTDEPTH4	(0x0 << DM1_HOSTDEPTH_SHIFT)
+#	define DM1_HOSTDEPTH8	(0x1 << DM1_HOSTDEPTH_SHIFT)
+#	define DM1_HOSTDEPTH12	(0x2 << DM1_HOSTDEPTH_SHIFT)
+#	define DM1_HOSTDEPTH32	(0x3 << DM1_HOSTDEPTH_SHIFT)
+#define DM1_RWDOUBLE		BIT(10)
+#define DM1_SWAPENDIAN		BIT(11)
+#define DM1_COLORCOMPARE_SHIFT  12	/* compare (2:0)	*/
+#define DM1_COLORCOMPARE_MASK  (7 << DM1_COLORCOMPARE_SHIFT)
+#	define DM1_COLORCOMPARE (0x7 << DM1_COLORCOMPARE_SHIFT)
+#	define DM1_COLORCOMPLT	BIT(12)
+#	define DM1_COLORCOMPEQ	BIT(13)
+#	define DM1_COLORCOMPGT	BIT(14)
+#define DM1_RGBMODE		BIT(15)
+#define DM1_ENDITHER		BIT(16)
+#define DM1_FASTCLEAR		BIT(17)
+#define DM1_ENBLEND		BIT(18)
+#define DM1_SF_SHIFT		19	/* sfactor(2:0)	*/
+#define DM1_SF_MASK   		(7 << DM1_SF_SHIFT)
+#	define DM1_SF		(0x7 << DM1_SF_SHIFT)
+#	define DM1_SF_ZERO	(0x0 << DM1_SF_SHIFT)
+#	define DM1_SF_ONE	(0x1 << DM1_SF_SHIFT)
+#	define DM1_SF_DC	(0x2 << DM1_SF_SHIFT)
+#	define DM1_SF_MDC	(0x3 << DM1_SF_SHIFT)
+#	define DM1_SF_SA	(0x4 << DM1_SF_SHIFT)
+#	define DM1_SF_MSA	(0x5 << DM1_SF_SHIFT)
+#define DM1_DF_SHIFT		22	/* dfactor(2:0)	*/
+#define DM1_DF_MASK     (7 << DM1_DF_SHIFT)
+#	define DM1_DF		(0x7 << DM1_DF_SHIFT)
+#	define DM1_DF_ZERO	(0x0 << DM1_DF_SHIFT)
+#	define DM1_DF_ONE	(0x1 << DM1_DF_SHIFT)
+#	define DM1_DF_SC	(0x2 << DM1_DF_SHIFT)
+#	define DM1_DF_MSC	(0x3 << DM1_DF_SHIFT)
+#	define DM1_DF_SA	(0x4 << DM1_DF_SHIFT)
+#	define DM1_DF_MSA	(0x5 << DM1_DF_SHIFT)
+#define DM1_ENBACKBLEND		BIT(25)
+#define DM1_ENPREFETCH		BIT(26)
+#define DM1_BLENDALPHA		BIT(27)
+#define DM1_LO_SHIFT		28	/* logicop(3:0)	*/
+#	define DM1_LO		(0xF << DM1_LO_SHIFT)
+#       define DM1_LO_MASK      DM1_LO
+#	define DM1_LO_ZERO	(0x0 << DM1_LO_SHIFT)
+#	define DM1_LO_AND	(0x1 << DM1_LO_SHIFT)
+#	define DM1_LO_ANDR	(0x2 << DM1_LO_SHIFT)
+#	define DM1_LO_SRC	(0x3 << DM1_LO_SHIFT)
+#	define DM1_LO_ANDI	(0x4 << DM1_LO_SHIFT)
+#	define DM1_LO_DST	(0x5 << DM1_LO_SHIFT)
+#	define DM1_LO_XOR	(0x6 << DM1_LO_SHIFT)
+#	define DM1_LO_OR	(0x7 << DM1_LO_SHIFT)
+#	define DM1_LO_NOR	(0x8 << DM1_LO_SHIFT)
+#	define DM1_LO_XNOR	(0x9 << DM1_LO_SHIFT)
+#	define DM1_LO_NDST	(0xa << DM1_LO_SHIFT)
+#	define DM1_LO_ORR	(0xb << DM1_LO_SHIFT)
+#	define DM1_LO_NSRC	(0xc << DM1_LO_SHIFT)
+#	define DM1_LO_ORI	(0xd << DM1_LO_SHIFT)
+#	define DM1_LO_NAND	(0xe << DM1_LO_SHIFT)
+#	define DM1_LO_ONE	(0xf << DM1_LO_SHIFT)
+
+
+
+/*
+ * Clipmode register bits
+ */
+
+#define SMASK0	BIT(0)
+#define SMASK1	BIT(1)
+#define SMASK2	BIT(2)
+#define SMASK3	BIT(3)
+#define SMASK4	BIT(4)
+#define ALL_SMASKS	31
+
+#define CM_CIDMATCH_SHIFT       9
+#define CM_CIDMATCH_MASK        (0xf << CM_CIDMATCH_SHIFT)
+
+
+/*
+ * Status register bits
+ */
+
+#define REX3VERSION_MASK 7
+#define GFXBUSY         BIT(3)
+#define BACKBUSY        BIT(4)
+#define VRINT           BIT(5)
+#define VIDEOINT        BIT(6)
+#define GFIFO_LEVEL_SHIFT       7
+#define GFIFO_LEVEL_MASK        (0x3f << GFIFO_LEVEL_SHIFT)
+#define BFIFO_LEVEL_SHIFT       13
+#define BFIFO_LEVEL_MASK        (0x1f << BFIFO_LEVEL_SHIFT)
+#define BFIFO_INT        BIT(18)
+#define GFIFO_INT        BIT(19)
+
+
+/*
+ * Config register bits
+ */
+
+#define GIO32MODE       BIT(0)
+#define BUSWIDTH        BIT(1)
+#define EXTREGXCVR      BIT(2)
+#define BFIFODEPTH_SHIFT        3
+#define BFIFODEPTH_MASK         (0xf << BFIFODEPTH_SHIFT)
+#define BFIFOABOVEINT   BIT(7)
+#define GFIFODEPTH_SHIFT        8
+#define GFIFODEPTH_MASK         (0x1f << GFIFODEPTH_SHIFT)
+#define GFIFOABOVEINT   BIT(13)
+#define TIMEOUT_SHIFT   14
+#define TIMEOUT_MASK    (7 << TIMEOUT_SHIFT)
+#define VREFRESH_SHIFT  17
+#define VREFRESH_MASK   (0x7 << VREFRESH_SHIFT)
+#define FB_TYPE         BIT(20)
+
+/*
+ * Display Control Bus (DCB) macros
+ */
+
+#define DCB_DATAWIDTH_MASK  (0x3)
+#define DCB_ENDATAPACK      BIT(2)
+#define DCB_ENCRSINC        BIT(3)
+#define DCB_CRS_SHIFT    4
+#define DCB_CRS_MASK     (0x7 << DCB_CRS_SHIFT)
+#define DCB_ADDR_SHIFT   7
+#define DCB_ADDR_MASK    (0xf << DCB_ADDR_SHIFT)
+#define DCB_ENSYNCACK       BIT(11)
+#define DCB_ENASYNCACK      BIT(12)
+#define DCB_CSWIDTH_SHIFT   13
+#define DCB_CSWIDTH_MASK    (0x1f << CSWIDTH_SHIFT)
+#define DCB_CSHOLD_SHIFT    18
+#define DCB_CSHOLD_MASK     (0x1f << CSHOLD_SHIFT)
+#define DCB_CSSETUP_SHIFT   23
+#define DCB_CSSETUP_MASK    (0x1f << CSSETUP_SHIFT)
+#define DCB_SWAPENDIAN      BIT(28)
+
+
+/*
+ * Some values for DCBMODE fields
+ */
+#define DCB_DATAWIDTH_4		0x0
+#define DCB_DATAWIDTH_1		0x1
+#define DCB_DATAWIDTH_2		0x2
+#define DCB_DATAWIDTH_3		0x3
+
+
+/*
+ * DCB_ADDR values to select the various dcb slave devices
+ */
+#define DCB_VC2          (0 << DCB_ADDR_SHIFT)
+#define DCB_CMAP_ALL     (1 << DCB_ADDR_SHIFT)
+#define DCB_CMAP0        (2 << DCB_ADDR_SHIFT)
+#define DCB_CMAP1        (3 << DCB_ADDR_SHIFT)
+#define DCB_XMAP_ALL     (4 << DCB_ADDR_SHIFT)
+#define DCB_XMAP0        (5 << DCB_ADDR_SHIFT)
+#define DCB_XMAP1        (6 << DCB_ADDR_SHIFT)
+#define DCB_BT445        (7 << DCB_ADDR_SHIFT)
+#define DCB_VCC1         (8 << DCB_ADDR_SHIFT)
+#define DCB_VAB1         (9 << DCB_ADDR_SHIFT)
+#define DCB_LG3_BDVERS0      (10 << DCB_ADDR_SHIFT)
+#define DCB_LG3_ICS1562      (11 << DCB_ADDR_SHIFT)
+#define DCB_RESERVED     (15 << DCB_ADDR_SHIFT)
+
+/*
+ * New DCB Addresses which are used in (new) Indigo2 Video and Galileo 1.5
+ * since these boards have to work with Mardi Gras also. Yet, these
+ * are not necessarily the MGRAS address, these translate to the Mardi Gras
+ * addresses when the lower 2 bits are swapped (which will happen on 
+ * the Newport to new video board flex cable).
+ */
+#define DCB_VAB1_NEW     (9 << DCB_ADDR_SHIFT)
+/*
+ * While the Presenter is currently using address 12 and
+ * conflicting with the CC1, it has been changed for Mardi Gras
+ * To use the new video boards with Newport (an unreleased product)
+ * the presenter probe must be disabled by changing the presenter
+ * DCB address in gfx/kern/sys/pcd.h (and possibly
+ * lotus/stand/arcs/lib/libsk/graphics/NEWPORT/pcd.h), so 
+ * it is probed at address 11.  This will of course not work with
+ * the presenter card but it will allow you to test new video
+ * boards will Newport
+ */
+
+#define DCB_VCC1_NEW     (12 << DCB_ADDR_SHIFT)
+/*#define DCB_VCC1_NEW     (8 << DCB_ADDR_SHIFT)*/
+
+/*
+ * Addresses being used for Galileo 1.5.
+ */
+#define DCB_VCC1_GAL     (8 << DCB_ADDR_SHIFT) /* was 12 and will return */
+#define DCB_VAB1_GAL     (9 << DCB_ADDR_SHIFT)
+#define DCB_TMI_CSC      (13 << DCB_ADDR_SHIFT)
+#define DCB_GAL          (14 << DCB_ADDR_SHIFT)
+
+/*
+ * LG3 - (Newport for Fullhouse) board defines
+ */
+/* Version 0 register */
+#define LG3_VC2_UNRESET BIT(0)
+#define	LG3_GFX_UNRESET	BIT(1)
+#define LG3_PLL_UNRESET BIT(2)
+#define LG3_DLHD_MASTER BIT(3)
+
+#define LG3_BDVERS_PROTOCOL ((2 << DCB_CSWIDTH_SHIFT) | (1 << DCB_CSHOLD_SHIFT) | (1 << DCB_CSSETUP_SHIFT))
+
+#define lg3BdVersGet(rex3, data)			 		\
+        rex3->set.dcbmode = DCB_LG3_BDVERS0 | \
+		LG3_BDVERS_PROTOCOL | DCB_DATAWIDTH_1 ;			\
+        data = rex3->set.dcbdata0.bybyte.b3
+
+#define lg3BdVersSet(rex3, data)			 		\
+        rex3->set.dcbmode = DCB_LG3_BDVERS0 | \
+		LG3_BDVERS_PROTOCOL | DCB_DATAWIDTH_1 ;		\
+	rex3->set.dcbdata0.bybyte.b3 = (data)
+
+#define Ics1562Set(rex3, data)			 		\
+        rex3->set.dcbmode = DCB_LG3_ICS1562 | LG3_BDVERS_PROTOCOL | DCB_DATAWIDTH_1 ; \
+	rex3->set.dcbdata0.bybyte.b3 = (data)
+
+#define	LG3_BD_001	0x7
+#define	LG3_BD_002	0x0
+/*
+ * Lsmode register bits
+ */
+#define LSRCOUNT_SHIFT  0
+#define LSRCOUNT_MASK   (0xff << LSRCOUNT_SHIFT)
+#define LSREPEAT_SHIFT  8
+#define LSREPEAT_MASK   (0xff << LSREPEAT_SHIFT)
+#define LSRCNTSAVE_SHIFT        16
+#define LSRCNTSAVE_MASK (0xff << LSRCNTSAVE_SHIFT)
+#define LSLENGTH_SHIFT  24
+#define LSLENGTH_MASK   (0xf << LSLENGTH_SHIFT)
+
+#if	defined ( _KERNEL ) && defined ( REX3_RUNTIME_REV_CHECK )
+
+extern void _newport_poll_status (register struct rex3chip *, register int);
+
+#define REX3WAIT(rex3)  _newport_poll_status (rex3, GFXBUSY)
+#define BFIFOWAIT(rex3)  _newport_poll_status (rex3, BACKBUSY)
+
+#else
+
+/* XXX  When we drop support for rex rev b,
+ * change status to ustatus in the macros below.
+ */
+#define REX3WAIT(rex3)  while ((rex3)->p1.set.status & GFXBUSY)
+#define BFIFOWAIT(rex3)  while ((rex3)->p1.set.status & BACKBUSY)
+
+#endif
+
+/*
+ * Legal GIO bus addresses for Newport graphics boards.
+ */
+#define REX3_GIO_ADDR_0         0x1f0f0000
+#define REX3_GIO_ADDR_1         0x1f4f0000
+#define REX3_GIO_ADDR_2         0x1f8f0000
+#define REX3_GIO_ADDR_3         0x1fcf0000
+
+#define NG1_XSIZE       1280    /* screen size in x */
+#define NG1_YSIZE       1024    /* screen size in y */
+
+/*
+ * XXX Correct values TBD.  Depends on video timing
+ */
+#define CURSOR_XOFF 29
+#define CURSOR_YOFF 31
+
+#ifdef _STANDALONE
+struct rex3chip;
+struct ng1_info;
+void Ng1RegisterInit(struct rex3chip *, struct ng1_info *);
+extern int ng1checkboard(void);
+extern void vc2LoadSRAM(struct rex3chip *, unsigned short *,
+		unsigned int , unsigned int);
+#endif
+
+#endif /* __SYS_NG1HW_H__ */

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)