V9/sys/sundev/bw2reg.h

Compare this file to the similar file:
Show the results in this format:

/*	@(#)bw2reg.h 1.1 86/02/03 SMI	*/

/*
 * Copyright (c) 1985 by Sun Microsystems, Inc.
 */


/*
 * Sun-2 black and white display hardware definitions
 */

/*
 * The Sun-2 video lives in P2 memory space (BW2MB) or is onboard
 * (BW2OB); we can access it through
 *	the identical virtual addresses established by the monitor
 *	the physical address appropriate to the type.
 * The video memory is just memory, although it can also copy data that
 * is written to other locations.
 * The A-side of the MB_ZSCC connects to the keyboard.
 * The B-side of the MB_ZSCC connects to the mouse.
 */

#define	BW2_FBSIZE		(128*1024)	/* size of frame buffer */

#define	BW2MB_FB	(char *)0x700000	/* frame buffer */
#define	BW2MB_ZSCC	(char *)0x780000	/* UARTS */
#define BW2MB_CR	(char *)0x781800	/* video control register */
#define BW2MB_PGT		PGT_OBMEM

#define BW2VME_FB	(char *)0x000000
#define BW2VME_CR	(char *)0x020000
#define BW2VME_PGT		PGT_OBIO

/*
 * The video control register is arranged as shown below.
 *
 * Vc_copybase specifies the base (physical) address in main memory
 * where, if a write is done, the write is also done to the frame buffer.
 * Note that copying only works on 128K boundaries even though the base
 * address is specified in 64K units, since the low order bit is ignored.
 */
struct	bw2cr {
	unsigned vc_video_en:1;		/* Video enable */
	unsigned vc_copy_en:1;		/* Copy enable */
	unsigned vc_int_en:1;		/* Interrupt enable */
	unsigned vc_int:1;		/* Int active - r/o */
	unsigned vc_b_jumper:1;		/* Config jumper, 0=default */
					/* FIXME: 1=manufacturing burnin */
					/* This is a 'temporary' kludge */
	unsigned vc_a_jumper:1;		/* Config jumper, 0=default */
	unsigned vc_color_jumper:1;	/* Config jumper, 0=default */
					/* 1=use S-2 color as console */
	unsigned vc_1024_jumper:1;	/* Config jumper, 0=default */
					/* 1=screen is 1024*1024 */
	/* NOTE: vc_copybase & 0x81 == aberrant bits. Don't depend on 'em! */
#define	weird	1
	unsigned vc_copybase:weird+6+weird;	/* Base addr of copy memory */
#undef	weird
};
#define BW2_COPYSHIFT	16		/* bits to shift base address */

#define BW2_USECOPYMEM		0x1	/* config flag to use copy memory */

#define BW2_VIDEOENABLEMASK     0x8000  /* Video enable */
#define BW2_COPYENABLEMASK      0x4000  /* Copy enable */
#define BW2_INTENABLEMASK       0x2000  /* Interrupt enable */
#define BW2_INTACTIVEMASK       0x1000  /* Interrupt active */
#define BW2_COPYBASEMASK        0x007E  /* Copy base */

/*
 * The device itself, as we remap it
 */
struct	bw2dev {
	u_char	image[BW2_FBSIZE];
#ifdef sun2
	struct bw2cr bw2cr;
	u_char	filler[NBPG - sizeof (struct bw2cr)];
#endif
};