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