xref: /csrg-svn/sys/hp/dev/dcareg.h (revision 53923)
141480Smckusick /*
241480Smckusick  * Copyright (c) 1982, 1986, 1990 Regents of the University of California.
341480Smckusick  * All rights reserved.
441480Smckusick  *
541480Smckusick  * %sccs.include.redist.c%
641480Smckusick  *
7*53923Shibler  *	@(#)dcareg.h	7.4 (Berkeley) 06/05/92
841480Smckusick  */
941480Smckusick 
10*53923Shibler #ifdef KERNEL
11*53923Shibler #include "hp/dev/iotypes.h"	/* XXX */
12*53923Shibler #else
13*53923Shibler #include <hp/dev/iotypes.h>	/* XXX */
14*53923Shibler #endif
15*53923Shibler 
16*53923Shibler #ifdef hp700
1741480Smckusick struct dcadevice {
18*53923Shibler 	vu_char	dca_reset;
19*53923Shibler 	vu_char dca_pad[0x800-1];
20*53923Shibler 	vu_char	dca_data;			/* receive buf or xmit hold */
21*53923Shibler 	vu_char	dca_ier;			/* interrupt enable */
22*53923Shibler 	vu_char	dca_iir;			/* (RO) interrupt identify */
23*53923Shibler #define		dca_fifo	dca_iir		/* (WO) FIFO control */
24*53923Shibler 	vu_char	dca_cfcr;			/* line control */
25*53923Shibler 	vu_char	dca_mcr;			/* modem control */
26*53923Shibler 	vu_char	dca_lsr;			/* line status */
27*53923Shibler 	vu_char	dca_msr;			/* modem status */
28*53923Shibler 	vu_char	dca_scr;			/* scratch pad */
29*53923Shibler };
30*53923Shibler #else
31*53923Shibler struct dcadevice {
32*53923Shibler 	/* card registers */
3341480Smckusick 	u_char	dca_pad0;
34*53923Shibler 	vu_char	dca_id;				/* 0x01 (read) */
35*53923Shibler #define		dca_reset	dca_id		/* 0x01 (write) */
36*53923Shibler 	u_char	dca_pad1;
37*53923Shibler 	vu_char	dca_ic;				/* 0x03 */
3841480Smckusick 	u_char	dca_pad2;
39*53923Shibler 	vu_char	dca_ocbrc;			/* 0x05 */
4041480Smckusick 	u_char	dca_pad3;
41*53923Shibler 	vu_char	dca_lcsm;			/* 0x07 */
42*53923Shibler 	u_char	dca_pad4[8];
43*53923Shibler 	/* chip registers */
44*53923Shibler 	u_char	dca_pad5;
45*53923Shibler 	vu_char	dca_data;			/* 0x11 */
46*53923Shibler 	u_char	dca_pad6;
47*53923Shibler 	vu_char	dca_ier;			/* 0x13 */
48*53923Shibler 	u_char	dca_pad7;
49*53923Shibler 	vu_char	dca_iir;			/* 0x15 (read) */
50*53923Shibler #define		dca_fifo	dca_iir		/* 0x15 (write) */
51*53923Shibler 	u_char	dca_pad8;
52*53923Shibler 	vu_char	dca_cfcr;			/* 0x17 */
53*53923Shibler 	u_char	dca_pad9;
54*53923Shibler 	vu_char	dca_mcr;			/* 0x19 */
55*53923Shibler 	u_char	dca_padA;
56*53923Shibler 	vu_char	dca_lsr;			/* 0x1B */
57*53923Shibler 	u_char	dca_padB;
58*53923Shibler 	vu_char	dca_msr;			/* 0x1D */
5941480Smckusick };
60*53923Shibler #endif
6141480Smckusick 
62*53923Shibler /* interface reset/id (300 only) */
6341480Smckusick #define	DCAID0		0x02
6441480Smckusick #define DCAREMID0	0x82
6541480Smckusick #define	DCAID1		0x42
6641480Smckusick #define DCAREMID1	0xC2
6741480Smckusick 
68*53923Shibler /* interrupt control (300 only) */
6941480Smckusick #define	DCAIPL(x)	((((x) >> 4) & 3) + 3)
7041480Smckusick #define	IC_IR		0x40
7141480Smckusick #define	IC_IE		0x80
7241480Smckusick 
73*53923Shibler /*
74*53923Shibler  * 16 bit baud rate divisor (lower byte in dca_data, upper in dca_ier)
75*53923Shibler  * NB: This constant is for a 7.3728 clock frequency. The 300 clock
76*53923Shibler  *     frequency is 2.4576, giving a constant of 153600.
77*53923Shibler  */
78*53923Shibler #ifdef hp300
7941480Smckusick #define	DCABRD(x)	(153600 / (x))
80*53923Shibler #endif
81*53923Shibler #ifdef hp700
82*53923Shibler #define	DCABRD(x)	(460800 / (x))
83*53923Shibler #endif
8441480Smckusick 
8541480Smckusick /* interrupt enable register */
8641480Smckusick #define	IER_ERXRDY	0x1
8741480Smckusick #define	IER_ETXRDY	0x2
8841480Smckusick #define	IER_ERLS	0x4
8941480Smckusick #define	IER_EMSC	0x8
9041480Smckusick 
9141480Smckusick /* interrupt identification register */
9249308Shibler #define	IIR_IMASK	0xf
9349308Shibler #define	IIR_RXTOUT	0xc
9449308Shibler #define	IIR_RLS		0x6
9549308Shibler #define	IIR_RXRDY	0x4
9649308Shibler #define	IIR_TXRDY	0x2
9741480Smckusick #define	IIR_NOPEND	0x1
9849308Shibler #define	IIR_MLSC	0x0
9949308Shibler #define	IIR_FIFO_MASK	0xc0	/* set if FIFOs are enabled */
10041480Smckusick 
10149308Shibler /* fifo control register */
10249308Shibler #define	FIFO_ENABLE	0x01
10349308Shibler #define	FIFO_RCV_RST	0x02
10449308Shibler #define	FIFO_XMT_RST	0x04
10549308Shibler #define	FIFO_DMA_MODE	0x08
10649308Shibler #define	FIFO_TRIGGER_1	0x00
10749308Shibler #define	FIFO_TRIGGER_4	0x40
10849308Shibler #define	FIFO_TRIGGER_8	0x80
10949308Shibler #define	FIFO_TRIGGER_14	0xc0
11049308Shibler 
11141480Smckusick /* character format control register */
11241480Smckusick #define	CFCR_DLAB	0x80
11341480Smckusick #define	CFCR_SBREAK	0x40
11441480Smckusick #define	CFCR_PZERO	0x30
11541480Smckusick #define	CFCR_PONE	0x20
11641480Smckusick #define	CFCR_PEVEN	0x10
11741480Smckusick #define	CFCR_PODD	0x00
11841480Smckusick #define	CFCR_PENAB	0x08
11941480Smckusick #define	CFCR_STOPB	0x04
12041480Smckusick #define	CFCR_8BITS	0x03
12141480Smckusick #define	CFCR_7BITS	0x02
12241480Smckusick #define	CFCR_6BITS	0x01
12341480Smckusick #define	CFCR_5BITS	0x00
12441480Smckusick 
12541480Smckusick /* modem control register */
12641480Smckusick #define	MCR_LOOPBACK	0x10
127*53923Shibler #define	MCR_IEN		0x08
12841480Smckusick #define	MCR_DRS		0x04
12941480Smckusick #define	MCR_RTS		0x02
13041480Smckusick #define	MCR_DTR		0x01
13141480Smckusick 
13241480Smckusick /* line status register */
13349308Shibler #define	LSR_RCV_FIFO	0x80
13441480Smckusick #define	LSR_TSRE	0x40
13541480Smckusick #define	LSR_TXRDY	0x20
13641480Smckusick #define	LSR_BI		0x10
13741480Smckusick #define	LSR_FE		0x08
13841480Smckusick #define	LSR_PE		0x04
13941480Smckusick #define	LSR_OE		0x02
14041480Smckusick #define	LSR_RXRDY	0x01
14149308Shibler #define	LSR_RCV_MASK	0x1f
14241480Smckusick 
14341480Smckusick /* modem status register */
14441480Smckusick #define	MSR_DCD		0x80
14541480Smckusick #define	MSR_RI		0x40
14641480Smckusick #define	MSR_DSR		0x20
14741480Smckusick #define	MSR_CTS		0x10
14844318Shibler #define	MSR_DDCD	0x08
14941480Smckusick #define	MSR_TERI	0x04
15041480Smckusick #define	MSR_DDSR	0x02
15144318Shibler #define	MSR_DCTS	0x01
15241480Smckusick 
153*53923Shibler #ifdef hp300
154*53923Shibler /* WARNING: Serial console is assumed to be at SC9 */
15549308Shibler #define CONSCODE	(9)
156*53923Shibler #endif
157*53923Shibler #ifdef hp700
158*53923Shibler /* hardwired port addresses */
159*53923Shibler #define PORT1		((struct dcadevice *)CORE_RS232_1)
160*53923Shibler #define PORT2		((struct dcadevice *)CORE_RS232_2)
161*53923Shibler #define CONPORT		PORT1
162*53923Shibler #endif
16349308Shibler #define CONUNIT		(0)
164