00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef AX88796_H
00028 #define AX88796_H
00029
00030 #include "global.h"
00031
00032 #define nop() asm volatile ("nop")
00033
00034
00035
00036 #define CR 0x00 // Command Register
00037 #define PSTART 0x01 // Page Start Register
00038 #define PSTOP 0x02 // Page Stop Register
00039 #define BNRY 0x03 // Boundary Pointer
00040 #define RDMAPORT 0x10 // DMA Data Port
00041 #define MEMR 0x14 // MII/EEPROM Access Register
00042 #define TR 0x15 // Test Register
00043 #define SPP_DPR 0x18 // Standard Printer Port Data
00044 #define SSP_SPR 0x19 // Standard Printer Port Status
00045 #define SSP_CPR 0x1A // Standard Printer Port Control
00046
00047 #define TSR 0x04 // Transmit Status Register
00048 #define NCR 0x05 // Number of Collisions Register
00049 #define ISR 0x07 // Interrupt Status Register
00050 #define CRDA0 0x08 // Current Remote DMA Address 0
00051 #define CRDA1 0x09 // Current Remote DMA Address 1
00052 #define RSR 0x0C // Receive Status Register
00053 #define CNTR0 0x0D
00054 #define CNTR1 0x0E
00055 #define CNTR2 0x0F
00056 #define GPI 0x17 // General-Purpose Input
00057 #define RSTPORT 0x1F // Reset
00058
00059 #define TPSR 0x04 // Transmit Page Start Address
00060 #define TBCR0 0x05 // Transmit Byte Count Register 0
00061 #define TBCR1 0x06 // Transmit Byte Count Register 1
00062 #define RSAR0 0x08 // Remote Start Address Register 0
00063 #define RSAR1 0x09 // Remote Start Address Register 1
00064 #define RBCR0 0x0A // Remote Byte Count 0
00065 #define RBCR1 0x0B // Remote Byte Count 1
00066 #define RCR 0x0C // Receive Config Register
00067 #define TCR 0x0D // Transmit Config Register
00068 #define DCR 0x0E // Data Config Register
00069 #define IMR 0x0F // Interrupt Mask Register
00070 #define GPOC 0x17 // General-Purpose Output Control
00071
00072 #define PAR0 0x01 // Physical Address Register 0
00073 #define PAR1 0x02 // Physical Address Register 0
00074 #define PAR2 0x03 // Physical Address Register 0
00075 #define PAR3 0x04 // Physical Address Register 0
00076 #define PAR4 0x05 // Physical Address Register 0
00077 #define PAR5 0x06 // Physical Address Register 0
00078 #define CURR 0x07 // Page 1
00079 #define CPR 0x07 // Current Page Register
00080
00081
00082 #define PS1 0x80
00083 #define PS0 0x40
00084 #define RD2 0x20
00085 #define RD1 0x10
00086 #define RD0 0x08
00087 #define TXP 0x04
00088 #define START 0x02
00089 #define STOP 0x01
00090
00091 #define INTT 0x40
00092 #define MON 0x20
00093 #define PRO 0x10
00094 #define AM 0x08
00095 #define AB 0x04
00096 #define AR 0x02
00097 #define SEP 0x01
00098
00099 #define RST 0x80
00100 #define RDC 0x40
00101 #define OVW 0x10
00102 #define RXE 0x08
00103 #define TXE 0x04
00104 #define PTX 0x02
00105 #define PRX 0x01
00106
00107 #define AUTOD 0x01
00108 #define RST_B 0x02
00109 #define RST_10B 0x04
00110 #define RST_TXB 0x08
00111
00112 #define GPO0 0x01
00113 #define MPSEL 0x10
00114 #define MPSET 0x20
00115 #define PPDSET 0x40
00116
00117 #define MDC 0x01
00118 #define MDIR 0x02
00119 #define MDI 0x04
00120 #define MDO 0x08
00121 #define EECS 0x10
00122 #define EEI 0x20
00123 #define EEO 0x40
00124 #define EECLK 0x80
00125
00126 #define GPI2 0x40
00127 #define GPI1 0x20
00128 #define GPI0 0x10
00129 #define I_SPD 0x04
00130 #define I_DPX 0x02
00131 #define I_LINK 0x01
00132
00133 #define FDU 0x80 // full duplex
00134 #define PD 0x40 // pad disable
00135 #define RLO 0x20 // retry of late collisions
00136 #define LB1 0x04 // loopback 1
00137 #define LB0 0x02 // loopback 0
00138 #define CRC 0x01 // generate CRC
00139
00140
00141
00142 #define RCR_INIT (INTT | AB)
00143 #define DCR_INIT 0x00 // was 0x58 for realtek RTL8019
00144
00145 #define TCR_INIT 0x00
00146
00147 #define IMR_INIT 0x11 // PRX and OVW interrupt enabled
00148
00149
00150
00151
00152 #define TXSTART_INIT 0x40
00153 #define RXSTART_INIT 0x46
00154 #define RXSTOP_INIT 0x60
00155
00156
00157 #define ETHERNET_MIN_PACKET_LENGTH 0x3C
00158
00159
00160
00161 #define PKTHEADER_STATUS 0x00 // packet status
00162 #define PKTHEADER_NEXTPAGE 0x01 // next buffer page
00163 #define PKTHEADER_PKTLENL 0x02 // packet length low
00164 #define PKTHEADER_PKTLENH 0x03 // packet length high
00165
00166
00167
00168 #include "nic.h"
00169
00170
00171 void ax88796SetupPorts(void);
00172
00173
00174 u08 ax88796Read(u08 address);
00175
00176
00177 void ax88796Write(u08 address, u08 data);
00178
00179
00180 void ax88796Init(void);
00181
00182
00183 void ax88796BeginPacketSend(unsigned int packetLength);
00184 void ax88796SendPacketData(unsigned char * localBuffer, unsigned int length);
00185 void ax88796EndPacketSend(void);
00186
00187
00188 unsigned int ax88796BeginPacketRetreive(void);
00189 void ax88796RetreivePacketData(unsigned char *localBuffer, unsigned int length);
00190 void ax88796EndPacketRetreive(void);
00191
00192
00193
00194
00195
00196 void ax88796ProcessInterrupt(void);
00197
00198
00199
00200 void ax88796ReceiveOverflowRecover(void);
00201
00202
00203 void ax88796WriteMii(unsigned char phyad,unsigned char regad,unsigned int mii_data);
00204
00205 unsigned int ax88796ReadMii(unsigned char phyad,unsigned char regad);
00206
00207
00208 void ax88796RegDump(void);
00209
00210 #endif
00211