xref: /csrg-svn/sys/luna68k/dev/sioreg.h (revision 63192)
154009Sfujita /*
254009Sfujita  * Copyright (c) 1992 OMRON Corporation.
3*63192Sbostic  * Copyright (c) 1992, 1993
4*63192Sbostic  *	The Regents of the University of California.  All rights reserved.
554009Sfujita  *
654009Sfujita  * This code is derived from software contributed to Berkeley by
754009Sfujita  * OMRON Corporation.
854009Sfujita  *
954009Sfujita  * %sccs.include.redist.c%
1054009Sfujita  *
11*63192Sbostic  *	@(#)sioreg.h	8.1 (Berkeley) 06/10/93
1254009Sfujita  */
1354009Sfujita 
1454009Sfujita /*
1554009Sfujita  * sioreg.h -- NEC uPD7201A Hardware Discription
1654009Sfujita  * by A.Fujita, NOV-26-1991
1754009Sfujita  */
1854009Sfujita 
1954009Sfujita struct siodevice {
2054009Sfujita 	volatile u_char sio_data;
2154009Sfujita 	u_char sio_pad1;
2254009Sfujita 	volatile u_char sio_cmd;
2354009Sfujita 	u_char sio_pad2;
2454009Sfujita };
2554009Sfujita 
2654009Sfujita #define sio_stat sio_cmd
2754009Sfujita 
2854009Sfujita #define splsio			spl6
2954009Sfujita 
3054009Sfujita 
3154009Sfujita #define REG(u, r)	( (u << 4) | r )
3254009Sfujita #define CHANNEL(r)	( r >> 4 )
3354009Sfujita #define REGNO(r)	( r & 0x07 )
3454009Sfujita #define isStatusReg(r)	( r & 0x08 )
3554009Sfujita 
3654009Sfujita #define WR0		0x00
3754009Sfujita #define WR1		0x01
3854009Sfujita #define WR2		0x02
3954009Sfujita #define WR3		0x03
4054009Sfujita #define WR4		0x04
4154009Sfujita #define WR5		0x05
4254009Sfujita #define WR6		0x06
4354009Sfujita #define WR7		0x07
4454009Sfujita 
4554009Sfujita #define RR0		0x08
4654009Sfujita #define RR1		0x09
4754009Sfujita #define RR2		0x0A
4854009Sfujita #define RR3		0x0B
4954009Sfujita #define RR4		0x0C
5054009Sfujita 
5154009Sfujita #define RR2A		0x0A
5254009Sfujita #define RR2B		0x1A
5354009Sfujita 
5454009Sfujita #define WR0_NOP		0x00	/* No Operation */
5554009Sfujita #define WR0_SNDABRT	0x08	/* Send Abort (HDLC) */
5654009Sfujita #define WR0_RSTINT	0x10	/* Reset External/Status Interrupt */
5754009Sfujita #define WR0_CHANRST	0x18	/* Channel Reset */
5854009Sfujita #define WR0_INTNXT	0x20	/* Enable Interrupt on Next Receive Character */
5954009Sfujita #define WR0_RSTPEND	0x28	/* Reset Transmitter Interrput/DMA Pending */
6054009Sfujita #define WR0_ERRRST	0x30	/* Error Reset */
6154009Sfujita #define WR0_ENDINTR	0x38	/* End of Interrupt */
6254009Sfujita 
6354009Sfujita #define WR1_ESENBL	0x01	/* External/Status Interrupt Enable */
6454009Sfujita #define WR1_TXENBL	0x02	/* Tx Interrupt/DMA Enable */
6554009Sfujita #define WR1_STATVEC	0x04	/* Status Affects Vector (Only Chan-B) */
6654009Sfujita #define WR1_RXDSEBL	0x00	/* Rx Interrupt/DMA Disable */
6754009Sfujita #define WR1_RXFIRST	0x08	/* Interrupt only First Character Received */
6854009Sfujita #define WR1_RXALLS	0x10	/* Interrupt Every Characters Received (with Special Char.) */
6954009Sfujita #define WR1_RXALL	0x18	/* Interrupt Every Characters Received (without Special Char.) */
7054009Sfujita 
7154009Sfujita #define WR2_INTR_0	0x00	/* Interrupt Priority: RxA TxA RxB TxB E/SA E/SA */
7254009Sfujita #define WR2_INTR_1	0x04	/* Interrupt Priority: RxA RxB TxA TxB E/SA E/SA */
7354009Sfujita #define WR2_VEC85_1	0x00	/* 8085 Vectored Mode - 1 */
7454009Sfujita #define WR2_VEC85_2	0x08	/* 8085 Vectored Mode - 2 */
7554009Sfujita #define WR2_VEC86	0x10	/* 8086 Vectored */
7654009Sfujita #define WR2_VEC85_3	0x18	/* 8085 Vectored Mode - 3 */
7754009Sfujita 
7854009Sfujita #define WR3_RXENBL	0x01	/* Rx Enable */
7954009Sfujita #define WR3_RXCRC	0x08	/* Rx CRC Check */
8054009Sfujita #define WR3_AUTOEBL	0x20	/* Auto Enable (flow control for MODEM) */
8154009Sfujita #define WR3_RX5BIT	0x00	/* Rx Bits/Character: 5 Bits */
8254009Sfujita #define WR3_RX7BIT	0x40	/* Rx Bits/Character: 7 Bits */
8354009Sfujita #define WR3_RX6BIT	0x80	/* Rx Bits/Character: 6 Bits */
8454009Sfujita #define WR3_RX8BIT	0xc0	/* Rx Bits/Character: 8 Bits */
8554009Sfujita 
8654009Sfujita #define WR4_NPARITY	0x00	/* No Parity */
8756873Sakito #define WR4_PARENAB	0x01	/* Parity Enable */
8854009Sfujita #define WR4_OPARITY	0x01	/* Parity Odd */
8954009Sfujita #define WR4_EPARITY	0x02	/* Parity Even */
9054009Sfujita #define WR4_STOP1	0x04	/* Stop  Bits (1bit) */
9154009Sfujita #define WR4_STOP15	0x08	/* Stop  Bits (1.5bit) */
9254009Sfujita #define WR4_STOP2	0x0c	/* Stop  Bits (2bit) */
9354009Sfujita #define WR4_BAUD96	0x40	/* Clock Rate (9600 BAUD) */
9454009Sfujita #define WR4_BAUD48	0x80	/* Clock Rate (4800 BAUD) */
9554009Sfujita #define WR4_BAUD24	0xc0	/* Clock Rate (2400 BAUD) */
9654009Sfujita 
9754009Sfujita #define WR5_TXCRC	0x01	/* Tx CRC Check */
9856873Sakito #define WR5_RTS		0x02	/* Request To Send     [RTS] */
9954009Sfujita #define WR5_TXENBL	0x08	/* Transmit Enable */
10056873Sakito #define WR5_BREAK	0x10	/* Send Break          [BRK] */
10154009Sfujita #define WR5_TX5BIT	0x00	/* Tx Bits/Character: 5 Bits */
10254009Sfujita #define WR5_TX7BIT	0x20	/* Tx Bits/Character: 7 Bits */
10354009Sfujita #define WR5_TX6BIT	0x40	/* Tx Bits/Character: 6 Bits */
10454009Sfujita #define WR5_TX8BIT	0x60	/* Tx Bits/Character: 8 Bits */
10556873Sakito #define WR5_DTR		0x80	/* Data Terminal Ready [DTR] */
10654009Sfujita 
10754009Sfujita #define RR0_RXAVAIL	0x01	/* Rx Character Available */
10854009Sfujita #define RR0_INTRPEND	0x02	/* Interrupt Pending (Channel-A Only) */
10954009Sfujita #define RR0_TXEMPTY	0x04	/* Tx Buffer Empty */
11056873Sakito #define RR0_DCD		0x08	/* Data Carrier Detect [DCD] */
11156873Sakito #define RR0_SYNC	0x10	/* Synchronization */
11256873Sakito #define RR0_CTS		0x20	/* Clear To Send       [CTS] */
11356873Sakito #define RR0_BREAK	0x80	/* Break Detected      [BRK] */
11454009Sfujita 
11554009Sfujita #define RR1_PARITY	0x10	/* Parity Error */
11654009Sfujita #define RR1_OVERRUN	0x20	/* Data Over Run */
11754009Sfujita #define RR1_FRAMING	0x40	/* Framing Error */
11854009Sfujita 
11954009Sfujita #define RR_RXRDY	0x0100	/* Rx Character Available */
12054009Sfujita #define RR_INTRPEND	0x0200	/* Interrupt Pending (Channel-A Only) */
12154009Sfujita #define RR_TXRDY	0x0400	/* Tx Buffer Empty */
12256873Sakito #define RR_DCD		0x0800	/* Data Carrier Detect [DCD] */
12356873Sakito #define RR_SYNC		0x1000	/* Synchronization */
12456873Sakito #define RR_CTS		0x2000	/* Clear To Send       [CTS] */
12554009Sfujita #define RR_BREAK	0x8000	/* Break Detected */
12654009Sfujita #define RR_PARITY	0x0010	/* Parity Error */
12754009Sfujita #define RR_OVERRUN	0x0020	/* Data Over Run */
12854009Sfujita #define RR_FRAMING	0x0040	/* Framing Error */
12956873Sakito 
13056873Sakito 
13156873Sakito #define SIO_HARDADDR	0x51000000			/* build-in serial-interface address */
13259649Sakito 
13359649Sakito #define	NPORT		2
13459649Sakito #define	SIO_PORT	0
13559649Sakito #define	BMC_PORT	1
136