xref: /csrg-svn/sys/i386/isa/if_apxreg.h (revision 63364)
150824Ssklower /*
2*63364Sbostic  * Copyright (c) 1982, 1990, 1993
3*63364Sbostic  *	The Regents of the University of California.  All rights reserved.
450824Ssklower  *
550824Ssklower  * %sccs.include.redist.c%
650824Ssklower  *
7*63364Sbostic  *	@(#)if_apxreg.h	8.1 (Berkeley) 06/11/93
850824Ssklower  */
950824Ssklower 
1050824Ssklower 
1152829Ssklower /*
1252829Ssklower  * SGS Thompson MK5205 structures and registers
1352829Ssklower  */
1450824Ssklower 
1550824Ssklower /*
1652829Ssklower  * Device Control Ports (Multiplexed CSR's)
1750824Ssklower  */
1850824Ssklower struct sgcp {
1952849Ssklower 	u_short	sgcp_rdp;
2052849Ssklower 	u_short	sgcp_rap;
2150824Ssklower };
2252829Ssklower 
2350824Ssklower /*
2450824Ssklower  * Operating Parameters for timers etc.
2550824Ssklower  * (Suitable for reseting by ioctl).
2650824Ssklower  */
2750824Ssklower struct sgop {
2852849Ssklower 	u_short	lsaddr;
2952849Ssklower 	u_short	rsaddr;
3050824Ssklower 	u_short	n1;
3150824Ssklower 	u_short	n2_scale;
3250824Ssklower 	u_short	t1;
3350824Ssklower 	u_short	t3;
3450824Ssklower 	u_short	tp;
3550824Ssklower };
3650824Ssklower 
3750824Ssklower /*
3852849Ssklower  * Common addressing element rife through chip
3952849Ssklower  */
4052849Ssklower struct sgae {
4152849Ssklower 	u_short	f_hi;
4252849Ssklower 	u_short	lo;
4352849Ssklower };
4452849Ssklower /*
4552829Ssklower  * Common format for tx/rx descriptors
4650824Ssklower  */
4750824Ssklower 
4850824Ssklower struct sgdx {
4952849Ssklower 	struct	sgae sgdx_ae;
5052849Ssklower #define		sgdx_flags sgdx_ae.f_hi
5152849Ssklower #define		sgdx_addr sgdx_ae.lo
5250824Ssklower 	short	sgdx_bcnt;
5352849Ssklower 	short	sgdx_mcnt;
5450824Ssklower };
5550824Ssklower 
5650824Ssklower /*
5752829Ssklower  * Interpretation of reported errors
5850824Ssklower  */
5950824Ssklower struct sger {
6050824Ssklower 	u_short	sger_bad;
6150824Ssklower 	u_short	sger_t1timo;
6250824Ssklower 	u_short	sger_frmr;
6350824Ssklower 	u_short	sger_txrej;
6450824Ssklower 	u_short	sger_rxrej;
6550824Ssklower 	u_short	sger_short;
6650824Ssklower };
6750824Ssklower 
6850824Ssklower /*
6952829Ssklower  * Status buffer, paired bytes hi order low order
7050824Ssklower  */
7150824Ssklower struct sgsb {
7250824Ssklower 	u_short	sgsb_vrvs;
7350824Ssklower 	u_short	sgsb_lsrs;
7452849Ssklower 	u_short	sgsb_phzva;
7550824Ssklower 	u_short	sgsb_hirxcnt;
7650824Ssklower 	u_short	sgsb_lorxcnt;
7750824Ssklower 	u_short	sgsb_hitxcnt;
7850824Ssklower 	u_short	sgsb_lotxcnt;
7950824Ssklower };
8050824Ssklower 
8150824Ssklower #define SGMTU 1032
8250824Ssklower #define SGRBUF 16
8350825Ssklower #define SGRBUF_LOG2 4
8450824Ssklower #define SG_RLEN (SGRBUF_LOG2 << 12)
8550824Ssklower #define SGTBUF 8
8650825Ssklower #define SGTBUF_LOG2 3
8750824Ssklower #define SG_TLEN (SGTBUF_LOG2 << 12)
8850824Ssklower 
8950824Ssklower /*
9050824Ssklower  * APC-PCX RAM
9150824Ssklower  */
9250824Ssklower 
9350824Ssklower struct apc_mem {
9450824Ssklower 	/* Initialization Block */
9550824Ssklower 	u_short	apc_mode;
9650824Ssklower 	struct	sgop apc_sgop;
9752849Ssklower 	struct	sgae apc_rxdd;
9852849Ssklower 	struct	sgae apc_txdd;
9950824Ssklower 	struct	sgdx apc_txtid;
10050824Ssklower 	struct	sgdx apc_rxtid;
10152849Ssklower 	struct	sgae apc_stdd;
10250824Ssklower 	struct	sger apc_sger;
10350824Ssklower 	struct	sgsb apc_sgsb;		/* Status Buffer */
10450824Ssklower 	struct	sgdx apc_rxmd[SGRBUF];	/* Receive Message Descriptors */
10550824Ssklower 	struct	sgdx apc_txmd[SGTBUF];	/* Transmit Message Descriptors */
10650824Ssklower 	char	apc_rbuf[SGRBUF][SGMTU]; /* Receive Message Buffers */
10750824Ssklower 	char	apc_tbuf[SGTBUF][SGMTU]; /* Transmit Message Buffers */
10850824Ssklower 	char	apc_rxidbuf[SGMTU];
10950824Ssklower 	char	apc_txidbuf[SGMTU];
11050824Ssklower };
11150824Ssklower /*
11250824Ssklower  * APC-PCX registers
11350824Ssklower  */
11450824Ssklower struct apc_reg {
11550825Ssklower 	struct	sgcp axr_sgcp[2];
11650824Ssklower 	u_char	arx_pad0[4];
11750824Ssklower 	u_char	axr_cnt0;
11850824Ssklower 	u_char	axr_cnt1;
11950824Ssklower 	u_char	axr_cnt2;
12050824Ssklower 	u_char	axr_ccr;
12150824Ssklower 	u_char	axr_mode;
12250824Ssklower 	u_char	axr_pad1;
12350824Ssklower 	u_char	axr_status;
12450824Ssklower 	u_char	axr_pad2;
12550824Ssklower 	u_char	axr_altmode;
12650824Ssklower 	u_char	axr_pad3[11];
12750824Ssklower };
12850824Ssklower 
12950824Ssklower /*
13050824Ssklower  * Hardware tweaking
13150824Ssklower  */
13250824Ssklower struct apc_modes {
13350824Ssklower 	struct	sgop apm_sgop;	/* tweak timers */
13450824Ssklower 	u_char	apm_txwin;	/* set parameter for transmit window */
13550824Ssklower 	u_char	apm_apxmode;
13650824Ssklower 	u_char	apm_apxaltmode;
13752849Ssklower 	u_char	apm_iftype;	/* someday indicate PPP vs X.25 */
13850824Ssklower };
13950824Ssklower 
14050824Ssklower #define	SIOCSIFMODE	_IOW('i', 127, struct apc_modes) /* set parameters */
14150824Ssklower 
14250824Ssklower /* TX RX descriptor bits */
14350824Ssklower #define SG_OWN 0x8000
14450824Ssklower #define SG_SLF 0x2000
14550824Ssklower #define SG_ELF 0x1000
14650824Ssklower #define	SG_TUI 0x800
14750824Ssklower 
14850824Ssklower /* CSR0 quantities */
14950824Ssklower #define SG_TDMD	0x8000
15050824Ssklower #define SG_STOPPED 0x4000
15150824Ssklower #define SG_DTX	0x2000
15250824Ssklower #define SG_DRX	0x1000
15350824Ssklower #define SG_TXON 0x800
15450824Ssklower #define SG_RXON 0x400
15550824Ssklower #define SG_INEA 0x200
15650824Ssklower #define SG_INTR 0x100
15750824Ssklower #define SG_MERR 0x80
15850824Ssklower #define SG_MISS 0x40
15950824Ssklower #define SG_ROR	0x20
16050824Ssklower #define SG_TUR	0x10
16150824Ssklower #define SG_PINT 0x8
16250824Ssklower #define SG_TINT 0x4
16350824Ssklower #define SG_RINT 0x2
16450824Ssklower 
16550824Ssklower /* CSR1 quantities */
16650824Ssklower #define SG_UAV	0x4000
16750824Ssklower #define SG_PAV	0x40
16850824Ssklower #define SG_STOP	0
16952849Ssklower #define SG_INIT	(2 << 8)
17050824Ssklower #define SG_TRANS (3 << 8)
17150824Ssklower #define SG_STAT	(4 << 8)
17250824Ssklower 
17350824Ssklower #define SG_PROM	0x400
17450824Ssklower #define SG_UIE	0x200
17550824Ssklower #define SG_BSWAP 0x20
176