Go to the documentation of this file.
   31 #ifndef _ENC424J600_DRIVER_H 
   32 #define _ENC424J600_DRIVER_H 
   38 #ifndef ENC424J600_ETH_RX_BUFFER_SIZE 
   39    #define ENC424J600_ETH_RX_BUFFER_SIZE 1536 
   40 #elif (ENC424J600_ETH_RX_BUFFER_SIZE != 1536) 
   41    #error ENC424J600_ETH_RX_BUFFER_SIZE parameter is not valid 
   45 #define ENC424J600_TX_BUFFER_START 0x0000 
   46 #define ENC424J600_TX_BUFFER_STOP  0x17FE 
   47 #define ENC424J600_RX_BUFFER_START 0x1800 
   48 #define ENC424J600_RX_BUFFER_STOP  0x5FFE 
   51 #define ENC424J600_CMD_B0SEL       0xC0 //Bank 0 Select 
   52 #define ENC424J600_CMD_B1SEL       0xC2 //Bank 1 Select 
   53 #define ENC424J600_CMD_B2SEL       0xC4 //Bank 2 Select 
   54 #define ENC424J600_CMD_B3SEL       0xC6 //Bank 3 Select 
   55 #define ENC424J600_CMD_SETETHRST   0xCA //System Reset 
   56 #define ENC424J600_CMD_FCDISABLE   0xE0 //Flow Control Disable 
   57 #define ENC424J600_CMD_FCSINGLE    0xE2 //Flow Control Single 
   58 #define ENC424J600_CMD_FCMULTIPLE  0xE4 //Flow Control Multiple 
   59 #define ENC424J600_CMD_FCCLEAR     0xE6 //Flow Control Clear 
   60 #define ENC424J600_CMD_SETPKTDEC   0xCC //Decrement Packet Counter 
   61 #define ENC424J600_CMD_DMASTOP     0xD2 //DMA Stop 
   62 #define ENC424J600_CMD_DMACKSUM    0xD8 //DMA Start Checksum 
   63 #define ENC424J600_CMD_DMACKSUMS   0xDA //DMA Start Checksum with Seed 
   64 #define ENC424J600_CMD_DMACOPY     0xDC //DMA Start Copy 
   65 #define ENC424J600_CMD_DMACOPYS    0xDE //DMA Start Copy and Checksum with Seed 
   66 #define ENC424J600_CMD_SETTXRTS    0xD4 //Request Packet Transmission 
   67 #define ENC424J600_CMD_ENABLERX    0xE8 //Enable RX 
   68 #define ENC424J600_CMD_DISABLERX   0xEA //Disable RX 
   69 #define ENC424J600_CMD_SETEIE      0xEC //Enable Interrupts 
   70 #define ENC424J600_CMD_CLREIE      0xEE //Disable Interrupts 
   71 #define ENC424J600_CMD_RBSEL       0xC8 //Read Bank Select 
   72 #define ENC424J600_CMD_WGPRDPT     0x60 //Write EGPRDPT 
   73 #define ENC424J600_CMD_RGPRDPT     0x62 //Read EGPRDPT 
   74 #define ENC424J600_CMD_WRXRDPT     0x64 //Write ERXRDPT 
   75 #define ENC424J600_CMD_RRXRDPT     0x66 //Read ERXRDPT 
   76 #define ENC424J600_CMD_WUDARDPT    0x68 //Write EUDARDPT 
   77 #define ENC424J600_CMD_RUDARDPT    0x6A //Read EUDARDPT 
   78 #define ENC424J600_CMD_WGPWRPT     0x6C //Write EGPWRPT 
   79 #define ENC424J600_CMD_RGPWRPT     0x6E //Read EGPWRPT 
   80 #define ENC424J600_CMD_WRXWRPT     0x70 //Write ERXWRPT 
   81 #define ENC424J600_CMD_RRXWRPT     0x72 //Read ERXWRPT 
   82 #define ENC424J600_CMD_WUDAWRPT    0x74 //Write EUDAWRPT 
   83 #define ENC424J600_CMD_RUDAWRPT    0x76 //Read EUDAWRPT 
   84 #define ENC424J600_CMD_RCR         0x00 //Read Control Register 
   85 #define ENC424J600_CMD_WCR         0x40 //Write Control Register 
   86 #define ENC424J600_CMD_RCRU        0x20 //Read Control Register Unbanked 
   87 #define ENC424J600_CMD_WCRU        0x22 //Write Control Register Unbanked 
   88 #define ENC424J600_CMD_BFS         0x80 //Bit Field Set 
   89 #define ENC424J600_CMD_BFC         0xA0 //Bit Field Clear 
   90 #define ENC424J600_CMD_BFSU        0x24 //Bit Field Set Unbanked 
   91 #define ENC424J600_CMD_BFCU        0x26 //Bit Field Clear Unbanked 
   92 #define ENC424J600_CMD_RGPDATA     0x28 //Read EGPDATA 
   93 #define ENC424J600_CMD_WGPDATA     0x2A //Write EGPDATA 
   94 #define ENC424J600_CMD_RRXDATA     0x2C //Read ERXDATA 
   95 #define ENC424J600_CMD_WRXDATA     0x2E //Write ERXDATA 
   96 #define ENC424J600_CMD_RUDADATA    0x30 //Read EUDADATA 
   97 #define ENC424J600_CMD_WUDADATA    0x32 //Write EUDADATA 
  100 #define ENC424J600_ETXST                          0x00 
  101 #define ENC424J600_ETXLEN                         0x02 
  102 #define ENC424J600_ERXST                          0x04 
  103 #define ENC424J600_ERXTAIL                        0x06 
  104 #define ENC424J600_ERXHEAD                        0x08 
  105 #define ENC424J600_EDMAST                         0x0A 
  106 #define ENC424J600_EDMALEN                        0x0C 
  107 #define ENC424J600_EDMADST                        0x0E 
  108 #define ENC424J600_EDMACS                         0x10 
  109 #define ENC424J600_ETXSTAT                        0x12 
  110 #define ENC424J600_ETXWIRE                        0x14 
  111 #define ENC424J600_EUDAST                         0x16 
  112 #define ENC424J600_EUDAND                         0x18 
  113 #define ENC424J600_ESTAT                          0x1A 
  114 #define ENC424J600_EIR                            0x1C 
  115 #define ENC424J600_ECON1                          0x1E 
  116 #define ENC424J600_EHT1                           0x20 
  117 #define ENC424J600_EHT2                           0x22 
  118 #define ENC424J600_EHT3                           0x24 
  119 #define ENC424J600_EHT4                           0x26 
  120 #define ENC424J600_EPMM1                          0x28 
  121 #define ENC424J600_EPMM2                          0x2A 
  122 #define ENC424J600_EPMM3                          0x2C 
  123 #define ENC424J600_EPMM4                          0x2E 
  124 #define ENC424J600_EPMCS                          0x30 
  125 #define ENC424J600_EPMO                           0x32 
  126 #define ENC424J600_ERXFCON                        0x34 
  127 #define ENC424J600_MACON1                         0x40 
  128 #define ENC424J600_MACON2                         0x42 
  129 #define ENC424J600_MABBIPG                        0x44 
  130 #define ENC424J600_MAIPG                          0x46 
  131 #define ENC424J600_MACLCON                        0x48 
  132 #define ENC424J600_MAMXFL                         0x4A 
  133 #define ENC424J600_MICMD                          0x52 
  134 #define ENC424J600_MIREGADR                       0x54 
  135 #define ENC424J600_MAADR3                         0x60 
  136 #define ENC424J600_MAADR2                         0x62 
  137 #define ENC424J600_MAADR1                         0x64 
  138 #define ENC424J600_MIWR                           0x66 
  139 #define ENC424J600_MIRD                           0x68 
  140 #define ENC424J600_MISTAT                         0x6A 
  141 #define ENC424J600_EPAUS                          0x6C 
  142 #define ENC424J600_ECON2                          0x6E 
  143 #define ENC424J600_ERXWM                          0x70 
  144 #define ENC424J600_EIE                            0x72 
  145 #define ENC424J600_EIDLED                         0x74 
  146 #define ENC424J600_EGPDATA                        0x80 
  147 #define ENC424J600_ERXDATA                        0x82 
  148 #define ENC424J600_EUDADATA                       0x84 
  149 #define ENC424J600_EGPRDPT                        0x86 
  150 #define ENC424J600_EGPWRPT                        0x88 
  151 #define ENC424J600_ERXRDPT                        0x8A 
  152 #define ENC424J600_ERXWRPT                        0x8C 
  153 #define ENC424J600_EUDARDPT                       0x8E 
  154 #define ENC424J600_EUDAWRPT                       0x90 
  157 #define ENC424J600_PHCON1                         0x00 
  158 #define ENC424J600_PHSTAT1                        0x01 
  159 #define ENC424J600_PHANA                          0x04 
  160 #define ENC424J600_PHANLPA                        0x05 
  161 #define ENC424J600_PHANE                          0x06 
  162 #define ENC424J600_PHCON2                         0x11 
  163 #define ENC424J600_PHSTAT2                        0x1B 
  164 #define ENC424J600_PHSTAT3                        0x1F 
  167 #define ENC424J600_ETXST_VAL                      0x7FFF 
  170 #define ENC424J600_ETXLEN_VAL                     0x7FFF 
  173 #define ENC424J600_ERXST_VAL                      0x7FFF 
  176 #define ENC424J600_ERXTAIL_VAL                    0x7FFF 
  179 #define ENC424J600_ERXHEAD_VAL                    0x7FFF 
  182 #define ENC424J600_EDMAST_VAL                     0x7FFF 
  185 #define ENC424J600_EDMALEN_VAL                    0x7FFF 
  188 #define ENC424J600_EDMADST_VAL                    0x7FFF 
  191 #define ENC424J600_ETXSTAT_R12                    0x1000 
  192 #define ENC424J600_ETXSTAT_R11                    0x0800 
  193 #define ENC424J600_ETXSTAT_LATECOL                0x0400 
  194 #define ENC424J600_ETXSTAT_MAXCOL                 0x0200 
  195 #define ENC424J600_ETXSTAT_EXDEFER                0x0100 
  196 #define ENC424J600_ETXSTAT_DEFER                  0x0080 
  197 #define ENC424J600_ETXSTAT_R6                     0x0040 
  198 #define ENC424J600_ETXSTAT_R5                     0x0020 
  199 #define ENC424J600_ETXSTAT_CRCBAD                 0x0010 
  200 #define ENC424J600_ETXSTAT_COLCNT                 0x000F 
  203 #define ENC424J600_EUDAST_VAL                     0x7FFF 
  206 #define ENC424J600_EUDAND_VAL                     0x7FFF 
  209 #define ENC424J600_ESTAT_INT                      0x8000 
  210 #define ENC424J600_ESTAT_FCIDLE                   0x4000 
  211 #define ENC424J600_ESTAT_RXBUSY                   0x2000 
  212 #define ENC424J600_ESTAT_CLKRDY                   0x1000 
  213 #define ENC424J600_ESTAT_R11                      0x0800 
  214 #define ENC424J600_ESTAT_PHYDPX                   0x0400 
  215 #define ENC424J600_ESTAT_R9                       0x0200 
  216 #define ENC424J600_ESTAT_PHYLNK                   0x0100 
  217 #define ENC424J600_ESTAT_PKTCNT                   0x00FF 
  220 #define ENC424J600_EIR_CRYPTEN                    0x8000 
  221 #define ENC424J600_EIR_MODEXIF                    0x4000 
  222 #define ENC424J600_EIR_HASHIF                     0x2000 
  223 #define ENC424J600_EIR_AESIF                      0x1000 
  224 #define ENC424J600_EIR_LINKIF                     0x0800 
  225 #define ENC424J600_EIR_R10                        0x0400 
  226 #define ENC424J600_EIR_R9                         0x0200 
  227 #define ENC424J600_EIR_R8                         0x0100 
  228 #define ENC424J600_EIR_R7                         0x0080 
  229 #define ENC424J600_EIR_PKTIF                      0x0040 
  230 #define ENC424J600_EIR_DMAIF                      0x0020 
  231 #define ENC424J600_EIR_R4                         0x0010 
  232 #define ENC424J600_EIR_TXIF                       0x0008 
  233 #define ENC424J600_EIR_TXABTIF                    0x0004 
  234 #define ENC424J600_EIR_RXABTIF                    0x0002 
  235 #define ENC424J600_EIR_PCFULIF                    0x0001 
  238 #define ENC424J600_ECON1_MODEXST                  0x8000 
  239 #define ENC424J600_ECON1_HASHEN                   0x4000 
  240 #define ENC424J600_ECON1_HASHOP                   0x2000 
  241 #define ENC424J600_ECON1_HASHLST                  0x1000 
  242 #define ENC424J600_ECON1_AESST                    0x0800 
  243 #define ENC424J600_ECON1_AESOP1                   0x0400 
  244 #define ENC424J600_ECON1_AESOP0                   0x0200 
  245 #define ENC424J600_ECON1_PKTDEC                   0x0100 
  246 #define ENC424J600_ECON1_FCOP1                    0x0080 
  247 #define ENC424J600_ECON1_FCOP0                    0x0040 
  248 #define ENC424J600_ECON1_DMAST                    0x0020 
  249 #define ENC424J600_ECON1_DMACPY                   0x0010 
  250 #define ENC424J600_ECON1_DMACSSD                  0x0008 
  251 #define ENC424J600_ECON1_DMANOCS                  0x0004 
  252 #define ENC424J600_ECON1_TXRTS                    0x0002 
  253 #define ENC424J600_ECON1_RXEN                     0x0001 
  256 #define ENC424J600_ERXFCON_HTEN                   0x8000 
  257 #define ENC424J600_ERXFCON_MPEN                   0x4000 
  258 #define ENC424J600_ERXFCON_NOTPM                  0x1000 
  259 #define ENC424J600_ERXFCON_PMEN                   0x0F00 
  260 #define ENC424J600_ERXFCON_PMEN_DISABLED          0x0000 
  261 #define ENC424J600_ERXFCON_PMEN_CHECKSUM          0x0100 
  262 #define ENC424J600_ERXFCON_PMEN_UNICAST           0x0200 
  263 #define ENC424J600_ERXFCON_PMEN_NOT_UNICAST       0x0300 
  264 #define ENC424J600_ERXFCON_PMEN_MULTICAST         0x0400 
  265 #define ENC424J600_ERXFCON_PMEN_NOT_MULTICAST     0x0500 
  266 #define ENC424J600_ERXFCON_PMEN_BROADCAST         0x0600 
  267 #define ENC424J600_ERXFCON_PMEN_NOT_BROADCAST     0x0700 
  268 #define ENC424J600_ERXFCON_PMEN_HASH              0x0800 
  269 #define ENC424J600_ERXFCON_PMEN_MAGIC_PKT         0x0900 
  270 #define ENC424J600_ERXFCON_CRCEEN                 0x0080 
  271 #define ENC424J600_ERXFCON_CRCEN                  0x0040 
  272 #define ENC424J600_ERXFCON_RUNTEEN                0x0020 
  273 #define ENC424J600_ERXFCON_RUNTEN                 0x0010 
  274 #define ENC424J600_ERXFCON_UCEN                   0x0008 
  275 #define ENC424J600_ERXFCON_NOTMEEN                0x0004 
  276 #define ENC424J600_ERXFCON_MCEN                   0x0002 
  277 #define ENC424J600_ERXFCON_BCEN                   0x0001 
  280 #define ENC424J600_MACON1_R15_14                  0xC000 
  281 #define ENC424J600_MACON1_R11_8                   0x0F00 
  282 #define ENC424J600_MACON1_LOOPBK                  0x0010 
  283 #define ENC424J600_MACON1_R3                      0x0008 
  284 #define ENC424J600_MACON1_R3_DEFAULT              0x0008 
  285 #define ENC424J600_MACON1_RXPAUS                  0x0004 
  286 #define ENC424J600_MACON1_PASSALL                 0x0002 
  287 #define ENC424J600_MACON1_R0                      0x0001 
  288 #define ENC424J600_MACON1_R0_DEFAULT              0x0001 
  291 #define ENC424J600_MACON2_DEFER                   0x4000 
  292 #define ENC424J600_MACON2_BPEN                    0x2000 
  293 #define ENC424J600_MACON2_NOBKOFF                 0x1000 
  294 #define ENC424J600_MACON2_R9_8                    0x0300 
  295 #define ENC424J600_MACON2_PADCFG                  0x00E0 
  296 #define ENC424J600_MACON2_PADCFG_NO               0x0000 
  297 #define ENC424J600_MACON2_PADCFG_60_BYTES         0x0020 
  298 #define ENC424J600_MACON2_PADCFG_64_BYTES         0x0060 
  299 #define ENC424J600_MACON2_PADCFG_AUTO             0x00A0 
  300 #define ENC424J600_MACON2_TXCRCEN                 0x0010 
  301 #define ENC424J600_MACON2_PHDREN                  0x0008 
  302 #define ENC424J600_MACON2_HFRMEN                  0x0004 
  303 #define ENC424J600_MACON2_R1                      0x0002 
  304 #define ENC424J600_MACON2_R1_DEFAULT              0x0002 
  305 #define ENC424J600_MACON2_FULDPX                  0x0001 
  308 #define ENC424J600_MABBIPG_BBIPG                  0x007F 
  309 #define ENC424J600_MABBIPG_BBIPG_DEFAULT_HD       0x0012 
  310 #define ENC424J600_MABBIPG_BBIPG_DEFAULT_FD       0x0015 
  313 #define ENC424J600_MAIPG_R14_8                    0x7F00 
  314 #define ENC424J600_MAIPG_R14_8_DEFAULT            0x0C00 
  315 #define ENC424J600_MAIPG_IPG                      0x007F 
  316 #define ENC424J600_MAIPG_IPG_DEFAULT              0x0012 
  319 #define ENC424J600_MACLCON_R13_8                  0x3F00 
  320 #define ENC424J600_MACLCON_R13_8_DEFAULT          0x3700 
  321 #define ENC424J600_MACLCON_MAXRET                 0x000F 
  324 #define ENC424J600_MICMD_MIISCAN                  0x0002 
  325 #define ENC424J600_MICMD_MIIRD                    0x0001 
  328 #define ENC424J600_MIREGADR_R12_8                 0x1F00 
  329 #define ENC424J600_MIREGADR_R12_8_DEFAULT         0x0100 
  330 #define ENC424J600_MIREGADR_PHREG                 0x001F 
  333 #define ENC424J600_MISTAT_R3                      0x0008 
  334 #define ENC424J600_MISTAT_NVALID                  0x0004 
  335 #define ENC424J600_MISTAT_SCAN                    0x0002 
  336 #define ENC424J600_MISTAT_BUSY                    0x0001 
  339 #define ENC424J600_ECON2_ETHEN                    0x8000 
  340 #define ENC424J600_ECON2_STRCH                    0x4000 
  341 #define ENC424J600_ECON2_TXMAC                    0x2000 
  342 #define ENC424J600_ECON2_SHA1MD5                  0x1000 
  343 #define ENC424J600_ECON2_COCON                    0x0F00 
  344 #define ENC424J600_ECON2_COCON_NONE               0x0000 
  345 #define ENC424J600_ECON2_COCON_33_33_MHZ          0x0100 
  346 #define ENC424J600_ECON2_COCON_25_00_MHZ          0x0200 
  347 #define ENC424J600_ECON2_COCON_20_00_MHZ          0x0300 
  348 #define ENC424J600_ECON2_COCON_16_67_MHZ          0x0400 
  349 #define ENC424J600_ECON2_COCON_12_50_MHZ          0x0500 
  350 #define ENC424J600_ECON2_COCON_10_00_MHZ          0x0600 
  351 #define ENC424J600_ECON2_COCON_8_333_MHZ          0x0700 
  352 #define ENC424J600_ECON2_COCON_8_000_MHZ          0x0800 
  353 #define ENC424J600_ECON2_COCON_6_250_MHZ          0x0900 
  354 #define ENC424J600_ECON2_COCON_5_000_MHZ          0x0A00 
  355 #define ENC424J600_ECON2_COCON_4_000_MHZ          0x0B00 
  356 #define ENC424J600_ECON2_COCON_3_125_MHZ          0x0C00 
  357 #define ENC424J600_ECON2_COCON_100_KHZ            0x0E00 
  358 #define ENC424J600_ECON2_COCON_50_KHZ             0x0F00 
  359 #define ENC424J600_ECON2_AUTOFC                   0x0080 
  360 #define ENC424J600_ECON2_TXRST                    0x0040 
  361 #define ENC424J600_ECON2_RXRST                    0x0020 
  362 #define ENC424J600_ECON2_ETHRST                   0x0010 
  363 #define ENC424J600_ECON2_MODLEN                   0x000C 
  364 #define ENC424J600_ECON2_MODLEN_512_BITS          0x0000 
  365 #define ENC424J600_ECON2_MODLEN_768_BITS          0x0004 
  366 #define ENC424J600_ECON2_MODLEN_1024_BITS         0x0008 
  367 #define ENC424J600_ECON2_AESLEN                   0x0003 
  368 #define ENC424J600_ECON2_AESLEN_128_BITS          0x0000 
  369 #define ENC424J600_ECON2_AESLEN_192_BITS          0x0001 
  370 #define ENC424J600_ECON2_AESLEN_256_BITS          0x0002 
  373 #define ENC424J600_ERXWM_RXFWM                    0xFF00 
  374 #define ENC424J600_ERXWM_RXEWM                    0x00FF 
  377 #define ENC424J600_EIE_INTIE                      0x8000 
  378 #define ENC424J600_EIE_MODEXIE                    0x4000 
  379 #define ENC424J600_EIE_HASHIE                     0x2000 
  380 #define ENC424J600_EIE_AESIE                      0x1000 
  381 #define ENC424J600_EIE_LINKIE                     0x0800 
  382 #define ENC424J600_EIE_R10_7                      0x0780 
  383 #define ENC424J600_EIE_PKTIE                      0x0040 
  384 #define ENC424J600_EIE_DMAIE                      0x0020 
  385 #define ENC424J600_EIE_R4                         0x0010 
  386 #define ENC424J600_EIE_R4_DEFAULT                 0x0010 
  387 #define ENC424J600_EIE_TXIE                       0x0008 
  388 #define ENC424J600_EIE_TXABTIE                    0x0004 
  389 #define ENC424J600_EIE_RXABTIE                    0x0002 
  390 #define ENC424J600_EIE_PCFULIE                    0x0001 
  393 #define ENC424J600_EIDLED_LACFG                   0xF000 
  394 #define ENC424J600_EIDLED_LACFG_OFF               0x0000 
  395 #define ENC424J600_EIDLED_LACFG_ON                0x1000 
  396 #define ENC424J600_EIDLED_LACFG_LINK              0x2000 
  397 #define ENC424J600_EIDLED_LACFG_COL               0x3000 
  398 #define ENC424J600_EIDLED_LACFG_TX                0x4000 
  399 #define ENC424J600_EIDLED_LACFG_RX                0x5000 
  400 #define ENC424J600_EIDLED_LACFG_TX_RX             0x6000 
  401 #define ENC424J600_EIDLED_LACFG_DUPLEX            0x7000 
  402 #define ENC424J600_EIDLED_LACFG_SPEED             0x8000 
  403 #define ENC424J600_EIDLED_LACFG_LINK_TX           0x9000 
  404 #define ENC424J600_EIDLED_LACFG_LINK_RX           0xA000 
  405 #define ENC424J600_EIDLED_LACFG_LINK_TX_RX        0xB000 
  406 #define ENC424J600_EIDLED_LACFG_LINK_COL          0xC000 
  407 #define ENC424J600_EIDLED_LACFG_LINK_DUPLEX_TX_RX 0xE000 
  408 #define ENC424J600_EIDLED_LACFG_LINK_SPEED_TX_RX  0xF000 
  409 #define ENC424J600_EIDLED_LBCFG                   0x0F00 
  410 #define ENC424J600_EIDLED_LBCFG_OFF               0x0000 
  411 #define ENC424J600_EIDLED_LBCFG_ON                0x0100 
  412 #define ENC424J600_EIDLED_LBCFG_LINK              0x0200 
  413 #define ENC424J600_EIDLED_LBCFG_COL               0x0300 
  414 #define ENC424J600_EIDLED_LBCFG_TX                0x0400 
  415 #define ENC424J600_EIDLED_LBCFG_RX                0x0500 
  416 #define ENC424J600_EIDLED_LBCFG_TX_RX             0x0600 
  417 #define ENC424J600_EIDLED_LBCFG_DUPLEX            0x0700 
  418 #define ENC424J600_EIDLED_LBCFG_SPEED             0x0800 
  419 #define ENC424J600_EIDLED_LBCFG_LINK_TX           0x0900 
  420 #define ENC424J600_EIDLED_LBCFG_LINK_RX           0x0A00 
  421 #define ENC424J600_EIDLED_LBCFG_LINK_TX_RX        0x0B00 
  422 #define ENC424J600_EIDLED_LBCFG_LINK_COL          0x0C00 
  423 #define ENC424J600_EIDLED_LBCFG_LINK_DUPLEX_TX_RX 0x0E00 
  424 #define ENC424J600_EIDLED_LBCFG_LINK_SPEED_TX_RX  0x0F00 
  425 #define ENC424J600_EIDLED_DEVID                   0x00E0 
  426 #define ENC424J600_EIDLED_DEVID_DEFAULT           0x0020 
  427 #define ENC424J600_EIDLED_REVID                   0x001F 
  430 #define ENC424J600_EGPDATA_R15_8                  0xFF00 
  431 #define ENC424J600_EGPDATA_VAL                    0x00FF 
  434 #define ENC424J600_ERXDATA_R15_8                  0xFF00 
  435 #define ENC424J600_ERXDATA_VAL                    0x00FF 
  438 #define ENC424J600_EUDADATA_R15_8                 0xFF00 
  439 #define ENC424J600_EUDADATA_VAL                   0x00FF 
  442 #define ENC424J600_EGPRDPT_VAL                    0x7FFF 
  445 #define ENC424J600_EGPWRPT_VAL                    0x7FFF 
  448 #define ENC424J600_ERXRDPT_VAL                    0x7FFF 
  451 #define ENC424J600_ERXWRPT_VAL                    0x7FFF 
  454 #define ENC424J600_EUDARDPT_VAL                   0x7FFF 
  457 #define ENC424J600_EUDAWRPT_VAL                   0x7FFF 
  460 #define ENC424J600_PHCON1_PRST                    0x8000 
  461 #define ENC424J600_PHCON1_PLOOPBK                 0x4000 
  462 #define ENC424J600_PHCON1_SPD100                  0x2000 
  463 #define ENC424J600_PHCON1_ANEN                    0x1000 
  464 #define ENC424J600_PHCON1_PSLEEP                  0x0800 
  465 #define ENC424J600_PHCON1_RENEG                   0x0200 
  466 #define ENC424J600_PHCON1_PFULDPX                 0x0100 
  469 #define ENC424J600_PHSTAT1_FULL100                0x4000 
  470 #define ENC424J600_PHSTAT1_HALF100                0x2000 
  471 #define ENC424J600_PHSTAT1_FULL10                 0x1000 
  472 #define ENC424J600_PHSTAT1_HALF10                 0x0800 
  473 #define ENC424J600_PHSTAT1_ANDONE                 0x0020 
  474 #define ENC424J600_PHSTAT1_LRFAULT                0x0010 
  475 #define ENC424J600_PHSTAT1_ANABLE                 0x0008 
  476 #define ENC424J600_PHSTAT1_LLSTAT                 0x0004 
  477 #define ENC424J600_PHSTAT1_EXTREGS                0x0001 
  480 #define ENC424J600_PHANA_ADNP                     0x8000 
  481 #define ENC424J600_PHANA_ADFAULT                  0x2000 
  482 #define ENC424J600_PHANA_ADPAUS1                  0x0800 
  483 #define ENC424J600_PHANA_ADPAUS0                  0x0400 
  484 #define ENC424J600_PHANA_AD100FD                  0x0100 
  485 #define ENC424J600_PHANA_AD100                    0x0080 
  486 #define ENC424J600_PHANA_AD10FD                   0x0040 
  487 #define ENC424J600_PHANA_AD10                     0x0020 
  488 #define ENC424J600_PHANA_ADIEEE                   0x001F 
  489 #define ENC424J600_PHANA_ADIEEE_DEFAULT           0x0001 
  492 #define ENC424J600_PHANLPA_LPNP                   0x8000 
  493 #define ENC424J600_PHANLPA_LPACK                  0x4000 
  494 #define ENC424J600_PHANLPA_LPFAULT                0x2000 
  495 #define ENC424J600_PHANLPA_LPPAUS1                0x0800 
  496 #define ENC424J600_PHANLPA_LPPAUS0                0x0400 
  497 #define ENC424J600_PHANLPA_LP100T4                0x0200 
  498 #define ENC424J600_PHANLPA_LP100FD                0x0100 
  499 #define ENC424J600_PHANLPA_LP100                  0x0080 
  500 #define ENC424J600_PHANLPA_LP10FD                 0x0040 
  501 #define ENC424J600_PHANLPA_LP10                   0x0020 
  502 #define ENC424J600_PHANLPA_LPIEEE                 0x001F 
  505 #define ENC424J600_PHANE_PDFLT                    0x0010 
  506 #define ENC424J600_PHANE_LPARCD                   0x0002 
  507 #define ENC424J600_PHANE_LPANABL                  0x0001 
  510 #define ENC424J600_PHCON2_EDPWRDN                 0x2000 
  511 #define ENC424J600_PHCON2_EDTHRES                 0x0800 
  512 #define ENC424J600_PHCON2_FRCLNK                  0x0004 
  513 #define ENC424J600_PHCON2_EDSTAT                  0x0002 
  516 #define ENC424J600_PHSTAT2_PLRITY                 0x0010 
  519 #define ENC424J600_PHSTAT3_R6                     0x0040 
  520 #define ENC424J600_PHSTAT3_R6_DEFAULT             0x0040 
  521 #define ENC424J600_PHSTAT3_SPDDPX2                0x0010 
  522 #define ENC424J600_PHSTAT3_SPDDPX1                0x0008 
  523 #define ENC424J600_PHSTAT3_SPDDPX0                0x0004 
  526 #define ENC424J600_RSV_UNICAST_FILTER             0x00100000 
  527 #define ENC424J600_RSV_PATTERN_MATCH_FILTER       0x00080000 
  528 #define ENC424J600_RSV_MAGIC_PACKET_FILTER        0x00040000 
  529 #define ENC424J600_RSV_HASH_FILTER                0x00020000 
  530 #define ENC424J600_RSV_NOT_ME_FILTER              0x00010000 
  531 #define ENC424J600_RSV_RUNT_FILTER                0x00008000 
  532 #define ENC424J600_RSV_VLAN_TYPE                  0x00004000 
  533 #define ENC424J600_RSV_UNKNOWN_OPCODE             0x00002000 
  534 #define ENC424J600_RSV_PAUSE_CONTROL_FRAME        0x00001000 
  535 #define ENC424J600_RSV_CONTROL_FRAME              0x00000800 
  536 #define ENC424J600_RSV_DRIBBLE_NIBBLE             0x00000400 
  537 #define ENC424J600_RSV_BROADCAST_PACKET           0x00000200 
  538 #define ENC424J600_RSV_MULTICAST_PACKET           0x00000100 
  539 #define ENC424J600_RSV_RECEIVED_OK                0x00000080 
  540 #define ENC424J600_RSV_LENGTH_OUT_OF_RANGE        0x00000040 
  541 #define ENC424J600_RSV_LENGTH_CHECK_ERROR         0x00000020 
  542 #define ENC424J600_RSV_CRC_ERROR                  0x00000010 
  543 #define ENC424J600_RSV_CARRIER_EVENT              0x00000004 
  544 #define ENC424J600_RSV_PACKET_IGNORED             0x00000001 
  
