#ifndef GEEKOS_NE2K_H #define GEEKOS_NE2K_H //#include #include #define NE2K_PAGE0 0x00 #define NE2K_PAGE1 0x40 #define NE2K_PAGE2 0x80 #define NE2K_PAGE3 0xc0 #define NE2K_BASE_ADDR 0xc100 /* Starting address of the card */ #define NE2K_CR NE2K_BASE_ADDR /* Command register */ /* Page 0 register offsets */ #define NE2K CLDA0 NE2K_CR + 0x01 #define NE2K_PSTART NE2K_CR + 0x01 #define NE2K_CLDA1 NE2K_CR + 0x02 #define NE2K_PSTOP NE2K_CR + 0x02 #define NE2K_BNRY NE2K_CR + 0x03 #define NE2K_TSR NE2K_CR + 0x04 #define NE2K_TPSR NE2K_CR + 0x04 #define NE2K_NCR NE2K_CR + 0x05 #define NE2K_TBCR0 NE2K_CR + 0x05 #define NE2K_FIFO NE2K_CR + 0x06 #define NE2K_TBCR1 NE2K_CR + 0x06 #define NE2K_ISR NE2K_CR + 0x07 /* Interrupt status register */ #define NE2K_CRDA0 NE2K_CR + 0x08 #define NE2K_RSAR0 NE2K_CR + 0x08 /* Remote start address registers */ #define NE2K_CRDA1 NE2K_CR + 0x09 #define NE2K_RSAR1 NE2K_CR + 0x09 #define NE2K_RBCR0 NE2K_CR + 0x0a /* Remote byte count registers */ #define NE2K_RBCR1 NE2K_CR + 0x0b #define NE2K_RSR NE2K_CR + 0x0c #define NE2K_RCR NE2K_CR + 0x0c /* Receive configuration register */ #define NE2K_CNTR0 NE2K_CR + 0x0d #define NE2K_TCR NE2K_CR + 0x0d /* Transmit configuration register */ #define NE2K_CNTR1 NE2K_CR + 0x0e #define NE2K_DCR NE2K_CR + 0x0e /* Data configuration register */ #define NE2K_CNTR2 NE2K_CR + 0x0f #define NE2K_IMR NE2K_CR + 0x0f /* Interrupt mask register */ /* Page 1 register offsets */ #define NE2K_PAR0 NE2K_CR + 0x01 #define NE2K_PAR1 NE2K_CR + 0x02 #define NE2K_PAR2 NE2K_CR + 0x03 #define NE2K_PAR3 NE2K_CR + 0x04 #define NE2K_PAR4 NE2K_CR + 0x05 #define NE2K_PAR5 NE2K_CR + 0x06 #define NE2K_CURR NE2K_CR + 0x07 #define NE2K_MAR0 NE2K_CR + 0x08 #define NE2K_MAR1 NE2K_CR + 0x09 #define NE2K_MAR2 NE2K_CR + 0x0a #define NE2K_MAR3 NE2K_CR + 0x0b #define NE2K_MAR4 NE2K_CR + 0x0c #define NE2K_MAR5 NE2K_CR + 0x0d #define NE2K_MAR6 NE2K_CR + 0x0e #define NE2K_MAR7 NE2K_CR + 0x0f #define NE2K_IRQ 11 /* Interrupt channel */ struct NE2K_REGS { struct _CR * cr; struct _ISR * isr; struct _IMR * imr; struct _DCR * dcr; struct _TCR *tcr; struct _TSR *tsr; struct _RCR *rcr; struct _RSR *rsr; }; int Init_Ne2k(); int NE2K_Transmit(struct NE2K_REGS *); int NE2K_Receive(); #endif /* GEEKOS_NE2K_H */