/* $XFree86: xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h,v 3.0 1994/05/04 15:00:54 dawes Exp $ */
/*
 * MONO: Driver family for interlaced and banked monochrome video adaptors
 * Pascal Haible 8/93, 3/94, 4/94 haible@IZFM.Uni-Stuttgart.DE
 *
 * mono/driver/apollo/apolloHW.h
 * Hamish Coleman 11/93 hamish@zot.apana.org.au 
 *
 * derived from:
 * bdm2/hgc1280/*
 * Pascal Haible 8/93, haible@izfm.uni-stuttgart.de
 *
 * see mono/COPYRIGHT for copyright and disclaimers.
 */

/* Ports */

#define AP_PORT_BASE		0x3b0
#define AP_PORT_ALTERNATE	0x3d0

/* Read  Byte  Status Reg */
#define AP_PORT_STATUS		(Apollo_IOBASE)
/* Write Word  Write Enable Reg */
#define AP_PORT_WRITE_ENABLE	(Apollo_IOBASE)
/* Read  Byte  Device ID reg */
#define AP_PORT_DEVICE_ID	(Apollo_IOBASE+0x01)
/* Write Word  Raster Operation Reg */
#define AP_PORT_ROP		(Apollo_IOBASE+0x02)
/* Write Word  Diagnostic Memory Request */
#define AP_PORT_DIAG_MEM_REQ	(Apollo_IOBASE+0x04)
/* Byte  Control Reg 0 - blit Mode & Shift reg */
#define AP_PORT_CONTROL_0	(Apollo_IOBASE+0x08)
/* Byte  Control Reg 1 - operation modes */
#define AP_PORT_CONTROL_1	(Apollo_IOBASE+0x0a)
/* Byte  Control Reg 2 - Plane acces mode */
#define AP_PORT_CONTROL_2	(Apollo_IOBASE+0x0c)
/* Byte  Control Reg 3 - Reset?? */
#define AP_PORT_CONTROL_3	(Apollo_IOBASE+0x0e)

/* CREG 0 settings */
#define AP_MODE_VECTOR		0x40	/* 010x.xxxx */
#define AP_MODE_DBLT		0x80	/* 100x.xxxx */
#define AP_MODE_NORMAL		0xE0	/* 111x.xxxx */
#define AP_SHIFT_BITS		0x1F	/* xxx1.1111 */

/* CREG 1 settings */
#define AP_BLT_NORMAL		0x80	/* 1xxx.xxxx */
#define AP_BLT_INVERSE		0x00	/* 0xxx.xxxx */
#define AP_BLT_HIBIT		0x40	/* x!xx.xxxx */
#define AP_ROP_ENABLE		0x10	/* xxx1.xxxx */
#define AP_ROP_DISABLE		0x00	/* xxx0.xxxx */
#define AP_SYNC_nRESET		0x08	/* xxxx.1xxx */
#define AP_SYNC_ENABLE		0x02	/* xxxx.xx1x */
#define AP_DISP_ENABLE		0x01	/* xxxx.xxx1 */
#define AP_DISP_DISABLE		0x00	/* xxxx.xxx0 */
#define AP_CREG1_NORMAL		(AP_SYNC_nRESET | AP_SYNC_ENABLE | AP_DISP_ENABLE)

#define AP_BIT_INV		(7<<1)
#define AP_BIT_HIBIT		(6<<1)
#define AP_BIT_ROP		(4<<1)
#define AP_BIT_RESET		(3<<1)
#define AP_BIT_SYNC		(1<<1)
#define AP_BIT_DISP		(0<<1)

#define AP_ON			1
#define AP_OFF			0

/* CREG 2 settings */
#define AP_DATA_1s		0x00	/* 00xx.xxxx */
#define AP_DATA_PIX		0x40	/* 01xx.xxxx */
#define AP_DATA_PLN		0xC0	/* 11xx.xxxx */

/* CREG 3 settings */
#define AP_RESET_CREG		0x80	/* 1000.0000 */

/* ROP's */
#define AP_ROP_SRC		0x3

/* ID Numbers */
#define AP_MONO_HIRES		0x09


/* Memory */

#define AP_MEM_BASE		(0xFA0000L)
#define AP_MEM_ALTERNATE	(0xA0000L)

#define AP_BANK_SIZE		(0x40000L)

/* banking disabled */
#define AP_BANK_BOTTOM		0
#define AP_BANK_TOP		0

#define AP_MAP_BASE		(AP_MEM_BASE)
#define AP_MAP_ALTERNATE	(AP_MEM_ALTERNATE)

#define AP_MAP_SIZE		(AP_BANK_SIZE)

/* 0 means banking disabled */
#define AP_SEGMENT_SIZE		0
#define AP_SEGMENT_SHIFT	0
#define AP_SEGMENT_MASK		0

#define AP_HDISPLAY		(1280)
#define AP_VDISPLAY		(1024)
#define AP_MAX_VIRTUAL_X	(1280)
#define AP_MAX_VIRTUAL_Y	(1024)
#define AP_SCAN_LINE_WIDTH	(2048)

#define apollo_Textmode		(1411)
#define apollo_Graphmode	(1412)

#define Word_Width		128
/* Kludge alert! - only for monochrome adaptors */
