diff options
author | Alex deVries <Alex.deVries@windriver.com> | 1999-01-27 19:10:08 +0000 |
---|---|---|
committer | Alex deVries <Alex.deVries@windriver.com> | 1999-01-27 19:10:08 +0000 |
commit | c0dbc80c19a79b78f792344763a5ed64ad33294a (patch) | |
tree | b129bc723bbf220af1295fb2b71473a9d3705a24 /include/asm-mips | |
parent | c9d9770234295f765052e1beff3a96770bba9de1 (diff) |
Fixing up newport graphics include files.
- Alex
Diffstat (limited to 'include/asm-mips')
-rw-r--r-- | include/asm-mips/ng1.h | 26 | ||||
-rw-r--r-- | include/asm-mips/ng1hw.h | 572 |
2 files changed, 585 insertions, 13 deletions
diff --git a/include/asm-mips/ng1.h b/include/asm-mips/ng1.h index 44ef62f85..370ac27ad 100644 --- a/include/asm-mips/ng1.h +++ b/include/asm-mips/ng1.h @@ -5,24 +5,24 @@ typedef struct { int flags; - u16 w, h; - u16 fields_sec; + __u16 w, h; + __u16 fields_sec; } ng1_vof_info_t; struct ng1_info { struct gfx_info gfx_info; - u8 boardrev; - u8 rex3rev; - u8 vc2rev; - u8 monitortype; - u8 videoinstalled; - u8 mcrev; - u8 bitplanes; - u8 xmap9rev; - u8 cmaprev; + __u8 boardrev; + __u8 rex3rev; + __u8 vc2rev; + __u8 monitortype; + __u8 videoinstalled; + __u8 mcrev; + __u8 bitplanes; + __u8 xmap9rev; + __u8 cmaprev; ng1_vof_info_t ng1_vof_info; - u8 bt445rev; - u8 paneltype; + __u8 bt445rev; + __u8 paneltype; }; #define GFX_NAME_NEWPORT "NG1" diff --git a/include/asm-mips/ng1hw.h b/include/asm-mips/ng1hw.h new file mode 100644 index 000000000..1a4631040 --- /dev/null +++ b/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.44 $" + +#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__ */ |