xref: /csrg-svn/sys/i386/isa/ic/ds8390.h (revision 63365)
149600Swilliam /*-
2*63365Sbostic  * Copyright (c) 1991, 1993
3*63365Sbostic  *	The Regents of the University of California.  All rights reserved.
449600Swilliam  *
549600Swilliam  * %sccs.include.redist.c%
649600Swilliam  *
7*63365Sbostic  *	@(#)ds8390.h	8.1 (Berkeley) 06/11/93
849600Swilliam  */
949600Swilliam 
1049600Swilliam /*
1149600Swilliam  * Nominal Semidestructor DS8390 Ethernet Chip
1249600Swilliam  * Register and bit definitions
1349600Swilliam  */
1449600Swilliam 
1549600Swilliam /*
1649600Swilliam  * Page register offset values
1749600Swilliam  */
1849600Swilliam #define ds_cmd		0x00		/* Command register: 		*/
1949600Swilliam #define  DSCM_STOP	 0x01		/*	Stop controller		*/
2049600Swilliam #define  DSCM_START	 0x02		/*	Start controller	*/
2149600Swilliam #define  DSCM_TRANS	 0x04		/*	Transmit packet		*/
2249600Swilliam #define  DSCM_RREAD	 0x08		/*	Remote read 		*/
2349600Swilliam #define  DSCM_RWRITE	 0x10		/*	Remote write 		*/
2449600Swilliam #define  DSCM_NODMA	 0x20		/*	No Remote DMA present	*/
2549600Swilliam #define  DSCM_PG0	 0x00		/*	Select Page 0		*/
2649600Swilliam #define  DSCM_PG1	 0x40		/*	Select Page 1		*/
2749600Swilliam #define  DSCM_PG2	 0x80		/*	Select Page 2?		*/
2849600Swilliam 
2949600Swilliam #define ds0_pstart	0x01		/* Page Start register		*/
3049600Swilliam #define ds0_pstop	0x02		/* Page Stop register		*/
3149600Swilliam #define ds0_bnry	0x03		/* Boundary Pointer		*/
3249600Swilliam 
3349600Swilliam #define ds0_tsr		0x04		/* Transmit Status (read-only)	*/
3449600Swilliam #define	 DSTS_PTX	 0x01		/*  Successful packet transmit  */
3549600Swilliam #define	 DSTS_COLL	 0x04		/*  Packet transmit w/ collision*/
3649600Swilliam #define	 DSTS_COLL16	 0x04		/*  Packet had >16 collisions & fail */
3749600Swilliam #define	 DSTS_UND	 0x20		/*  FIFO Underrun on transmission*/
3849600Swilliam 
3949600Swilliam #define ds0_tpsr	ds0_tsr		/* Transmit Page (write-only)	*/
4049600Swilliam #define ds0_tbcr0	0x05		/* Transmit Byte count, low  WO	*/
4149600Swilliam #define ds0_tbcr1	0x06		/* Transmit Byte count, high WO	*/
4249600Swilliam 
4349600Swilliam #define ds0_isr		0x07		/* Interrupt status register	*/
4449600Swilliam #define	 DSIS_RX	 0x01		/*  Successful packet reception */
4549600Swilliam #define	 DSIS_TX	 0x02		/*  Successful packet transmission  */
4649600Swilliam #define	 DSIS_RXE	 0x04		/*  Packet reception  w/error   */
4749600Swilliam #define	 DSIS_TXE	 0x08		/*  Packet transmission  w/error*/
4849600Swilliam #define	 DSIS_ROVRN	 0x10		/*  Receiver overrun in the ring*/
4949600Swilliam #define	 DSIS_CTRS	 0x20		/*  Diagnostic counters need attn */
5049600Swilliam #define	 DSIS_RDC	 0x40		/*  Remote DMA Complete         */
5149600Swilliam #define	 DSIS_RESET	 0x80		/*  Reset Complete              */
5249600Swilliam 
5349600Swilliam #define ds0_rsar0	0x08		/* Remote start address low  WO	*/
5449600Swilliam #define ds0_rsar1	0x09		/* Remote start address high WO	*/
5549600Swilliam #define ds0_rbcr0	0x0A		/* Remote byte count low     WO	*/
5649600Swilliam #define ds0_rbcr1	0x0B		/* Remote byte count high    WO	*/
5749600Swilliam 
5849600Swilliam #define ds0_rsr		0x0C		/* Receive status            RO	*/
5949600Swilliam #define	 DSRS_RPC	 0x01		/*  Received Packet Complete    */
6049600Swilliam 
6149600Swilliam #define ds0_rcr		ds0_rsr		/* Receive configuration     WO */
6249600Swilliam #define  DSRC_SEP	 0x01		/* Save error packets		*/
6349600Swilliam #define  DSRC_AR	 0x02		/* Accept Runt packets		*/
6449600Swilliam #define  DSRC_AB	 0x04		/* Accept Broadcast packets	*/
6549600Swilliam #define  DSRC_AM	 0x08		/* Accept Multicast packets	*/
6649600Swilliam #define  DSRC_PRO	 0x10		/* Promiscuous physical		*/
6749600Swilliam #define  DSRC_MON	 0x20		/* Monitor mode			*/
6849600Swilliam 
6949600Swilliam #define ds0_tcr		0x0D		/* Transmit configuration    WO */
7049600Swilliam #define  DSTC_CRC	0x01		/* Inhibit CRC			*/
7149600Swilliam #define  DSTC_LB0	0x02		/* Encoded Loopback Control	*/
7249600Swilliam #define  DSTC_LB1	0x04		/* Encoded Loopback Control	*/
7349600Swilliam #define  DSTC_ATD	0x08		/* Auto Transmit Disable	*/
7449600Swilliam #define  DSTC_OFST	0x10		/* Collision Offset Enable	*/
7549600Swilliam 
7649600Swilliam #define ds0_rcvalctr	ds0_tcr		/* Receive alignment err ctr RO */
7749600Swilliam 
7849600Swilliam #define ds0_dcr		0x0E		/* Data configuration	     WO */
7949600Swilliam #define  DSDC_WTS	 0x01		/* Word Transfer Select		*/
8049600Swilliam #define  DSDC_BOS	 0x02		/* Byte Order Select		*/
8149600Swilliam #define  DSDC_LAS	 0x04		/* Long Address Select		*/
8249600Swilliam #define  DSDC_BMS	 0x08		/* Burst Mode Select		*/
8349600Swilliam #define  DSDC_AR	 0x10		/* Autoinitialize Remote	*/
8449600Swilliam #define  DSDC_FT0	 0x20		/* Fifo Threshold Select	*/
8549600Swilliam #define  DSDC_FT1	 0x40		/* Fifo Threshold Select	*/
8649600Swilliam 
8749600Swilliam #define ds0_rcvcrcctr	ds0_dcr		/* Receive CRC error counter RO */
8849600Swilliam 
8949600Swilliam #define ds0_imr		0x0F		/* Interrupt mask register   WO	*/
9049600Swilliam #define  DSIM_PRXE	 0x01		/*  Packet received enable	*/
9149600Swilliam #define  DSIM_PTXE	 0x02		/*  Packet transmitted enable	*/
9249600Swilliam #define  DSIM_RXEE	 0x04		/*  Receive error enable	*/
9349600Swilliam #define  DSIM_TXEE	 0x08		/*  Transmit error enable	*/
9449600Swilliam #define  DSIM_OVWE	 0x10		/*  Overwrite warning enable	*/
9549600Swilliam #define  DSIM_CNTE	 0x20		/*  Counter overflow enable	*/
9649600Swilliam #define  DSIM_RDCE	 0x40		/*  Dma complete enable		*/
9749600Swilliam 
9849600Swilliam #define ds0_rcvfrmctr	ds0_imr		/* Receive Frame error cntr  RO */
9949600Swilliam 
10049600Swilliam 
10149600Swilliam #define ds1_par0	ds0_pstart	/* Physical address register 0	*/
10249600Swilliam 				/* Physical address registers 1-4 	*/
10349600Swilliam #define ds1_par5	ds0_tbcr1	/* Physical address register 5	*/
10449600Swilliam #define ds1_curr	ds0_isr		/* Current page (receive unit)  */
10549600Swilliam #define ds1_mar0	ds0_rsar0	/* Multicast address register 0	*/
10649600Swilliam 				/* Multicast address registers 1-6 	*/
10749600Swilliam #define ds1_mar7	ds0_imr		/* Multicast address register 7	*/
10849600Swilliam #define ds1_curr	ds0_isr		/* Current page (receive unit)  */
10949600Swilliam 
11049600Swilliam #define DS_PGSIZE	256		/* Size of RAM pages in bytes	*/
11149600Swilliam 
11249600Swilliam /*
11349600Swilliam  * Packet receive header, 1 per each buffer page used in receive packet
11449600Swilliam  */
11549600Swilliam struct prhdr {
11649600Swilliam 	u_char	pr_status;	/* is this a good packet, same as ds0_rsr */
11749600Swilliam 	u_char	pr_nxtpg;	/* next page of packet or next packet */
11849600Swilliam 	u_char	pr_sz0;
11949600Swilliam 	u_char	pr_sz1;
12049600Swilliam };
121