xref: /csrg-svn/sys/hp/dev/dcareg.h (revision 49308)
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*49308Shibler  *	@(#)dcareg.h	7.3 (Berkeley) 05/07/91
841480Smckusick  */
941480Smckusick 
1041480Smckusick struct dcadevice {
1141480Smckusick 	u_char	dca_pad0;
1241480Smckusick 	volatile u_char	dca_irid;
1341480Smckusick 	volatile short	dca_ic;
1441480Smckusick 	volatile short	dca_ocbrc;
1541480Smckusick 	volatile short	dca_lcsm;
1641480Smckusick 	short	dca_pad1[4];
1741480Smckusick 	u_char	dca_pad2;
1841480Smckusick 	volatile u_char	dca_data;
1941480Smckusick 	volatile short	dca_ier;
2044318Shibler 	u_char	dca_pad4;
21*49308Shibler 	volatile u_char	dca_iir;			/* read-only */
22*49308Shibler #define			dca_fifo	dca_iir		/* write-only */
2341480Smckusick 	volatile short	dca_cfcr;
2441480Smckusick 	volatile short	dca_mcr;
2541480Smckusick 	volatile short	dca_lsr;
2641480Smckusick 	u_char	dca_pad3;
2741480Smckusick 	volatile u_char	dca_msr;
2841480Smckusick };
2941480Smckusick 
3041480Smckusick /* interface reset/id */
3141480Smckusick #define	DCAID0		0x02
3241480Smckusick #define DCAREMID0	0x82
3341480Smckusick #define	DCAID1		0x42
3441480Smckusick #define DCAREMID1	0xC2
3541480Smckusick 
3641480Smckusick /* interrupt control */
3741480Smckusick #define	DCAIPL(x)	((((x) >> 4) & 3) + 3)
3841480Smckusick #define	IC_IR		0x40
3941480Smckusick #define	IC_IE		0x80
4041480Smckusick 
4141480Smckusick /* 16 bit baud rate divisor (lower byte in dca_data, upper in dca_ier) */
4241480Smckusick #define	DCABRD(x)	(153600 / (x))
4341480Smckusick 
4441480Smckusick /* interrupt enable register */
4541480Smckusick #define	IER_ERXRDY	0x1
4641480Smckusick #define	IER_ETXRDY	0x2
4741480Smckusick #define	IER_ERLS	0x4
4841480Smckusick #define	IER_EMSC	0x8
4941480Smckusick 
5041480Smckusick /* interrupt identification register */
51*49308Shibler #define	IIR_IMASK	0xf
52*49308Shibler #define	IIR_RXTOUT	0xc
53*49308Shibler #define	IIR_RLS		0x6
54*49308Shibler #define	IIR_RXRDY	0x4
55*49308Shibler #define	IIR_TXRDY	0x2
5641480Smckusick #define	IIR_NOPEND	0x1
57*49308Shibler #define	IIR_MLSC	0x0
58*49308Shibler #define	IIR_FIFO_MASK	0xc0	/* set if FIFOs are enabled */
5941480Smckusick 
60*49308Shibler /* fifo control register */
61*49308Shibler #define	FIFO_ENABLE	0x01
62*49308Shibler #define	FIFO_RCV_RST	0x02
63*49308Shibler #define	FIFO_XMT_RST	0x04
64*49308Shibler #define	FIFO_DMA_MODE	0x08
65*49308Shibler #define	FIFO_TRIGGER_1	0x00
66*49308Shibler #define	FIFO_TRIGGER_4	0x40
67*49308Shibler #define	FIFO_TRIGGER_8	0x80
68*49308Shibler #define	FIFO_TRIGGER_14	0xc0
69*49308Shibler 
7041480Smckusick /* character format control register */
7141480Smckusick #define	CFCR_DLAB	0x80
7241480Smckusick #define	CFCR_SBREAK	0x40
7341480Smckusick #define	CFCR_PZERO	0x30
7441480Smckusick #define	CFCR_PONE	0x20
7541480Smckusick #define	CFCR_PEVEN	0x10
7641480Smckusick #define	CFCR_PODD	0x00
7741480Smckusick #define	CFCR_PENAB	0x08
7841480Smckusick #define	CFCR_STOPB	0x04
7941480Smckusick #define	CFCR_8BITS	0x03
8041480Smckusick #define	CFCR_7BITS	0x02
8141480Smckusick #define	CFCR_6BITS	0x01
8241480Smckusick #define	CFCR_5BITS	0x00
8341480Smckusick 
8441480Smckusick /* modem control register */
8541480Smckusick #define	MCR_LOOPBACK	0x10
8641480Smckusick #define	MCR_SRTS	0x08
8741480Smckusick #define	MCR_DRS		0x04
8841480Smckusick #define	MCR_RTS		0x02
8941480Smckusick #define	MCR_DTR		0x01
9041480Smckusick 
9141480Smckusick /* line status register */
92*49308Shibler #define	LSR_RCV_FIFO	0x80
9341480Smckusick #define	LSR_TSRE	0x40
9441480Smckusick #define	LSR_TXRDY	0x20
9541480Smckusick #define	LSR_BI		0x10
9641480Smckusick #define	LSR_FE		0x08
9741480Smckusick #define	LSR_PE		0x04
9841480Smckusick #define	LSR_OE		0x02
9941480Smckusick #define	LSR_RXRDY	0x01
100*49308Shibler #define	LSR_RCV_MASK	0x1f
10141480Smckusick 
10241480Smckusick /* modem status register */
10341480Smckusick #define	MSR_DCD		0x80
10441480Smckusick #define	MSR_RI		0x40
10541480Smckusick #define	MSR_DSR		0x20
10641480Smckusick #define	MSR_CTS		0x10
10744318Shibler #define	MSR_DDCD	0x08
10841480Smckusick #define	MSR_TERI	0x04
10941480Smckusick #define	MSR_DDSR	0x02
11044318Shibler #define	MSR_DCTS	0x01
11141480Smckusick 
11241480Smckusick /*
11341480Smckusick  * WARNING: Serial console is assumed to be at SC9
11441480Smckusick  * and CONUNIT must be 0.
11541480Smckusick  */
116*49308Shibler #define CONSCODE	(9)
117*49308Shibler #define CONUNIT		(0)
118