/*- * Copyright (c) 2002-2018 The UbixOS Project. * All rights reserved. * * This was developed by Christopher W. Olsen for the UbixOS Project. * * Redistribution and use in source and binary forms, with or without modification, are permitted * provided that the following conditions are met: * * 1) Redistributions of source code must retain the above copyright notice, this list of * conditions, the following disclaimer and the list of authors. * 2) Redistributions in binary form must reproduce the above copyright notice, this list of * conditions, the following disclaimer and the list of authors in the documentation and/or * other materials provided with the distribution. * 3) Neither the name of the UbixOS Project nor the names of its contributors may be used to * endorse or promote products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _ISA_NE2K_H #define _ISA_NE2K_H #include <sys/types.h> #include <sys/device.old.h> #define ether_addr ether_addr_t typedef struct dp_rcvhdr { uInt8 dr_status; /* Copy of rsr */ uInt8 dr_next; /* Pointer to next packet */ uInt8 dr_rbcl; /* Receive Byte Count Low */ uInt8 dr_rbch; /* Receive Byte Count High */ } dp_rcvhdr_t; typedef union etheraddr { unsigned char bytes[6]; /* byteorder safe initialization */ unsigned short shorts[3]; /* force 2-byte alignment */ } ether_addr; #define RSR_FO 0x08 #define RSR_PRX 0x01 #define DEF_ENABLED 0x200 #define OK 0 #define startPage 0x4C #define stopPage 0x80 #define NE_CMD 0x00 #define NE_PSTART 0x01 #define NE_PSTOP 0x02 #define NE_BNRY 0x03 #define NE_TPSR 0x04 #define NE_ISR 0x07 #define NE_CURRENT 0x07 #define NE_RBCR0 0x0A #define NE_RBCR1 0x0B #define NE_RCR 0x0C #define NE_TCR 0x0D #define NE_DCR 0x0E #define NE_IMR 0x0F #define NE_DCR_WTS 0x01 #define NE_DCR_LS 0x08 #define NE_DCR_AR 0x10 #define NE_DCR_FT1 0x40 #define NE_DCR_FT0 0x20 #define E8390_STOP 0x01 #define E8390_NODMA 0x20 #define E8390_PAGE0 0x00 #define E8390_PAGE1 0x40 #define E8390_CMD 0x00 #define E8390_START 0x02 #define E8390_RREAD 0x08 #define E8390_RWRITE 0x10 #define E8390_RXOFF 0x20 #define E8390_TXOFF 0x00 #define E8390_RXCONFIG 0x04 #define E8390_TXCONFIG 0x00 #define EN0_COUNTER0 0x0d #define EN0_DCFG 0x0e #define EN0_RCNTLO 0x0a #define EN0_RCNTHI 0x0b #define EN0_ISR 0x07 #define EN0_IMR 0x0f #define EN0_RSARLO 0x08 #define EN0_RSARHI 0x09 #define EN0_TPSR 0x04 #define EN0_RXCR 0x0c #define EN0_TXCR 0x0D #define EN0_STARTPG 0x01 #define EN0_STOPPG 0x02 #define EN0_BOUNDARY 0x03 #define EN1_PHYS 0x01 #define EN1_CURPAG 0x07 #define EN1_MULT 0x08 #define NE1SM_START_PG 0x20 #define NE1SM_STOP_PG 0x40 #define NESM_START_PG 0x40 #define NESM_STOP_PG 0x80 #define ENISR_ALL 0x3f #define ENDCFG_WTS 0x01 #define NE_DATAPORT 0x10 #define TX_2X_PAGES 12 #define TX_1X_PAGES 6 #define TX_PAGES (dev->priv->pingPong ? TX_2X_PAGES : TX_1X_PAGES) #define DP_CURR 0x7 /* Current Page Register */ #define DP_MAR0 0x8 /* Multicast Address Register 0 */ #define DP_MAR1 0x9 /* Multicast Address Register 1 */ #define DP_MAR2 0xA /* Multicast Address Register 2 */ #define DP_MAR3 0xB /* Multicast Address Register 3 */ #define DP_MAR4 0xC /* Multicast Address Register 4 */ #define DP_MAR5 0xD /* Multicast Address Register 5 */ #define DP_MAR6 0xE /* Multicast Address Register 6 */ #define DP_MAR7 0xF /* Multicast Address Register 7 */ #define DP_CNTR0 0xD /* Tally Counter 0 */ #define DP_CNTR1 0xE /* Tally Counter 1 */ #define DP_CNTR2 0xF /* Tally Counter 2 */ #define DP_PAGESIZE 256 extern char *nicPacket; extern uInt32 packetLength; int ne2k_init(); int ne2kProbe(int,struct device *); int ne2kDevInit(struct device *); void NS8390_init(struct device *dev,int startp); void ne2kISR(); void ne2kHandler(); int NICtoPC(struct device *dev,void *packet,int length,int nic_addr); int PCtoNIC(struct device *dev,void *packet,int length); struct nicBuffer *ne2kAllocBuffer(int); struct nicBuffer *ne2kGetBuffer(); void ne2kFreeBuffer(struct nicBuffer *); #endif /*** $Log: ne2k.h,v $ Revision 1.1.1.1 2006/06/01 12:46:14 reddawg ubix2 Revision 1.2 2005/10/12 00:13:36 reddawg Removed Revision 1.1.1.1 2005/09/26 17:23:39 reddawg no message Revision 1.6 2004/07/14 12:03:49 reddawg ne2k: ne2kInit to ne2k_init Changed Startup Routines Revision 1.5 2004/05/21 14:57:16 reddawg Cleaned up END ***/