xref: /csrg-svn/sys/hp/dev/dcareg.h (revision 63146)
141480Smckusick /*
2*63146Sbostic  * Copyright (c) 1982, 1986, 1990, 1993
3*63146Sbostic  *	The Regents of the University of California.  All rights reserved.
441480Smckusick  *
541480Smckusick  * %sccs.include.redist.c%
641480Smckusick  *
7*63146Sbostic  *	@(#)dcareg.h	8.1 (Berkeley) 06/10/93
841480Smckusick  */
941480Smckusick 
1056504Sbostic #include <hp/dev/iotypes.h>			/* XXX */
1153923Shibler 
1253923Shibler #ifdef hp700
1341480Smckusick struct dcadevice {
1453923Shibler 	vu_char	dca_reset;
1553923Shibler 	vu_char dca_pad[0x800-1];
1653923Shibler 	vu_char	dca_data;			/* receive buf or xmit hold */
1753923Shibler 	vu_char	dca_ier;			/* interrupt enable */
1853923Shibler 	vu_char	dca_iir;			/* (RO) interrupt identify */
1953923Shibler #define		dca_fifo	dca_iir		/* (WO) FIFO control */
2053923Shibler 	vu_char	dca_cfcr;			/* line control */
2153923Shibler 	vu_char	dca_mcr;			/* modem control */
2253923Shibler 	vu_char	dca_lsr;			/* line status */
2353923Shibler 	vu_char	dca_msr;			/* modem status */
2453923Shibler 	vu_char	dca_scr;			/* scratch pad */
2553923Shibler };
2653923Shibler #else
2753923Shibler struct dcadevice {
2853923Shibler 	/* card registers */
2941480Smckusick 	u_char	dca_pad0;
3053923Shibler 	vu_char	dca_id;				/* 0x01 (read) */
3153923Shibler #define		dca_reset	dca_id		/* 0x01 (write) */
3253923Shibler 	u_char	dca_pad1;
3353923Shibler 	vu_char	dca_ic;				/* 0x03 */
3441480Smckusick 	u_char	dca_pad2;
3553923Shibler 	vu_char	dca_ocbrc;			/* 0x05 */
3641480Smckusick 	u_char	dca_pad3;
3753923Shibler 	vu_char	dca_lcsm;			/* 0x07 */
3853923Shibler 	u_char	dca_pad4[8];
3953923Shibler 	/* chip registers */
4053923Shibler 	u_char	dca_pad5;
4153923Shibler 	vu_char	dca_data;			/* 0x11 */
4253923Shibler 	u_char	dca_pad6;
4353923Shibler 	vu_char	dca_ier;			/* 0x13 */
4453923Shibler 	u_char	dca_pad7;
4553923Shibler 	vu_char	dca_iir;			/* 0x15 (read) */
4653923Shibler #define		dca_fifo	dca_iir		/* 0x15 (write) */
4753923Shibler 	u_char	dca_pad8;
4853923Shibler 	vu_char	dca_cfcr;			/* 0x17 */
4953923Shibler 	u_char	dca_pad9;
5053923Shibler 	vu_char	dca_mcr;			/* 0x19 */
5153923Shibler 	u_char	dca_padA;
5253923Shibler 	vu_char	dca_lsr;			/* 0x1B */
5353923Shibler 	u_char	dca_padB;
5453923Shibler 	vu_char	dca_msr;			/* 0x1D */
5541480Smckusick };
5653923Shibler #endif
5741480Smckusick 
5853923Shibler /* interface reset/id (300 only) */
5941480Smckusick #define	DCAID0		0x02
6041480Smckusick #define DCAREMID0	0x82
6141480Smckusick #define	DCAID1		0x42
6241480Smckusick #define DCAREMID1	0xC2
6341480Smckusick 
6453923Shibler /* interrupt control (300 only) */
6541480Smckusick #define	DCAIPL(x)	((((x) >> 4) & 3) + 3)
6641480Smckusick #define	IC_IR		0x40
6741480Smckusick #define	IC_IE		0x80
6841480Smckusick 
6953923Shibler /*
7053923Shibler  * 16 bit baud rate divisor (lower byte in dca_data, upper in dca_ier)
7153923Shibler  * NB: This constant is for a 7.3728 clock frequency. The 300 clock
7253923Shibler  *     frequency is 2.4576, giving a constant of 153600.
7353923Shibler  */
7453923Shibler #ifdef hp300
7541480Smckusick #define	DCABRD(x)	(153600 / (x))
7653923Shibler #endif
7753923Shibler #ifdef hp700
7853923Shibler #define	DCABRD(x)	(460800 / (x))
7953923Shibler #endif
8041480Smckusick 
8141480Smckusick /* interrupt enable register */
8241480Smckusick #define	IER_ERXRDY	0x1
8341480Smckusick #define	IER_ETXRDY	0x2
8441480Smckusick #define	IER_ERLS	0x4
8541480Smckusick #define	IER_EMSC	0x8
8641480Smckusick 
8741480Smckusick /* interrupt identification register */
8849308Shibler #define	IIR_IMASK	0xf
8949308Shibler #define	IIR_RXTOUT	0xc
9049308Shibler #define	IIR_RLS		0x6
9149308Shibler #define	IIR_RXRDY	0x4
9249308Shibler #define	IIR_TXRDY	0x2
9341480Smckusick #define	IIR_NOPEND	0x1
9449308Shibler #define	IIR_MLSC	0x0
9549308Shibler #define	IIR_FIFO_MASK	0xc0	/* set if FIFOs are enabled */
9641480Smckusick 
9749308Shibler /* fifo control register */
9849308Shibler #define	FIFO_ENABLE	0x01
9949308Shibler #define	FIFO_RCV_RST	0x02
10049308Shibler #define	FIFO_XMT_RST	0x04
10149308Shibler #define	FIFO_DMA_MODE	0x08
10249308Shibler #define	FIFO_TRIGGER_1	0x00
10349308Shibler #define	FIFO_TRIGGER_4	0x40
10449308Shibler #define	FIFO_TRIGGER_8	0x80
10549308Shibler #define	FIFO_TRIGGER_14	0xc0
10649308Shibler 
10741480Smckusick /* character format control register */
10841480Smckusick #define	CFCR_DLAB	0x80
10941480Smckusick #define	CFCR_SBREAK	0x40
11041480Smckusick #define	CFCR_PZERO	0x30
11141480Smckusick #define	CFCR_PONE	0x20
11241480Smckusick #define	CFCR_PEVEN	0x10
11341480Smckusick #define	CFCR_PODD	0x00
11441480Smckusick #define	CFCR_PENAB	0x08
11541480Smckusick #define	CFCR_STOPB	0x04
11641480Smckusick #define	CFCR_8BITS	0x03
11741480Smckusick #define	CFCR_7BITS	0x02
11841480Smckusick #define	CFCR_6BITS	0x01
11941480Smckusick #define	CFCR_5BITS	0x00
12041480Smckusick 
12141480Smckusick /* modem control register */
12241480Smckusick #define	MCR_LOOPBACK	0x10
12353923Shibler #define	MCR_IEN		0x08
12441480Smckusick #define	MCR_DRS		0x04
12541480Smckusick #define	MCR_RTS		0x02
12641480Smckusick #define	MCR_DTR		0x01
12741480Smckusick 
12841480Smckusick /* line status register */
12949308Shibler #define	LSR_RCV_FIFO	0x80
13041480Smckusick #define	LSR_TSRE	0x40
13141480Smckusick #define	LSR_TXRDY	0x20
13241480Smckusick #define	LSR_BI		0x10
13341480Smckusick #define	LSR_FE		0x08
13441480Smckusick #define	LSR_PE		0x04
13541480Smckusick #define	LSR_OE		0x02
13641480Smckusick #define	LSR_RXRDY	0x01
13749308Shibler #define	LSR_RCV_MASK	0x1f
13841480Smckusick 
13941480Smckusick /* modem status register */
14041480Smckusick #define	MSR_DCD		0x80
14141480Smckusick #define	MSR_RI		0x40
14241480Smckusick #define	MSR_DSR		0x20
14341480Smckusick #define	MSR_CTS		0x10
14444318Shibler #define	MSR_DDCD	0x08
14541480Smckusick #define	MSR_TERI	0x04
14641480Smckusick #define	MSR_DDSR	0x02
14744318Shibler #define	MSR_DCTS	0x01
14841480Smckusick 
14953923Shibler #ifdef hp300
15053923Shibler /* WARNING: Serial console is assumed to be at SC9 */
15149308Shibler #define CONSCODE	(9)
15253923Shibler #endif
15353923Shibler #ifdef hp700
15453923Shibler /* hardwired port addresses */
15553923Shibler #define PORT1		((struct dcadevice *)CORE_RS232_1)
15653923Shibler #define PORT2		((struct dcadevice *)CORE_RS232_2)
15753923Shibler #define CONPORT		PORT1
15853923Shibler #endif
15949308Shibler #define CONUNIT		(0)
160