1 /** @file 2 * 3 * Copyright (c) 2012-2014, ARM Limited. All rights reserved. 4 * 5 * This program and the accompanying materials 6 * are licensed and made available under the terms and conditions of the BSD License 7 * which accompanies this distribution. The full text of the license may be found at 8 * http://opensource.org/licenses/bsd-license.php 9 * 10 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 * 13 **/ 14 15 #ifndef __LAN9118_DXE_HW_H__ 16 #define __LAN9118_DXE_HW_H__ 17 18 /*------------------------------------------------------------------------------ 19 LAN9118 SMCS Registers 20 ------------------------------------------------------------------------------*/ 21 22 // Base address as on the VE board 23 #define LAN9118_BA ((UINT32) PcdGet32(PcdLan9118DxeBaseAddress)) 24 25 /* ------------- Tx and Rx Data and Status Memory Locations ------------------*/ 26 #define LAN9118_RX_DATA (0x00000000 + LAN9118_BA) 27 #define LAN9118_RX_STATUS (0x00000040 + LAN9118_BA) 28 #define LAN9118_RX_STATUS_PEEK (0x00000044 + LAN9118_BA) 29 #define LAN9118_TX_DATA (0x00000020 + LAN9118_BA) 30 #define LAN9118_TX_STATUS (0x00000048 + LAN9118_BA) 31 #define LAN9118_TX_STATUS_PEEK (0x0000004C + LAN9118_BA) 32 33 /* ------------- System Control and Status Registers -------------------------*/ 34 #define LAN9118_ID_REV (0x00000050 + LAN9118_BA) // Chip ID and Revision 35 #define LAN9118_IRQ_CFG (0x00000054 + LAN9118_BA) // Interrupt Configuration 36 #define LAN9118_INT_STS (0x00000058 + LAN9118_BA) // Interrupt Status 37 #define LAN9118_INT_EN (0x0000005C + LAN9118_BA) // Interrupt Enable 38 //#define LAN9118_RESERVED (0x00000060) 39 #define LAN9118_BYTE_TEST (0x00000064 + LAN9118_BA) // Byte Order Test 40 #define LAN9118_FIFO_INT (0x00000068 + LAN9118_BA) // FIFO Level Interrupts 41 #define LAN9118_RX_CFG (0x0000006C + LAN9118_BA) // Receive Configuration 42 #define LAN9118_TX_CFG (0x00000070 + LAN9118_BA) // Transmit Configuration 43 #define LAN9118_HW_CFG (0x00000074 + LAN9118_BA) // Hardware Configuration 44 #define LAN9118_RX_DP_CTL (0x00000078 + LAN9118_BA) // Receive Data-Path Configuration 45 #define LAN9118_RX_FIFO_INF (0x0000007C + LAN9118_BA) // Receive FIFO Information 46 #define LAN9118_TX_FIFO_INF (0x00000080 + LAN9118_BA) // Transmit FIFO Information 47 #define LAN9118_PMT_CTRL (0x00000084 + LAN9118_BA) // Power Management Control 48 #define LAN9118_GPIO_CFG (0x00000088 + LAN9118_BA) // General Purpose IO Configuration 49 #define LAN9118_GPT_CFG (0x0000008C + LAN9118_BA) // General Purpose Timer Configuration 50 #define LAN9118_GPT_CNT (0x00000090 + LAN9118_BA) // General Purpose Timer Current Count 51 #define LAN9118_WORD_SWAP (0x00000098 + LAN9118_BA) // Word Swap Control 52 #define LAN9118_FREE_RUN (0x0000009C + LAN9118_BA) // Free-Run 25MHz Counter 53 #define LAN9118_RX_DROP (0x000000A0 + LAN9118_BA) // Receiver Dropped Frames Counter 54 #define LAN9118_MAC_CSR_CMD (0x000000A4 + LAN9118_BA) // MAC CSR Synchronizer Command 55 #define LAN9118_MAC_CSR_DATA (0x000000A8 + LAN9118_BA) // MAC CSR Synchronizer Data 56 #define LAN9118_AFC_CFG (0x000000AC + LAN9118_BA) // Automatic Flow Control Configuration 57 #define LAN9118_E2P_CMD (0x000000B0 + LAN9118_BA) // EEPROM Command 58 #define LAN9118_E2P_DATA (0x000000B4 + LAN9118_BA) // EEPROM Data 59 60 /* 61 * Required delays following write cycles (number of BYTE_TEST reads) 62 * Taken from Table 6.1 in Revision 1.5 (07-11-08) of the LAN9118 datasheet. 63 * Where no delay listed, 0 has been assumed. 64 */ 65 #define LAN9118_RX_DATA_WR_DELAY 0 66 #define LAN9118_RX_STATUS_WR_DELAY 0 67 #define LAN9118_RX_STATUS_PEEK_WR_DELAY 0 68 #define LAN9118_TX_DATA_WR_DELAY 0 69 #define LAN9118_TX_STATUS_WR_DELAY 0 70 #define LAN9118_TX_STATUS_PEEK_WR_DELAY 0 71 #define LAN9118_ID_REV_WR_DELAY 0 72 #define LAN9118_IRQ_CFG_WR_DELAY 3 73 #define LAN9118_INT_STS_WR_DELAY 2 74 #define LAN9118_INT_EN_WR_DELAY 1 75 #define LAN9118_BYTE_TEST_WR_DELAY 0 76 #define LAN9118_FIFO_INT_WR_DELAY 1 77 #define LAN9118_RX_CFG_WR_DELAY 1 78 #define LAN9118_TX_CFG_WR_DELAY 1 79 #define LAN9118_HW_CFG_WR_DELAY 1 80 #define LAN9118_RX_DP_CTL_WR_DELAY 1 81 #define LAN9118_RX_FIFO_INF_WR_DELAY 0 82 #define LAN9118_TX_FIFO_INF_WR_DELAY 3 83 #define LAN9118_PMT_CTRL_WR_DELAY 7 84 #define LAN9118_GPIO_CFG_WR_DELAY 1 85 #define LAN9118_GPT_CFG_WR_DELAY 1 86 #define LAN9118_GPT_CNT_WR_DELAY 3 87 #define LAN9118_WORD_SWAP_WR_DELAY 1 88 #define LAN9118_FREE_RUN_WR_DELAY 4 89 #define LAN9118_RX_DROP_WR_DELAY 0 90 #define LAN9118_MAC_CSR_CMD_WR_DELAY 1 91 #define LAN9118_MAC_CSR_DATA_WR_DELAY 1 92 #define LAN9118_AFC_CFG_WR_DELAY 1 93 #define LAN9118_E2P_CMD_WR_DELAY 1 94 #define LAN9118_E2P_DATA_WR_DELAY 1 95 96 /* 97 * Required delays following read cycles (number of BYTE_TEST reads) 98 * Taken from Table 6.2 in Revision 1.5 (07-11-08) of the LAN9118 datasheet. 99 * Where no delay listed, 0 has been assumed. 100 */ 101 #define LAN9118_RX_DATA_RD_DELAY 3 102 #define LAN9118_RX_STATUS_RD_DELAY 3 103 #define LAN9118_RX_STATUS_PEEK_RD_DELAY 0 104 #define LAN9118_TX_DATA_RD_DELAY 0 105 #define LAN9118_TX_STATUS_RD_DELAY 3 106 #define LAN9118_TX_STATUS_PEEK_RD_DELAY 0 107 #define LAN9118_ID_REV_RD_DELAY 0 108 #define LAN9118_IRQ_CFG_RD_DELAY 0 109 #define LAN9118_INT_STS_RD_DELAY 0 110 #define LAN9118_INT_EN_RD_DELAY 0 111 #define LAN9118_BYTE_TEST_RD_DELAY 0 112 #define LAN9118_FIFO_INT_RD_DELAY 0 113 #define LAN9118_RX_CFG_RD_DELAY 0 114 #define LAN9118_TX_CFG_RD_DELAY 0 115 #define LAN9118_HW_CFG_RD_DELAY 0 116 #define LAN9118_RX_DP_CTL_RD_DELAY 0 117 #define LAN9118_RX_FIFO_INF_RD_DELAY 0 118 #define LAN9118_TX_FIFO_INF_RD_DELAY 0 119 #define LAN9118_PMT_CTRL_RD_DELAY 0 120 #define LAN9118_GPIO_CFG_RD_DELAY 0 121 #define LAN9118_GPT_CFG_RD_DELAY 0 122 #define LAN9118_GPT_CNT_RD_DELAY 0 123 #define LAN9118_WORD_SWAP_RD_DELAY 0 124 #define LAN9118_FREE_RUN_RD_DELAY 0 125 #define LAN9118_RX_DROP_RD_DELAY 4 126 #define LAN9118_MAC_CSR_CMD_RD_DELAY 0 127 #define LAN9118_MAC_CSR_DATA_RD_DELAY 0 128 #define LAN9118_AFC_CFG_RD_DELAY 0 129 #define LAN9118_E2P_CMD_RD_DELAY 0 130 #define LAN9118_E2P_DATA_RD_DELAY 0 131 132 // Receiver Status bits 133 #define RXSTATUS_CRC_ERROR BIT1 // Cyclic Redundancy Check Error 134 #define RXSTATUS_DB BIT2 // Dribbling bit: Frame had non-integer multiple of 8bits 135 #define RXSTATUS_MII_ERROR BIT3 // Receive error during interception 136 #define RXSTATUS_RXW_TO BIT4 // Incomming frame larger than 2kb 137 #define RXSTATUS_FT BIT5 // 1: Ether type / 0: 802.3 type frame 138 #define RXSTATUS_LCOLL BIT6 // Late collision detected 139 #define RXSTATUS_FTL BIT7 // Frame longer than Ether type 140 #define RXSTATUS_MCF BIT10 // Frame has Multicast Address 141 #define RXSTATUS_RUNT BIT11 // Bad frame 142 #define RXSTATUS_LE BIT12 // Actual length of frame different than it claims 143 #define RXSTATUS_BCF BIT13 // Frame has Broadcast Address 144 #define RXSTATUS_ES BIT15 // Reports any error from bits 1,6,7 and 11 145 #define RXSTATUS_PL_MASK (0x3FFF0000) // Packet length bit mask 146 #define GET_RXSTATUS_PACKET_LENGTH(RxStatus) (((RxStatus) >> 16) & 0x3FFF) // Packet length bit mask 147 #define RXSTATUS_FILT_FAIL BIT30 // The frame failed filtering test 148 149 // Transmitter Status bits 150 #define TXSTATUS_DEF BIT0 // Packet tx was deferred 151 #define TXSTATUS_EDEF BIT2 // Tx ended because of excessive deferral (> 24288 bit times) 152 #define TXSTATUS_CC_MASK (0x00000078) // Collision Count (before Tx) bit mask 153 #define TXSTATUS_ECOLL BIT8 // Tx ended because of Excessive Collisions (makes CC_MASK invalid after 16 collisions) 154 #define TXSTATUS_LCOLL BIT9 // Packet Tx aborted after coll window of 64 bytes 155 #define TXSTATUS_NO_CA BIT10 // Carrier signal not present during Tx (bad?) 156 #define TXSTATUS_LOST_CA BIT11 // Lost carrier during Tx 157 #define TXSTATUS_ES BIT15 // Reports any errors from bits 1,2,8,9,10 and 11 158 #define TXSTATUS_PTAG_MASK (0xFFFF0000) // Mask for Unique ID of packets (So we know who the packets are for) 159 160 // ID_REV register bits 161 #define IDREV_ID ((Lan9118MmioRead32(LAN9118_ID_REV) & 0xFFFF0000) >> 16) 162 #define IDREV_REV (Lan9118MmioRead32(LAN9118_ID_REV) & 0x0000FFFF) 163 164 // Interrupt Config Register bits 165 #define IRQCFG_IRQ_TYPE BIT0 // IRQ Buffer type 166 #define IRQCFG_IRQ_POL BIT4 // IRQ Polarity 167 #define IRQCFG_IRQ_EN BIT8 // Enable external interrupt 168 #define IRQCFG_IRQ_INT BIT12 // State of internal interrupts line 169 #define IRQCFG_INT_DEAS_STS BIT13 // State of deassertion interval 170 #define IRQCFG_INT_DEAS_CLR BIT14 // Clear the deassertion counter 171 #define IRQCFG_INT_DEAS_MASK (0xFF000000) // Interrupt deassertion interval value mask 172 173 // Interrupt Status Register bits 174 #define INSTS_GPIO_MASK (0x7) // GPIO interrupts mask 175 #define INSTS_RSFL (0x8) // Rx Status FIFO Level reached 176 #define INSTS_RSFF BIT4 // Rx Status FIFO full 177 #define INSTS_RXDF_INT BIT6 // Rx Frame dropped 178 #define INSTS_TSFL BIT7 // Tx Status FIFO Level reached 179 #define INSTS_TSFF BIT8 // Tx Status FIFO full 180 #define INSTS_TDFA BIT9 // Tx Data FIFO Level exceeded 181 #define INSTS_TDFO BIT10 // Tx Data FIFO full 182 #define INSTS_TXE BIT13 // Transmitter Error 183 #define INSTS_RXE BIT14 // Receiver Error 184 #define INSTS_RWT BIT15 // Packet > 2048 bytes received 185 #define INSTS_TXSO BIT16 // Tx Status FIFO Overflow 186 #define INSTS_PME_INT BIT17 // PME Signal detected 187 #define INSTS_PHY_INT BIT18 // Indicates PHY Interrupt 188 #define INSTS_GPT_INT BIT19 // GP Timer wrapped past 0xFFFF 189 #define INSTS_RXD_INT BIT20 // Indicates that amount of data written to RX_CFG was cleared 190 #define INSTS_TX_IOC BIT21 // Finished loading IOC flagged buffer to Tx FIFO 191 #define INSTS_RXDFH_INT BIT23 // Rx Dropped frames went past 0x7FFFFFFF 192 #define INSTS_RXSTOP_INT BIT24 // Rx was stopped 193 #define INSTS_TXSTOP_INT BIT25 // Tx was stopped 194 #define INSTS_SW_INT BIT31 // Software Interrupt occurred 195 196 // Interrupt Enable Register bits 197 198 199 // Hardware Config Register bits 200 #define HWCFG_SRST BIT0 // Software Reset bit (SC) 201 #define HWCFG_SRST_TO BIT1 // Software Reset Timeout bit (RO) 202 #define HWCFG_BMODE BIT2 // 32/16 bit Mode bit (RO) 203 #define HWCFG_TX_FIFO_SIZE_MASK (~ (UINT32)0xF0000) // Mask to Clear FIFO Size 204 #define HWCFG_MBO BIT20 // Must Be One bit 205 206 // Power Management Control Register 207 #define MPTCTRL_READY BIT0 // Device ready indicator 208 #define MPTCTRL_PME_EN BIT1 // Enable external PME signals 209 #define MPTCTRL_PME_POL BIT2 // Set polarity of PME signals 210 #define MPTCTRL_PME_IND BIT3 // Signal type of PME (refer to Spec) 211 #define MPTCTRL_WUPS_MASK (0x18) // Wake up status indicator mask 212 #define MPTCTRL_PME_TYPE BIT6 // PME Buffer type (Open Drain or Push-Pull) 213 #define MPTCTRL_ED_EN BIT8 // Energy-detect enable 214 #define MPTCTRL_WOL_EN BIT9 // Enable wake-on-lan 215 #define MPTCTRL_PHY_RST BIT10 // Reset the PHY 216 #define MPTCTRL_PM_MODE_MASK (BIT12 | BIT13) // Set the power mode 217 218 // PHY control register bits 219 #define PHYCR_COLL_TEST BIT7 // Collision test enable 220 #define PHYCR_DUPLEX_MODE BIT8 // Set Duplex Mode 221 #define PHYCR_RST_AUTO BIT9 // Restart Auto-Negotiation of Link abilities 222 #define PHYCR_PD BIT11 // Power-Down switch 223 #define PHYCR_AUTO_EN BIT12 // Auto-Negotiation Enable 224 #define PHYCR_SPEED_SEL BIT13 // Link Speed Selection 225 #define PHYCR_LOOPBK BIT14 // Set loopback mode 226 #define PHYCR_RESET BIT15 // Do a PHY reset 227 228 // PHY status register bits 229 #define PHYSTS_EXT_CAP BIT0 // Extended Capabilities Register capability 230 #define PHYSTS_JABBER BIT1 // Jabber condition detected 231 #define PHYSTS_LINK_STS BIT2 // Link Status 232 #define PHYSTS_AUTO_CAP BIT3 // Auto-Negotiation Capability 233 #define PHYSTS_REMOTE_FAULT BIT4 // Remote fault detected 234 #define PHYSTS_AUTO_COMP BIT5 // Auto-Negotiation Completed 235 #define PHYSTS_10BASET_HDPLX BIT11 // 10Mbps Half-Duplex ability 236 #define PHYSTS_10BASET_FDPLX BIT12 // 10Mbps Full-Duplex ability 237 #define PHYSTS_100BASETX_HDPLX BIT13 // 100Mbps Half-Duplex ability 238 #define PHYSTS_100BASETX_FDPLX BIT14 // 100Mbps Full-Duplex ability 239 #define PHYSTS_100BASE_T4 BIT15 // Base T4 ability 240 241 // PHY Auto-Negotiation advertisement 242 #define PHYANA_SEL_MASK ((UINT32)0x1F) // Link type selector 243 #define PHYANA_10BASET BIT5 // Advertise 10BASET capability 244 #define PHYANA_10BASETFD BIT6 // Advertise 10BASET Full duplex capability 245 #define PHYANA_100BASETX BIT7 // Advertise 100BASETX capability 246 #define PHYANA_100BASETXFD BIT8 // Advertise 100 BASETX Full duplex capability 247 #define PHYANA_PAUSE_OP_MASK (3 << 10) // Advertise PAUSE frame capability 248 #define PHYANA_REMOTE_FAULT BIT13 // Remote fault detected 249 250 251 // PHY Auto-Negotiation Link Partner Ability 252 253 // PHY Auto-Negotiation Expansion 254 255 // PHY Mode control/status 256 257 // PHY Special Modes 258 259 // PHY Special control/status 260 261 // PHY Interrupt Source Flags 262 263 // PHY Interrupt Mask 264 265 // PHY Super Special control/status 266 #define PHYSSCS_HCDSPEED_MASK (7 << 2) // Speed indication 267 #define PHYSSCS_AUTODONE BIT12 // Auto-Negotiation Done 268 269 270 // MAC control register bits 271 #define MACCR_RX_EN BIT2 // Enable Receiver bit 272 #define MACCR_TX_EN BIT3 // Enable Transmitter bit 273 #define MACCR_DFCHK BIT5 // Deferral Check bit 274 #define MACCR_PADSTR BIT8 // Automatic Pad Stripping bit 275 #define MACCR_BOLMT_MASK (0xC0) // Back-Off limit mask 276 #define MACCR_DISRTY BIT10 // Disable Transmit Retry bit 277 #define MACCR_BCAST BIT11 // Disable Broadcast Frames bit 278 #define MACCR_LCOLL BIT12 // Late Collision Control bit 279 #define MACCR_HPFILT BIT13 // Hash/Perfect Filtering Mode bit 280 #define MACCR_HO BIT15 // Hash Only Filtering Mode 281 #define MACCR_PASSBAD BIT16 // Receive all frames that passed filter bit 282 #define MACCR_INVFILT BIT17 // Enable Inverse Filtering bit 283 #define MACCR_PRMS BIT18 // Promiscuous Mode bit 284 #define MACCR_MCPAS BIT19 // Pass all Multicast packets bit 285 #define MACCR_FDPX BIT20 // Full Duplex Mode bit 286 #define MACCR_LOOPBK BIT21 // Loopback operation mode bit 287 #define MACCR_RCVOWN BIT23 // Disable Receive Own frames bit 288 #define MACCR_RX_ALL BIT31 // Receive all Packets and route to Filter 289 290 // Wake-Up Control and Status Register 291 #define WUCSR_MPEN BIT1 // Magic Packet enable (allow wake from Magic P) 292 #define WUCSR_WUEN BIT2 // Allow remote wake up using Wake-Up Frames 293 #define WUCSR_MPR_MASK (0x10) // Received Magic Packet 294 #define WUCSR_WUFR_MASK (0x20) // Received Wake-Up Frame 295 #define WUCSR_GUE BIT9 // Enable wake on global unicast frames 296 297 // RX Configuration Register bits 298 #define RXCFG_RXDOFF_MASK (0x1F00) // Rx Data Offset in Bytes 299 #define RXCFG_RX_DUMP BIT15 // Clear Rx data and status FIFOs 300 #define RXCFG_RX_DMA_CNT_MASK (0x0FFF0000) // Amount of data to be read from Rx FIFO 301 #define RXCFG_RX_DMA_CNT(cnt) (((cnt) & 0xFFF) << 16) // Amount of data to be read from Rx FIFO 302 #define RXCFG_RX_END_ALIGN_MASK (0xC0000000) // Alignment to preserve 303 304 // TX Configuration Register bits 305 #define TXCFG_STOP_TX BIT0 // Stop the transmitter 306 #define TXCFG_TX_ON BIT1 // Start the transmitter 307 #define TXCFG_TXSAO BIT2 // Tx Status FIFO full 308 #define TXCFG_TXD_DUMP BIT14 // Clear Tx Data FIFO 309 #define TXCFG_TXS_DUMP BIT15 // Clear Tx Status FIFO 310 311 // Rx FIFO Information Register bits 312 #define RXFIFOINF_RXDUSED_MASK (0xFFFF) // Rx Data FIFO Used Space 313 #define RXFIFOINF_RXSUSED_MASK (0xFF0000) // Rx Status FIFO Used Space 314 315 // Tx FIFO Information Register bits 316 #define TXFIFOINF_TDFREE_MASK (0xFFFF) // Tx Data FIFO Free Space 317 #define TXFIFOINF_TXSUSED_MASK (0xFF0000) // Tx Status FIFO Used Space 318 319 // E2P Register 320 #define E2P_EPC_BUSY BIT31 321 #define E2P_EPC_CMD_READ (0) 322 #define E2P_EPC_TIMEOUT BIT9 323 #define E2P_EPC_MAC_ADDRESS_LOADED BIT8 324 #define E2P_EPC_ADDRESS(address) ((address) & 0xFFFF) 325 326 // GPIO Configuration register 327 #define GPIO_GPIO0_PUSH_PULL BIT16 328 #define GPIO_GPIO1_PUSH_PULL BIT17 329 #define GPIO_GPIO2_PUSH_PULL BIT18 330 #define GPIO_LED1_ENABLE BIT28 331 #define GPIO_LED2_ENABLE BIT29 332 #define GPIO_LED3_ENABLE BIT30 333 334 // MII_ACC bits 335 #define MII_ACC_MII_BUSY BIT0 336 #define MII_ACC_MII_WRITE BIT1 337 #define MII_ACC_MII_READ 0 338 339 #define MII_ACC_PHY_VALUE BIT11 340 #define MII_ACC_MII_REG_INDEX(index) (((index) & 0x1F) << 6) 341 342 // 343 // PHY Control Indexes 344 // 345 #define PHY_INDEX_BASIC_CTRL 0 346 #define PHY_INDEX_BASIC_STATUS 1 347 #define PHY_INDEX_ID1 2 348 #define PHY_INDEX_ID2 3 349 #define PHY_INDEX_AUTO_NEG_ADVERT 4 350 #define PHY_INDEX_AUTO_NEG_LINK_ABILITY 5 351 #define PHY_INDEX_AUTO_NEG_EXP 6 352 #define PHY_INDEX_MODE 17 353 #define PHY_INDEX_SPECIAL_MODES 18 354 #define PHY_INDEX_SPECIAL_CTLR 27 355 #define PHY_INDEX_INT_SRC 29 356 #define PHY_INDEX_INT_MASK 30 357 #define PHY_INDEX_SPECIAL_PHY_CTLR 31 358 359 // Indirect MAC Indexes 360 #define INDIRECT_MAC_INDEX_CR 1 361 #define INDIRECT_MAC_INDEX_ADDRH 2 362 #define INDIRECT_MAC_INDEX_ADDRL 3 363 #define INDIRECT_MAC_INDEX_HASHH 4 364 #define INDIRECT_MAC_INDEX_HASHL 5 365 #define INDIRECT_MAC_INDEX_MII_ACC 6 366 #define INDIRECT_MAC_INDEX_MII_DATA 7 367 368 // 369 // MAC CSR Synchronizer Command register 370 // 371 #define MAC_CSR_BUSY BIT31 372 #define MAC_CSR_READ BIT30 373 #define MAC_CSR_WRITE 0 374 #define MAC_CSR_ADDR(Addr) ((Addr) & 0xFF) 375 376 // 377 // TX Packet Format 378 // 379 #define TX_CMD_A_COMPLETION_INT BIT31 380 #define TX_CMD_A_FIRST_SEGMENT BIT13 381 #define TX_CMD_A_LAST_SEGMENT BIT12 382 #define TX_CMD_A_BUFF_SIZE(size) ((size) & 0x000003FF) 383 #define TX_CMD_A_DATA_START_OFFSET(offset) (((offset) & 0x1F) << 16) 384 #define TX_CMD_B_PACKET_LENGTH(size) ((size) & 0x000003FF) 385 #define TX_CMD_B_PACKET_TAG(tag) (((tag) & 0x3FF) << 16) 386 387 // Hardware Configuration Register 388 #define HW_CFG_TX_FIFO_SIZE_MASK (0xF << 16) 389 #define HW_CFG_TX_FIFO_SIZE(size) (((size) & 0xF) << 16) 390 391 // EEPROM Definition 392 #define EEPROM_EXTERNAL_SERIAL_EEPROM 0xA5 393 394 // 395 // Conditional compilation flags 396 // 397 //#define EVAL_PERFORMANCE 398 399 400 #endif /* __LAN9118_DXE_HDR_H__ */ 401