| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /* Definitions for the 3Com 3c503 Etherlink 2. */ | 
					
						
							|  |  |  | /* This file is distributed under the GPL.
 | 
					
						
							|  |  |  |    Many of these names and comments are directly from the Crynwr packet | 
					
						
							|  |  |  |    drivers, which are released under the GPL. */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define EL2H (dev->base_addr + 0x400)
 | 
					
						
							|  |  |  | #define EL2L (dev->base_addr)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Vendor unique hardware addr. prefix. 3Com has 2 because they ran
 | 
					
						
							|  |  |  |    out of available addresses on the first one... */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define OLD_3COM_ID	0x02608c
 | 
					
						
							|  |  |  | #define NEW_3COM_ID	0x0020af
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Shared memory management parameters. NB: The 8 bit cards have only
 | 
					
						
							|  |  |  |    one bank (MB1) which serves both Tx and Rx packet space. The 16bit | 
					
						
							| 
									
										
										
										
											2006-09-13 13:24:59 -04:00
										 |  |  |    cards have 2 banks, MB0 for Tx packets, and MB1 for Rx packets. | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  |    You choose which bank appears in the sh. mem window with EGACFR_MBSn */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define EL2_MB0_START_PG	(0x00)	/* EL2/16 Tx packets go in bank 0 */
 | 
					
						
							|  |  |  | #define EL2_MB1_START_PG	(0x20)	/* First page of bank 1 */
 | 
					
						
							|  |  |  | #define EL2_MB1_STOP_PG		(0x40)	/* Last page +1 of bank 1 */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* 3Com 3c503 ASIC registers */ | 
					
						
							|  |  |  | #define E33G_STARTPG	(EL2H+0)	/* Start page, matching EN0_STARTPG */
 | 
					
						
							|  |  |  | #define E33G_STOPPG	(EL2H+1)	/* Stop page, must match EN0_STOPPG */
 | 
					
						
							|  |  |  | #define E33G_DRQCNT	(EL2H+2)	/* DMA burst count */
 | 
					
						
							|  |  |  | #define E33G_IOBASE	(EL2H+3)	/* Read of I/O base jumpers. */
 | 
					
						
							|  |  |  | 	/* (non-useful, but it also appears at the end of EPROM space) */ | 
					
						
							|  |  |  | #define E33G_ROMBASE	(EL2H+4)	/* Read of memory base jumpers. */
 | 
					
						
							|  |  |  | #define E33G_GACFR	(EL2H+5)	/* Config/setup bits for the ASIC GA */
 | 
					
						
							|  |  |  | #define E33G_CNTRL	(EL2H+6)	/* Board's main control register */
 | 
					
						
							|  |  |  | #define E33G_STATUS	(EL2H+7)	/* Status on completions. */
 | 
					
						
							|  |  |  | #define E33G_IDCFR	(EL2H+8)	/* Interrupt/DMA config register */
 | 
					
						
							|  |  |  | 				/* (Which IRQ to assert, DMA chan to use) */ | 
					
						
							|  |  |  | #define E33G_DMAAH	(EL2H+9)	/* High byte of DMA address reg */
 | 
					
						
							|  |  |  | #define E33G_DMAAL	(EL2H+10)	/* Low byte of DMA address reg */
 | 
					
						
							|  |  |  | /* "Vector pointer" - if this address matches a read, the EPROM (rather than
 | 
					
						
							|  |  |  |    shared RAM) is mapped into memory space. */ | 
					
						
							|  |  |  | #define E33G_VP2	(EL2H+11)
 | 
					
						
							|  |  |  | #define E33G_VP1	(EL2H+12)
 | 
					
						
							|  |  |  | #define E33G_VP0	(EL2H+13)
 | 
					
						
							|  |  |  | #define E33G_FIFOH	(EL2H+14)	/* FIFO for programmed I/O moves */
 | 
					
						
							|  |  |  | #define E33G_FIFOL	(EL2H+15)	/* ... low byte of above. */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bits in E33G_CNTRL register: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ECNTRL_RESET	(0x01)	/* Software reset of the ASIC and 8390 */
 | 
					
						
							|  |  |  | #define ECNTRL_THIN	(0x02)	/* Onboard xcvr enable, AUI disable */
 | 
					
						
							|  |  |  | #define ECNTRL_AUI	(0x00)	/* Onboard xcvr disable, AUI enable */
 | 
					
						
							|  |  |  | #define ECNTRL_SAPROM	(0x04)	/* Map the station address prom */
 | 
					
						
							|  |  |  | #define ECNTRL_DBLBFR	(0x20)	/* FIFO configuration bit */
 | 
					
						
							|  |  |  | #define ECNTRL_OUTPUT	(0x40)	/* PC-to-3C503 direction if 1 */
 | 
					
						
							|  |  |  | #define ECNTRL_INPUT	(0x00)	/* 3C503-to-PC direction if 0 */
 | 
					
						
							|  |  |  | #define ECNTRL_START	(0x80)	/* Start the DMA logic */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bits in E33G_STATUS register: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ESTAT_DPRDY	(0x80)	/* Data port (of FIFO) ready */
 | 
					
						
							|  |  |  | #define ESTAT_UFLW	(0x40)	/* Tried to read FIFO when it was empty */
 | 
					
						
							|  |  |  | #define ESTAT_OFLW	(0x20)	/* Tried to write FIFO when it was full */
 | 
					
						
							|  |  |  | #define ESTAT_DTC	(0x10)	/* Terminal Count from PC bus DMA logic */
 | 
					
						
							|  |  |  | #define ESTAT_DIP	(0x08)	/* DMA In Progress */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bits in E33G_GACFR register: */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define EGACFR_NIM	(0x80)	/* NIC interrupt mask */
 | 
					
						
							|  |  |  | #define EGACFR_TCM	(0x40)	/* DMA term. count interrupt mask */
 | 
					
						
							|  |  |  | #define EGACFR_RSEL	(0x08)	/* Map a bank of card mem into system mem */
 | 
					
						
							|  |  |  | #define EGACFR_MBS2	(0x04)	/* Memory bank select, bit 2. */
 | 
					
						
							|  |  |  | #define EGACFR_MBS1	(0x02)	/* Memory bank select, bit 1. */
 | 
					
						
							|  |  |  | #define EGACFR_MBS0	(0x01)	/* Memory bank select, bit 0. */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define EGACFR_NORM	(0x49)	/* TCM | RSEL | MBS0 */
 | 
					
						
							|  |  |  | #define EGACFR_IRQOFF	(0xc9)	/* TCM | RSEL | MBS0 | NIM */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  | 	MBS2	MBS1	MBS0	Sh. mem windows card mem at: | 
					
						
							|  |  |  | 	----	----	----	----------------------------- | 
					
						
							|  |  |  | 	0	0	0	0x0000 -- bank 0 | 
					
						
							|  |  |  | 	0	0	1	0x2000 -- bank 1 (only choice for 8bit card) | 
					
						
							|  |  |  | 	0	1	0	0x4000 -- bank 2, not used | 
					
						
							|  |  |  | 	0	1	1	0x6000 -- bank 3, not used | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-09-13 13:24:59 -04:00
										 |  |  | There was going to be a 32k card that used bank 2 and 3, but it | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | never got produced. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* End of 3C503 parameter definitions */ |