4.4BSD/usr/src/contrib/X11R5-luna68k/mit/server/ddx/sol/solFb.h

/*
 *  solFb.h -- 
 *
 *	remade by A.Fujita, DEC-16-1992
 */


#include <luna68k/dev/fbio.h>


typedef struct _SolFbProc {
	int		(*CreateProc)();
	int		(*InitProc)();
	void		(*GiveUpProc)();
} SolFbProc;        

typedef struct _SolFbInfo {
	int		fb_type;
	int		fb_width;
	int		fb_height;
	int		fb_depth;
	int		scr_width;
	int		scr_height;
	char		*plane;				/* BitMap Plane 1   [0xB10C0008] */
	int		fbfd;				/* /dev/fb */
	int		fbmapsize;			/* frame buffer mapping size   */
	char		*fbmap;				/* frame buffer mapping addres */
	SolFbProc	*func;
} SolFbInfo, *SolFbInfoPtr;


/*	fb_type		*/
#define FB_BM 		0


/* scr_width and scr_height */
#define SCREEN_WIDTH				1280
#define SCREEN_HEIGHT				1024

/* fb_width and fb_height */
#define FB_WIDTH				2048
#define FB_HEIGHT				1024

#define COLOR_TV_RESOLUTION  			110 
#define MONO_TV_RESOLUTION			125   


/*
**	frame buffer memory memory map
*/
struct bm_one_data {	/* mono frame buffer */
	int	sd[1][1024][64];	/* 2048 x 1024 */
};

struct bm_eight_data {	/* 8 depth color frame buffer */
	int	sd[8][1024][64];	/* 2048 x 1024 x 8 */
};

/*
** luna raster operateon hardware memory map
*/
union bm_function_set {
	long	op_cont[16];	/* function set register */
	char	pad[0x40000];
};

/*
**	luna graphic display control hardware mememory map 
*/
typedef struct sol_bm_fbmap {
	union {	
		long	reg;
		char	pad2[0x40000];
	} refresh;				/* display area control register (write only) */
	union {
		long	reg;
		char	pad3[0x40000];
	} pselect;				/* plane select register (write only) */
	struct bm_one_data	cbmplane;	/* common frame buffer (write only) */
	struct bm_eight_data	bmplane;	/* frame buffer (read/write) */
	union bm_function_set	cplane;		/* luna raster operateon hardware (common frame buffer)  */
	union bm_function_set	planes[8];	/* luna raster operateon hardware */
} *SolBmMapPtr;


extern Bool solBmCreate();
extern Bool solBmInit();
extern void solBmGiveUp();