31   uint32_t rx_fifo_data;
    32   uint32_t rx_fifo_data_aliases [7];
    33   uint32_t tx_fifo_data;
    34   uint32_t tx_fifo_data_aliases [7];
    35   uint32_t rx_fifo_status;
    36   uint32_t rx_fifo_status_peek;
    37   uint32_t tx_fifo_status;
    38   uint32_t tx_fifo_status_peek;
    61   uint32_t mac_csr_data;
    71 #ifdef SMSC9218I_BIG_ENDIAN_SUPPORT    85 #ifdef SMSC9218I_BIG_ENDIAN_SUPPORT    86   #define SMSC9218I_BIT_POS(pos) (pos)    88   #define SMSC9218I_BIT_POS(pos) \    90       ((pos) > 23 ? (pos) - 24 : (pos) - 8) \    91         : ((pos) > 7 ? (pos) + 8 : (pos) + 24))    94 #define SMSC9218I_FLAG(pos) \    95   (1U << SMSC9218I_BIT_POS(pos))    97 #define SMSC9218I_FIELD_8(val, pos) \    98   (((val) & 0xff) << SMSC9218I_BIT_POS(pos))   100 #define SMSC9218I_GET_FIELD_8(reg, pos) \   101   (((reg) >> SMSC9218I_BIT_POS(pos)) & 0xff)   103 #define SMSC9218I_FIELD_16(val, pos) \   104   (SMSC9218I_FIELD_8((val) >> 8, (pos) + 8) \   105     | SMSC9218I_FIELD_8((val), pos))   107 #define SMSC9218I_GET_FIELD_16(reg, pos) \   108   ((SMSC9218I_GET_FIELD_8(reg, (pos) + 8) << 8) \   109     | SMSC9218I_GET_FIELD_8(reg, pos))   111 #ifdef SMSC9218I_BIG_ENDIAN_SUPPORT   112   #define SMSC9218I_SWAP(val) (val)   114   #define SMSC9218I_SWAP(val) \   115     ((((val) >> 24) & 0xff) \   116       | ((((val) >> 16) & 0xff) << 8) \   117       | ((((val) >> 8) & 0xff) << 16) \   118       | (((val) & 0xff) << 24))   126 #define SMSC9218I_RX_STS_FILTER_FAIL SMSC9218I_FLAG(30)   127 #define SMSC9218I_RX_STS_GET_LENGTH(reg) (SMSC9218I_GET_FIELD_16(reg, 16) & 0x3fff)   128 #define SMSC9218I_RX_STS_ERROR SMSC9218I_FLAG(15)   129 #define SMSC9218I_RX_STS_BROADCAST SMSC9218I_FLAG(13)   130 #define SMSC9218I_RX_STS_ERROR_LENGTH SMSC9218I_FLAG(12)   131 #define SMSC9218I_RX_STS_ERROR_RUNT_FRAME SMSC9218I_FLAG(11)   132 #define SMSC9218I_RX_STS_MULTICAST SMSC9218I_FLAG(10)   133 #define SMSC9218I_RX_STS_ERROR_TOO_LONG SMSC9218I_FLAG(7)   134 #define SMSC9218I_RX_STS_ERROR_COLLISION SMSC9218I_FLAG(6)   135 #define SMSC9218I_RX_STS_TYPE SMSC9218I_FLAG(5)   136 #define SMSC9218I_RX_STS_WATCHDOG SMSC9218I_FLAG(4)   137 #define SMSC9218I_RX_STS_ERROR_MII SMSC9218I_FLAG(3)   138 #define SMSC9218I_RX_STS_DRIBBLING_BIT SMSC9218I_FLAG(2)   139 #define SMSC9218I_RX_STS_ERROR_CRC SMSC9218I_FLAG(1)   148 #define SMSC9218I_TX_STS_GET_TAG(reg) SMSC9218I_GET_FIELD_16(reg, 16)   149 #define SMSC9218I_TX_STS_ERROR SMSC9218I_FLAG(15)   150 #define SMSC9218I_TX_STS_ERROR_LOSS_OF_CARRIER SMSC9218I_FLAG(11)   151 #define SMSC9218I_TX_STS_ERROR_NO_CARRIER SMSC9218I_FLAG(10)   152 #define SMSC9218I_TX_STS_ERROR_LATE_COLLISION SMSC9218I_FLAG(9)   153 #define SMSC9218I_TX_STS_ERROR_EXCESSIVE_COLLISIONS SMSC9218I_FLAG(8)   154 #define SMSC9218I_TX_STS_ERROR_EXCESSIVE_DEFERRAL SMSC9218I_FLAG(2)   155 #define SMSC9218I_TX_STS_ERROR_DEFERRED SMSC9218I_FLAG(0)   164 #define SMSC9218I_TX_A_IOC SMSC9218I_FLAG(31)   165 #define SMSC9218I_TX_A_END_ALIGN_4 0   166 #define SMSC9218I_TX_A_END_ALIGN_16 SMSC9218I_FLAG(24)   167 #define SMSC9218I_TX_A_END_ALIGN_32 SMSC9218I_FLAG(25)   168 #define SMSC9218I_TX_A_DOFF(val) SMSC9218I_FIELD_8(val, 16)   169 #define SMSC9218I_TX_A_FIRST SMSC9218I_FLAG(13)   170 #define SMSC9218I_TX_A_LAST SMSC9218I_FLAG(12)   171 #define SMSC9218I_TX_A_FRAGMENT_LENGTH(val) SMSC9218I_FIELD_16(val, 0)   180 #define SMSC9218I_TX_B_TAG(val) SMSC9218I_FIELD_16(val, 16)   181 #define SMSC9218I_TX_B_GET_TAG(reg) SMSC9218I_GET_FIELD_16(reg, 16)   182 #define SMSC9218I_TX_B_DISABLE_CRC SMSC9218I_FLAG(13)   183 #define SMSC9218I_TX_B_DISABLE_PAD SMSC9218I_FLAG(12)   184 #define SMSC9218I_TX_B_FRAME_LENGTH(val) SMSC9218I_FIELD_16(val, 0)   193 #define SMSC9218I_ID_REV_GET_ID(reg) SMSC9218I_GET_FIELD_16(reg, 16)   194 #define SMSC9218I_ID_REV_GET_REV(reg) SMSC9218I_GET_FIELD_16(reg, 0)   195 #define SMSC9218I_ID_REV_ID_CHIP_118 0x0118U   196 #define SMSC9218I_ID_REV_ID_CHIP_218 0x118aU   205 #define SMSC9218I_IRQ_CFG_INT_DEAS(val) SMSC9218I_FIELD_8(val, 24)   206 #define SMSC9218I_IRQ_CFG_GET_INT_DEAS(reg) SMSC9218I_GET_FIELD_8(reg, 24)   207 #define SMSC9218I_IRQ_CFG_INT_DEAS_CLR SMSC9218I_FLAG(14)   208 #define SMSC9218I_IRQ_CFG_INT_DEAS_STS SMSC9218I_FLAG(13)   209 #define SMSC9218I_IRQ_CFG_IRQ_INT SMSC9218I_FLAG(12)   210 #define SMSC9218I_IRQ_CFG_IRQ_EN SMSC9218I_FLAG(8)   211 #define SMSC9218I_IRQ_CFG_IRQ_POL SMSC9218I_FLAG(4)   212 #define SMSC9218I_IRQ_CFG_IRQ_TYPE SMSC9218I_FLAG(0)   221 #define SMSC9218I_INT_SW SMSC9218I_FLAG(31)   222 #define SMSC9218I_INT_TXSTOP SMSC9218I_FLAG(25)   223 #define SMSC9218I_INT_RXSTOP SMSC9218I_FLAG(24)   224 #define SMSC9218I_INT_RXDFH SMSC9218I_FLAG(23)   225 #define SMSC9218I_INT_TIOC SMSC9218I_FLAG(21)   226 #define SMSC9218I_INT_RXD SMSC9218I_FLAG(20)   227 #define SMSC9218I_INT_GPT SMSC9218I_FLAG(19)   228 #define SMSC9218I_INT_PHY SMSC9218I_FLAG(18)   229 #define SMSC9218I_INT_PME SMSC9218I_FLAG(17)   230 #define SMSC9218I_INT_TXSO SMSC9218I_FLAG(16)   231 #define SMSC9218I_INT_RWT SMSC9218I_FLAG(15)   232 #define SMSC9218I_INT_RXE SMSC9218I_FLAG(14)   233 #define SMSC9218I_INT_TXE SMSC9218I_FLAG(13)   234 #define SMSC9218I_INT_TDFO SMSC9218I_FLAG(10)   235 #define SMSC9218I_INT_TDFA SMSC9218I_FLAG(9)   236 #define SMSC9218I_INT_TSFF SMSC9218I_FLAG(8)   237 #define SMSC9218I_INT_TSFL SMSC9218I_FLAG(7)   238 #define SMSC9218I_INT_RSFF SMSC9218I_FLAG(4)   239 #define SMSC9218I_INT_RSFL SMSC9218I_FLAG(3)   240 #define SMSC9218I_INT_GPIO2 SMSC9218I_FLAG(2)   241 #define SMSC9218I_INT_GPIO1 SMSC9218I_FLAG(1)   242 #define SMSC9218I_INT_GPIO0 SMSC9218I_FLAG(0)   251 #define SMSC9218I_BYTE_TEST SMSC9218I_SWAP(0x87654321U)   260 #define SMSC9218I_FIFO_INT_TDAL(val) SMSC9218I_FIELD_8(val, 24)   261 #define SMSC9218I_FIFO_INT_GET_TDAL(reg) SMSC9218I_GET_FIELD_8(reg, 24)   262 #define SMSC9218I_FIFO_INT_TSL(val) SMSC9218I_FIELD_8(val, 16)   263 #define SMSC9218I_FIFO_INT_GET_TSL(reg) SMSC9218I_GET_FIELD_8(reg, 16)   264 #define SMSC9218I_FIFO_INT_RSL(val) SMSC9218I_FIELD_8(val, 0)   265 #define SMSC9218I_FIFO_INT_GET_RSL(reg) SMSC9218I_GET_FIELD_8(reg, 0)   274 #define SMSC9218I_RX_CFG_END_ALIGN_4 0   275 #define SMSC9218I_RX_CFG_END_ALIGN_16 SMSC9218I_FLAG(30)   276 #define SMSC9218I_RX_CFG_END_ALIGN_32 SMSC9218I_FLAG(31)   277 #define SMSC9218I_RX_CFG_DMA_CNT(val) SMSC9218I_FIELD_8(val, 24)   278 #define SMSC9218I_RX_CFG_GET_DMA_CNT(reg) SMSC9218I_GET_FIELD_8(reg, 24)   279 #define SMSC9218I_RX_CFG_DUMP SMSC9218I_FLAG(15)   280 #define SMSC9218I_RX_CFG_DOFF(val) SMSC9218I_FIELD_8(val, 8)   281 #define SMSC9218I_RX_CFG_GET_DOFF(reg) SMSC9218I_GET_FIELD_8(reg, 8)   290 #define SMSC9218I_TX_CFG_SDUMP SMSC9218I_FLAG(15)   291 #define SMSC9218I_TX_CFG_DDUMP SMSC9218I_FLAG(14)   292 #define SMSC9218I_TX_CFG_SAO SMSC9218I_FLAG(2)   293 #define SMSC9218I_TX_CFG_ON SMSC9218I_FLAG(1)   294 #define SMSC9218I_TX_CFG_STOP SMSC9218I_FLAG(0)   303 #define SMSC9218I_HW_CFG_LED_3 SMSC9218I_FLAG(30)   304 #define SMSC9218I_HW_CFG_LED_2 SMSC9218I_FLAG(29)   305 #define SMSC9218I_HW_CFG_LED_1 SMSC9218I_FLAG(28)   306 #define SMSC9218I_HW_CFG_AMDIX SMSC9218I_FLAG(24)   307 #define SMSC9218I_HW_CFG_MBO SMSC9218I_FLAG(20)   308 #define SMSC9218I_HW_CFG_TX_FIF_SZ(val) SMSC9218I_FIELD_8(val, 16)   309 #define SMSC9218I_HW_CFG_GET_TX_FIF_SZ(reg) SMSC9218I_GET_FIELD_8(reg, 16)   310 #define SMSC9218I_HW_CFG_BITMD_32 SMSC9218I_FLAG(2)   311 #define SMSC9218I_HW_CFG_SRST_TO SMSC9218I_FLAG(1)   312 #define SMSC9218I_HW_CFG_SRST SMSC9218I_FLAG(0)   321 #define SMSC9218I_RX_DP_CTRL_FFWD SMSC9218I_FLAG(31)   330 #define SMSC9218I_RX_FIFO_INF_GET_SUSED(reg) SMSC9218I_GET_FIELD_8(reg, 16)   331 #define SMSC9218I_RX_FIFO_INF_GET_DUSED(reg) SMSC9218I_GET_FIELD_16(reg, 0)   340 #define SMSC9218I_TX_FIFO_INF_GET_SUSED(reg) SMSC9218I_GET_FIELD_8(reg, 16)   341 #define SMSC9218I_TX_FIFO_INF_GET_FREE(reg) SMSC9218I_GET_FIELD_16(reg, 0)   350 #define SMSC9218I_PMT_CTRL_PM_MODE_D0 0   351 #define SMSC9218I_PMT_CTRL_PM_MODE_D1 SMSC9218I_FLAG(12)   352 #define SMSC9218I_PMT_CTRL_PM_MODE_D2 SMSC9218I_FLAG(13)   353 #define SMSC9218I_PMT_CTRL_PHY_RST SMSC9218I_FLAG(10)   354 #define SMSC9218I_PMT_CTRL_WOL_EN SMSC9218I_FLAG(9)   355 #define SMSC9218I_PMT_CTRL_ED_EN SMSC9218I_FLAG(8)   356 #define SMSC9218I_PMT_CTRL_PME_TYPE_PUPU SMSC9218I_FLAG(6)   357 #define SMSC9218I_PMT_CTRL_WUPS_NO 0   358 #define SMSC9218I_PMT_CTRL_WUPS_ENERGY SMSC9218I_FLAG(4)   359 #define SMSC9218I_PMT_CTRL_WUPS_MAGIC SMSC9218I_FLAG(5)   360 #define SMSC9218I_PMT_CTRL_PME_IND SMSC9218I_FLAG(3)   361 #define SMSC9218I_PMT_CTRL_PME_POL SMSC9218I_FLAG(2)   362 #define SMSC9218I_PMT_CTRL_PME_EN SMSC9218I_FLAG(1)   363 #define SMSC9218I_PMT_CTRL_READY SMSC9218I_FLAG(0)   372 #define SMSC9218I_GPIO_CFG_LED3 SMSC9218I_FLAG(30)   373 #define SMSC9218I_GPIO_CFG_LED2 SMSC9218I_FLAG(29)   374 #define SMSC9218I_GPIO_CFG_LED1 SMSC9218I_FLAG(28)   375 #define SMSC9218I_GPIO_CFG_GPIO2_INT_POL SMSC9218I_FLAG(26)   376 #define SMSC9218I_GPIO_CFG_GPIO1_INT_POL SMSC9218I_FLAG(25)   377 #define SMSC9218I_GPIO_CFG_GPIO0_INT_POL SMSC9218I_FLAG(24)   378 #define SMSC9218I_GPIO_CFG_GPIOBUF2 SMSC9218I_FLAG(18)   379 #define SMSC9218I_GPIO_CFG_GPIOBUF1 SMSC9218I_FLAG(17)   380 #define SMSC9218I_GPIO_CFG_GPIOBUF0 SMSC9218I_FLAG(16)   381 #define SMSC9218I_GPIO_CFG_GPIODIR2 SMSC9218I_FLAG(10)   382 #define SMSC9218I_GPIO_CFG_GPIODIR1 SMSC9218I_FLAG(9)   383 #define SMSC9218I_GPIO_CFG_GPIODIR0 SMSC9218I_FLAG(8)   384 #define SMSC9218I_GPIO_CFG_GPO4 SMSC9218I_FLAG(4)   385 #define SMSC9218I_GPIO_CFG_GPO3 SMSC9218I_FLAG(3)   386 #define SMSC9218I_GPIO_CFG_GPIO0 SMSC9218I_FLAG(0)   387 #define SMSC9218I_GPIO_CFG_GPIO2 SMSC9218I_FLAG(2)   388 #define SMSC9218I_GPIO_CFG_GPIO1 SMSC9218I_FLAG(1)   397 #define SMSC9218I_GPT_CFG_TIMER_EN SMSC9218I_FLAG(29)   398 #define SMSC9218I_GPT_CFG_LOAD(val) SMSC9218I_FIELD_16(val, 0)   399 #define SMSC9218I_GPT_CFG_GET_LOAD(reg) SMSC9218I_GET_FIELD_16(reg, 0)   408 #define SMSC9218I_GPT_CNT_GET_CNT SMSC9218I_GET_FIELD_16(reg, 0)   417 #define SMSC9218I_ENDIAN_BIG 0xffffffffU   426 #define SMSC9218I_FREE_RUN_GET(reg) SMSC9218I_SWAP(reg)   435 #define SMSC9218I_RX_DROP_GET(reg) SMSC9218I_SWAP(reg)   444 #define SMSC9218I_E2P_CMD_EPC_BUSY SMSC9218I_FLAG(31)   453 #define SMSC9218I_MAC_CSR_CMD_BUSY SMSC9218I_FLAG(31)   454 #define SMSC9218I_MAC_CSR_CMD_READ SMSC9218I_FLAG(30)   455 #define SMSC9218I_MAC_CSR_CMD_ADDR(val) SMSC9218I_FIELD_8(val, 0)   456 #define SMSC9218I_MAC_CSR_CMD_GET_ADDR(reg) SMSC9218I_GET_FIELD_8(reg, 0)   465 #define SMSC9218I_MAC_CR 0x00000001U   466 #define SMSC9218I_MAC_CR_RXALL 0x80000000U   467 #define SMSC9218I_MAC_CR_HBDIS 0x10000000U   468 #define SMSC9218I_MAC_CR_RCVOWN 0x00800000U   469 #define SMSC9218I_MAC_CR_LOOPBK 0x00200000U   470 #define SMSC9218I_MAC_CR_FDPX 0x00100000U   471 #define SMSC9218I_MAC_CR_MCPAS 0x00080000U   472 #define SMSC9218I_MAC_CR_PRMS 0x00040000U   473 #define SMSC9218I_MAC_CR_INVFILT 0x00020000U   474 #define SMSC9218I_MAC_CR_PASSBAD 0x00010000U   475 #define SMSC9218I_MAC_CR_HFILT 0x00008000U   476 #define SMSC9218I_MAC_CR_HPFILT 0x00002000U   477 #define SMSC9218I_MAC_CR_LCOLL 0x00001000U   478 #define SMSC9218I_MAC_CR_BCAST 0x00000800U   479 #define SMSC9218I_MAC_CR_DISRTY 0x00000400U   480 #define SMSC9218I_MAC_CR_PADSTR 0x00000100U   481 #define SMSC9218I_MAC_CR_BOLMT_MASK 0x000000c0U   482 #define SMSC9218I_MAC_CR_BOLMT_10 0x00000000U   483 #define SMSC9218I_MAC_CR_BOLMT_8 0x00000040U   484 #define SMSC9218I_MAC_CR_BOLMT_4 0x00000080U   485 #define SMSC9218I_MAC_CR_BOLMT_1 0x000000c0U   486 #define SMSC9218I_MAC_CR_DFCHK 0x00000020U   487 #define SMSC9218I_MAC_CR_TXEN 0x00000008U   488 #define SMSC9218I_MAC_CR_RXEN 0x00000004U   497 #define SMSC9218I_MAC_ADDRH 0x00000002U   498 #define SMSC9218I_MAC_ADDRH_MASK 0x0000ffffU   507 #define SMSC9218I_MAC_ADDRL 0x00000003U   508 #define SMSC9218I_MAC_ADDRL_MASK 0xffffffffU   517 #define SMSC9218I_MAC_HASHH 0x00000004U   518 #define SMSC9218I_MAC_HASHH_MASK 0xffffffffU   527 #define SMSC9218I_MAC_HASHL 0x00000005U   528 #define SMSC9218I_MAC_HASHL_MASK 0xffffffffU   537 #define SMSC9218I_MAC_MII_ACC 0x00000006U   538 #define SMSC9218I_MAC_MII_ACC_PHY_DEFAULT (1U << 11)   539 #define SMSC9218I_MAC_MII_ACC_WRITE (1U << 1)   540 #define SMSC9218I_MAC_MII_ACC_BUSY (1U << 0)   541 #define SMSC9218I_MAC_MII_ACC_ADDR(addr) ((addr) << 6)   550 #define SMSC9218I_MAC_MII_DATA 0x00000007U   559 #define SMSC9218I_MAC_FLOW 0x00000008U   560 #define SMSC9218I_MAC_FLOW_FCPT_MASK 0xffff0000U   561 #define SMSC9218I_MAC_FLOW_FCPASS 0x00000004U   562 #define SMSC9218I_MAC_FLOW_FCEN 0x00000002U   563 #define SMSC9218I_MAC_FLOW_FCBSY 0x00000001U   572 #define SMSC9218I_MAC_VLAN1 0x00000009U   581 #define SMSC9218I_MAC_VLAN2 0x0000000aU   590 #define SMSC9218I_MAC_WUFF 0x0000000bU   599 #define SMSC9218I_MAC_WUCSR 0x0000000cU   600 #define SMSC9218I_MAC_WUCSR_GUE 0x00000200U   601 #define SMSC9218I_MAC_WUCSR_WUFR 0x00000040U   602 #define SMSC9218I_MAC_WUCSR_MPR 0x00000020U   603 #define SMSC9218I_MAC_WUCSR_WUEN 0x00000004U   604 #define SMSC9218I_MAC_WUCSR_MPEN 0x00000002U   613 #define SMSC9218I_PHY_ID1_LAN9118 0x7   622 #define SMSC9218I_PHY_ID2_LAN9218 0xc0c3   631 #define SMSC9218I_PHY_MCSR 0x00000011U   632 #define SMSC9218I_PHY_MCSR_EDPWRDOWN 0x00002000U   633 #define SMSC9218I_PHY_MCSR_ENERGYON 0x00000002U   642 #define SMSC9218I_PHY_SPMODES 0x00000012U   651 #define SMSC9218I_PHY_CSIR 0x0000001bU   652 #define SMSC9218I_PHY_CSIR_SQEOFF 0x00000800U   653 #define SMSC9218I_PHY_CSIR_FEFIEN 0x00000020U   654 #define SMSC9218I_PHY_CSIR_XPOL 0x00000010U   663 #define SMSC9218I_PHY_ISR 0x0000001dU   664 #define SMSC9218I_PHY_ISR_INT7 0x00000080U   665 #define SMSC9218I_PHY_ISR_INT6 0x00000040U   666 #define SMSC9218I_PHY_ISR_INT5 0x00000020U   667 #define SMSC9218I_PHY_ISR_INT4 0x00000010U   668 #define SMSC9218I_PHY_ISR_INT3 0x00000008U   669 #define SMSC9218I_PHY_ISR_INT2 0x00000004U   670 #define SMSC9218I_PHY_ISR_INT1 0x00000002U   679 #define SMSC9218I_PHY_IMR 0x0000001eU   680 #define SMSC9218I_PHY_IMR_INT7 0x00000080U   681 #define SMSC9218I_PHY_IMR_INT6 0x00000040U   682 #define SMSC9218I_PHY_IMR_INT5 0x00000020U   683 #define SMSC9218I_PHY_IMR_INT4 0x00000010U   684 #define SMSC9218I_PHY_IMR_INT3 0x00000008U   685 #define SMSC9218I_PHY_IMR_INT2 0x00000004U   686 #define SMSC9218I_PHY_IMR_INT1 0x00000002U   695 #define SMSC9218I_PHY_PHYSCSR 0x0000001fU   696 #define SMSC9218I_PHY_PHYSCSR_ANDONE 0x00001000U   697 #define SMSC9218I_PHY_PHYSCSR_4B5B_EN 0x00000040U   698 #define SMSC9218I_PHY_PHYSCSR_SPEED_MASK 0x0000001cU   699 #define SMSC9218I_PHY_PHYSCSR_SPEED_10HD 0x00000004U   700 #define SMSC9218I_PHY_PHYSCSR_SPEED_10FD 0x00000014U   701 #define SMSC9218I_PHY_PHYSCSR_SPEED_100HD 0x00000008U   702 #define SMSC9218I_PHY_PHYSCSR_SPEED_100FD 0x00000018U Definition: smsc9218i.h:30