void enc424j600Tick(NetInterface *interface)
ENC424J600 timer handler.
void enc424j600UpdateMacConfig(NetInterface *interface)
Adjust MAC configuration parameters for proper operation.
void enc424j600ClearBit(NetInterface *interface, uint8_t address, uint16_t mask)
Clear bit field.
void enc424j600EnableIrq(NetInterface *interface)
Enable interrupts.
error_t enc424j600SoftReset(NetInterface *interface)
Reset ENC424J600 controller.
error_t enc424j600SendPacket(NetInterface *interface, const NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
Send a packet.
error_t enc424j600Init(NetInterface *interface)
ENC424J600 controller initialization.
Structure describing a buffer that spans multiple chunks.
const NicDriver enc424j600Driver
ENC424J600 driver.
uint16_t nextPacket
Next packet in the receive buffer.
void enc424j600EventHandler(NetInterface *interface)
ENC424J600 event handler.
void enc424j600WritePhyReg(NetInterface *interface, uint8_t address, uint16_t data)
Write PHY register.
uint16_t enc424j600ReadPhyReg(NetInterface *interface, uint8_t address)
Read PHY register.
uint16_t enc424j600ReadReg(NetInterface *interface, uint8_t address)
Read ENC424J600 register.
ENC424J600 driver context.
void enc424j600DumpPhyReg(NetInterface *interface)
Dump PHY registers for debugging purpose.
void enc424j600SetBit(NetInterface *interface, uint8_t address, uint16_t mask)
Set bit field.
uint32_t enc424j600CalcCrc(const void *data, size_t length)
CRC calculation using the polynomial 0x4C11DB7.
void enc424j600ReadBuffer(NetInterface *interface, uint8_t opcode, uint8_t *data, size_t length)
Read SRAM buffer.
void enc424j600WriteBuffer(NetInterface *interface, uint8_t opcode, const NetBuffer *buffer, size_t offset)
Write SRAM buffer.
bool_t enc424j600IrqHandler(NetInterface *interface)
ENC424J600 interrupt service routine.
void enc424j600WriteReg(NetInterface *interface, uint8_t address, uint16_t data)
Write ENC424J600 register.
Network interface controller abstraction layer.
void enc424j600DisableIrq(NetInterface *interface)
Disable interrupts.
void enc424j600InitHook(NetInterface *interface)
ENC424J600 custom configuration.
void enc424j600DumpReg(NetInterface *interface)
Dump registers for debugging purpose.
error_t enc424j600UpdateMacAddrFilter(NetInterface *interface)
Configure MAC address filtering.
error_t enc424j600ReceivePacket(NetInterface *interface)
Receive a packet.