0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _SMSC75XX_H
0009 #define _SMSC75XX_H
0010
0011
0012 #define TX_CMD_A_LSO (0x08000000)
0013 #define TX_CMD_A_IPE (0x04000000)
0014 #define TX_CMD_A_TPE (0x02000000)
0015 #define TX_CMD_A_IVTG (0x01000000)
0016 #define TX_CMD_A_RVTG (0x00800000)
0017 #define TX_CMD_A_FCS (0x00400000)
0018 #define TX_CMD_A_LEN (0x000FFFFF)
0019
0020 #define TX_CMD_B_MSS (0x3FFF0000)
0021 #define TX_CMD_B_MSS_SHIFT (16)
0022 #define TX_MSS_MIN ((u16)8)
0023 #define TX_CMD_B_VTAG (0x0000FFFF)
0024
0025
0026 #define RX_CMD_A_ICE (0x80000000)
0027 #define RX_CMD_A_TCE (0x40000000)
0028 #define RX_CMD_A_IPV (0x20000000)
0029 #define RX_CMD_A_PID (0x18000000)
0030 #define RX_CMD_A_PID_NIP (0x00000000)
0031 #define RX_CMD_A_PID_TCP (0x08000000)
0032 #define RX_CMD_A_PID_UDP (0x10000000)
0033 #define RX_CMD_A_PID_PP (0x18000000)
0034 #define RX_CMD_A_PFF (0x04000000)
0035 #define RX_CMD_A_BAM (0x02000000)
0036 #define RX_CMD_A_MAM (0x01000000)
0037 #define RX_CMD_A_FVTG (0x00800000)
0038 #define RX_CMD_A_RED (0x00400000)
0039 #define RX_CMD_A_RWT (0x00200000)
0040 #define RX_CMD_A_RUNT (0x00100000)
0041 #define RX_CMD_A_LONG (0x00080000)
0042 #define RX_CMD_A_RXE (0x00040000)
0043 #define RX_CMD_A_DRB (0x00020000)
0044 #define RX_CMD_A_FCS (0x00010000)
0045 #define RX_CMD_A_UAM (0x00008000)
0046 #define RX_CMD_A_LCSM (0x00004000)
0047 #define RX_CMD_A_LEN (0x00003FFF)
0048
0049 #define RX_CMD_B_CSUM (0xFFFF0000)
0050 #define RX_CMD_B_CSUM_SHIFT (16)
0051 #define RX_CMD_B_VTAG (0x0000FFFF)
0052
0053
0054 #define ID_REV (0x0000)
0055
0056 #define FPGA_REV (0x0004)
0057
0058 #define BOND_CTL (0x0008)
0059
0060 #define INT_STS (0x000C)
0061 #define INT_STS_RDFO_INT (0x00400000)
0062 #define INT_STS_TXE_INT (0x00200000)
0063 #define INT_STS_MACRTO_INT (0x00100000)
0064 #define INT_STS_TX_DIS_INT (0x00080000)
0065 #define INT_STS_RX_DIS_INT (0x00040000)
0066 #define INT_STS_PHY_INT_ (0x00020000)
0067 #define INT_STS_MAC_ERR_INT (0x00008000)
0068 #define INT_STS_TDFU (0x00004000)
0069 #define INT_STS_TDFO (0x00002000)
0070 #define INT_STS_GPIOS (0x00000FFF)
0071 #define INT_STS_CLEAR_ALL (0xFFFFFFFF)
0072
0073 #define HW_CFG (0x0010)
0074 #define HW_CFG_SMDET_STS (0x00008000)
0075 #define HW_CFG_SMDET_EN (0x00004000)
0076 #define HW_CFG_EEM (0x00002000)
0077 #define HW_CFG_RST_PROTECT (0x00001000)
0078 #define HW_CFG_PORT_SWAP (0x00000800)
0079 #define HW_CFG_PHY_BOOST (0x00000600)
0080 #define HW_CFG_PHY_BOOST_NORMAL (0x00000000)
0081 #define HW_CFG_PHY_BOOST_4 (0x00002000)
0082 #define HW_CFG_PHY_BOOST_8 (0x00004000)
0083 #define HW_CFG_PHY_BOOST_12 (0x00006000)
0084 #define HW_CFG_LEDB (0x00000100)
0085 #define HW_CFG_BIR (0x00000080)
0086 #define HW_CFG_SBP (0x00000040)
0087 #define HW_CFG_IME (0x00000020)
0088 #define HW_CFG_MEF (0x00000010)
0089 #define HW_CFG_ETC (0x00000008)
0090 #define HW_CFG_BCE (0x00000004)
0091 #define HW_CFG_LRST (0x00000002)
0092 #define HW_CFG_SRST (0x00000001)
0093
0094 #define PMT_CTL (0x0014)
0095 #define PMT_CTL_PHY_PWRUP (0x00000400)
0096 #define PMT_CTL_RES_CLR_WKP_EN (0x00000100)
0097 #define PMT_CTL_DEV_RDY (0x00000080)
0098 #define PMT_CTL_SUS_MODE (0x00000060)
0099 #define PMT_CTL_SUS_MODE_0 (0x00000000)
0100 #define PMT_CTL_SUS_MODE_1 (0x00000020)
0101 #define PMT_CTL_SUS_MODE_2 (0x00000040)
0102 #define PMT_CTL_SUS_MODE_3 (0x00000060)
0103 #define PMT_CTL_PHY_RST (0x00000010)
0104 #define PMT_CTL_WOL_EN (0x00000008)
0105 #define PMT_CTL_ED_EN (0x00000004)
0106 #define PMT_CTL_WUPS (0x00000003)
0107 #define PMT_CTL_WUPS_NO (0x00000000)
0108 #define PMT_CTL_WUPS_ED (0x00000001)
0109 #define PMT_CTL_WUPS_WOL (0x00000002)
0110 #define PMT_CTL_WUPS_MULTI (0x00000003)
0111
0112 #define LED_GPIO_CFG (0x0018)
0113 #define LED_GPIO_CFG_LED2_FUN_SEL (0x80000000)
0114 #define LED_GPIO_CFG_LED10_FUN_SEL (0x40000000)
0115 #define LED_GPIO_CFG_LEDGPIO_EN (0x0000F000)
0116 #define LED_GPIO_CFG_LEDGPIO_EN_0 (0x00001000)
0117 #define LED_GPIO_CFG_LEDGPIO_EN_1 (0x00002000)
0118 #define LED_GPIO_CFG_LEDGPIO_EN_2 (0x00004000)
0119 #define LED_GPIO_CFG_LEDGPIO_EN_3 (0x00008000)
0120 #define LED_GPIO_CFG_GPBUF (0x00000F00)
0121 #define LED_GPIO_CFG_GPBUF_0 (0x00000100)
0122 #define LED_GPIO_CFG_GPBUF_1 (0x00000200)
0123 #define LED_GPIO_CFG_GPBUF_2 (0x00000400)
0124 #define LED_GPIO_CFG_GPBUF_3 (0x00000800)
0125 #define LED_GPIO_CFG_GPDIR (0x000000F0)
0126 #define LED_GPIO_CFG_GPDIR_0 (0x00000010)
0127 #define LED_GPIO_CFG_GPDIR_1 (0x00000020)
0128 #define LED_GPIO_CFG_GPDIR_2 (0x00000040)
0129 #define LED_GPIO_CFG_GPDIR_3 (0x00000080)
0130 #define LED_GPIO_CFG_GPDATA (0x0000000F)
0131 #define LED_GPIO_CFG_GPDATA_0 (0x00000001)
0132 #define LED_GPIO_CFG_GPDATA_1 (0x00000002)
0133 #define LED_GPIO_CFG_GPDATA_2 (0x00000004)
0134 #define LED_GPIO_CFG_GPDATA_3 (0x00000008)
0135
0136 #define GPIO_CFG (0x001C)
0137 #define GPIO_CFG_SHIFT (24)
0138 #define GPIO_CFG_GPEN (0xFF000000)
0139 #define GPIO_CFG_GPBUF (0x00FF0000)
0140 #define GPIO_CFG_GPDIR (0x0000FF00)
0141 #define GPIO_CFG_GPDATA (0x000000FF)
0142
0143 #define GPIO_WAKE (0x0020)
0144 #define GPIO_WAKE_PHY_LINKUP_EN (0x80000000)
0145 #define GPIO_WAKE_POL (0x0FFF0000)
0146 #define GPIO_WAKE_POL_SHIFT (16)
0147 #define GPIO_WAKE_WK (0x00000FFF)
0148
0149 #define DP_SEL (0x0024)
0150 #define DP_SEL_DPRDY (0x80000000)
0151 #define DP_SEL_RSEL (0x0000000F)
0152 #define DP_SEL_URX (0x00000000)
0153 #define DP_SEL_VHF (0x00000001)
0154 #define DP_SEL_VHF_HASH_LEN (16)
0155 #define DP_SEL_VHF_VLAN_LEN (128)
0156 #define DP_SEL_LSO_HEAD (0x00000002)
0157 #define DP_SEL_FCT_RX (0x00000003)
0158 #define DP_SEL_FCT_TX (0x00000004)
0159 #define DP_SEL_DESCRIPTOR (0x00000005)
0160 #define DP_SEL_WOL (0x00000006)
0161
0162 #define DP_CMD (0x0028)
0163 #define DP_CMD_WRITE (0x01)
0164 #define DP_CMD_READ (0x00)
0165
0166 #define DP_ADDR (0x002C)
0167
0168 #define DP_DATA (0x0030)
0169
0170 #define BURST_CAP (0x0034)
0171 #define BURST_CAP_MASK (0x0000000F)
0172
0173 #define INT_EP_CTL (0x0038)
0174 #define INT_EP_CTL_INTEP_ON (0x80000000)
0175 #define INT_EP_CTL_RDFO_EN (0x00400000)
0176 #define INT_EP_CTL_TXE_EN (0x00200000)
0177 #define INT_EP_CTL_MACROTO_EN (0x00100000)
0178 #define INT_EP_CTL_TX_DIS_EN (0x00080000)
0179 #define INT_EP_CTL_RX_DIS_EN (0x00040000)
0180 #define INT_EP_CTL_PHY_EN_ (0x00020000)
0181 #define INT_EP_CTL_MAC_ERR_EN (0x00008000)
0182 #define INT_EP_CTL_TDFU_EN (0x00004000)
0183 #define INT_EP_CTL_TDFO_EN (0x00002000)
0184 #define INT_EP_CTL_RX_FIFO_EN (0x00001000)
0185 #define INT_EP_CTL_GPIOX_EN (0x00000FFF)
0186
0187 #define BULK_IN_DLY (0x003C)
0188 #define BULK_IN_DLY_MASK (0xFFFF)
0189
0190 #define E2P_CMD (0x0040)
0191 #define E2P_CMD_BUSY (0x80000000)
0192 #define E2P_CMD_MASK (0x70000000)
0193 #define E2P_CMD_READ (0x00000000)
0194 #define E2P_CMD_EWDS (0x10000000)
0195 #define E2P_CMD_EWEN (0x20000000)
0196 #define E2P_CMD_WRITE (0x30000000)
0197 #define E2P_CMD_WRAL (0x40000000)
0198 #define E2P_CMD_ERASE (0x50000000)
0199 #define E2P_CMD_ERAL (0x60000000)
0200 #define E2P_CMD_RELOAD (0x70000000)
0201 #define E2P_CMD_TIMEOUT (0x00000400)
0202 #define E2P_CMD_LOADED (0x00000200)
0203 #define E2P_CMD_ADDR (0x000001FF)
0204
0205 #define MAX_EEPROM_SIZE (512)
0206
0207 #define E2P_DATA (0x0044)
0208 #define E2P_DATA_MASK_ (0x000000FF)
0209
0210 #define RFE_CTL (0x0060)
0211 #define RFE_CTL_TCPUDP_CKM (0x00001000)
0212 #define RFE_CTL_IP_CKM (0x00000800)
0213 #define RFE_CTL_AB (0x00000400)
0214 #define RFE_CTL_AM (0x00000200)
0215 #define RFE_CTL_AU (0x00000100)
0216 #define RFE_CTL_VS (0x00000080)
0217 #define RFE_CTL_UF (0x00000040)
0218 #define RFE_CTL_VF (0x00000020)
0219 #define RFE_CTL_SPF (0x00000010)
0220 #define RFE_CTL_MHF (0x00000008)
0221 #define RFE_CTL_DHF (0x00000004)
0222 #define RFE_CTL_DPF (0x00000002)
0223 #define RFE_CTL_RST_RF (0x00000001)
0224
0225 #define VLAN_TYPE (0x0064)
0226 #define VLAN_TYPE_MASK (0x0000FFFF)
0227
0228 #define FCT_RX_CTL (0x0090)
0229 #define FCT_RX_CTL_EN (0x80000000)
0230 #define FCT_RX_CTL_RST (0x40000000)
0231 #define FCT_RX_CTL_SBF (0x02000000)
0232 #define FCT_RX_CTL_OVERFLOW (0x01000000)
0233 #define FCT_RX_CTL_FRM_DROP (0x00800000)
0234 #define FCT_RX_CTL_RX_NOT_EMPTY (0x00400000)
0235 #define FCT_RX_CTL_RX_EMPTY (0x00200000)
0236 #define FCT_RX_CTL_RX_DISABLED (0x00100000)
0237 #define FCT_RX_CTL_RXUSED (0x0000FFFF)
0238
0239 #define FCT_TX_CTL (0x0094)
0240 #define FCT_TX_CTL_EN (0x80000000)
0241 #define FCT_TX_CTL_RST (0x40000000)
0242 #define FCT_TX_CTL_TX_NOT_EMPTY (0x00400000)
0243 #define FCT_TX_CTL_TX_EMPTY (0x00200000)
0244 #define FCT_TX_CTL_TX_DISABLED (0x00100000)
0245 #define FCT_TX_CTL_TXUSED (0x0000FFFF)
0246
0247 #define FCT_RX_FIFO_END (0x0098)
0248 #define FCT_RX_FIFO_END_MASK (0x0000007F)
0249
0250 #define FCT_TX_FIFO_END (0x009C)
0251 #define FCT_TX_FIFO_END_MASK (0x0000003F)
0252
0253 #define FCT_FLOW (0x00A0)
0254 #define FCT_FLOW_THRESHOLD_OFF (0x00007F00)
0255 #define FCT_FLOW_THRESHOLD_OFF_SHIFT (8)
0256 #define FCT_FLOW_THRESHOLD_ON (0x0000007F)
0257
0258
0259 #define MAC_CR (0x100)
0260 #define MAC_CR_ADP (0x00002000)
0261 #define MAC_CR_ADD (0x00001000)
0262 #define MAC_CR_ASD (0x00000800)
0263 #define MAC_CR_INT_LOOP (0x00000400)
0264 #define MAC_CR_BOLMT (0x000000C0)
0265 #define MAC_CR_FDPX (0x00000008)
0266 #define MAC_CR_CFG (0x00000006)
0267 #define MAC_CR_CFG_10 (0x00000000)
0268 #define MAC_CR_CFG_100 (0x00000002)
0269 #define MAC_CR_CFG_1000 (0x00000004)
0270 #define MAC_CR_RST (0x00000001)
0271
0272 #define MAC_RX (0x104)
0273 #define MAC_RX_MAX_SIZE (0x3FFF0000)
0274 #define MAC_RX_MAX_SIZE_SHIFT (16)
0275 #define MAC_RX_FCS_STRIP (0x00000010)
0276 #define MAC_RX_FSE (0x00000004)
0277 #define MAC_RX_RXD (0x00000002)
0278 #define MAC_RX_RXEN (0x00000001)
0279
0280 #define MAC_TX (0x108)
0281 #define MAC_TX_BFCS (0x00000004)
0282 #define MAC_TX_TXD (0x00000002)
0283 #define MAC_TX_TXEN (0x00000001)
0284
0285 #define FLOW (0x10C)
0286 #define FLOW_FORCE_FC (0x80000000)
0287 #define FLOW_TX_FCEN (0x40000000)
0288 #define FLOW_RX_FCEN (0x20000000)
0289 #define FLOW_FPF (0x10000000)
0290 #define FLOW_PAUSE_TIME (0x0000FFFF)
0291
0292 #define RAND_SEED (0x110)
0293 #define RAND_SEED_MASK (0x0000FFFF)
0294
0295 #define ERR_STS (0x114)
0296 #define ERR_STS_FCS_ERR (0x00000100)
0297 #define ERR_STS_LFRM_ERR (0x00000080)
0298 #define ERR_STS_RUNT_ERR (0x00000040)
0299 #define ERR_STS_COLLISION_ERR (0x00000010)
0300 #define ERR_STS_ALIGN_ERR (0x00000008)
0301 #define ERR_STS_URUN_ERR (0x00000004)
0302
0303 #define RX_ADDRH (0x118)
0304 #define RX_ADDRH_MASK (0x0000FFFF)
0305
0306 #define RX_ADDRL (0x11C)
0307
0308 #define MII_ACCESS (0x120)
0309 #define MII_ACCESS_PHY_ADDR (0x0000F800)
0310 #define MII_ACCESS_PHY_ADDR_SHIFT (11)
0311 #define MII_ACCESS_REG_ADDR (0x000007C0)
0312 #define MII_ACCESS_REG_ADDR_SHIFT (6)
0313 #define MII_ACCESS_READ (0x00000000)
0314 #define MII_ACCESS_WRITE (0x00000002)
0315 #define MII_ACCESS_BUSY (0x00000001)
0316
0317 #define MII_DATA (0x124)
0318 #define MII_DATA_MASK (0x0000FFFF)
0319
0320 #define WUCSR (0x140)
0321 #define WUCSR_PFDA_FR (0x00000080)
0322 #define WUCSR_WUFR (0x00000040)
0323 #define WUCSR_MPR (0x00000020)
0324 #define WUCSR_BCAST_FR (0x00000010)
0325 #define WUCSR_PFDA_EN (0x00000008)
0326 #define WUCSR_WUEN (0x00000004)
0327 #define WUCSR_MPEN (0x00000002)
0328 #define WUCSR_BCST_EN (0x00000001)
0329
0330 #define WUF_CFGX (0x144)
0331 #define WUF_CFGX_EN (0x80000000)
0332 #define WUF_CFGX_ATYPE (0x03000000)
0333 #define WUF_CFGX_ATYPE_UNICAST (0x00000000)
0334 #define WUF_CFGX_ATYPE_MULTICAST (0x02000000)
0335 #define WUF_CFGX_ATYPE_ALL (0x03000000)
0336 #define WUF_CFGX_PATTERN_OFFSET (0x007F0000)
0337 #define WUF_CFGX_PATTERN_OFFSET_SHIFT (16)
0338 #define WUF_CFGX_CRC16 (0x0000FFFF)
0339 #define WUF_NUM (8)
0340
0341 #define WUF_MASKX (0x170)
0342 #define WUF_MASKX_AVALID (0x80000000)
0343 #define WUF_MASKX_ATYPE (0x40000000)
0344
0345 #define ADDR_FILTX (0x300)
0346 #define ADDR_FILTX_FB_VALID (0x80000000)
0347 #define ADDR_FILTX_FB_TYPE (0x40000000)
0348 #define ADDR_FILTX_FB_ADDRHI (0x0000FFFF)
0349 #define ADDR_FILTX_SB_ADDRLO (0xFFFFFFFF)
0350
0351 #define WUCSR2 (0x500)
0352 #define WUCSR2_NS_RCD (0x00000040)
0353 #define WUCSR2_ARP_RCD (0x00000020)
0354 #define WUCSR2_TCPSYN_RCD (0x00000010)
0355 #define WUCSR2_NS_OFFLOAD (0x00000004)
0356 #define WUCSR2_ARP_OFFLOAD (0x00000002)
0357 #define WUCSR2_TCPSYN_OFFLOAD (0x00000001)
0358
0359 #define WOL_FIFO_STS (0x504)
0360
0361 #define IPV6_ADDRX (0x510)
0362
0363 #define IPV4_ADDRX (0x590)
0364
0365
0366
0367
0368
0369 #define PHY_MODE_CTRL_STS (17)
0370 #define MODE_CTRL_STS_EDPWRDOWN ((u16)0x2000)
0371 #define MODE_CTRL_STS_ENERGYON ((u16)0x0002)
0372
0373 #define PHY_INT_SRC (29)
0374 #define PHY_INT_SRC_ENERGY_ON ((u16)0x0080)
0375 #define PHY_INT_SRC_ANEG_COMP ((u16)0x0040)
0376 #define PHY_INT_SRC_REMOTE_FAULT ((u16)0x0020)
0377 #define PHY_INT_SRC_LINK_DOWN ((u16)0x0010)
0378 #define PHY_INT_SRC_CLEAR_ALL ((u16)0xffff)
0379
0380 #define PHY_INT_MASK (30)
0381 #define PHY_INT_MASK_ENERGY_ON ((u16)0x0080)
0382 #define PHY_INT_MASK_ANEG_COMP ((u16)0x0040)
0383 #define PHY_INT_MASK_REMOTE_FAULT ((u16)0x0020)
0384 #define PHY_INT_MASK_LINK_DOWN ((u16)0x0010)
0385 #define PHY_INT_MASK_DEFAULT (PHY_INT_MASK_ANEG_COMP | \
0386 PHY_INT_MASK_LINK_DOWN)
0387
0388 #define PHY_SPECIAL (31)
0389 #define PHY_SPECIAL_SPD ((u16)0x001C)
0390 #define PHY_SPECIAL_SPD_10HALF ((u16)0x0004)
0391 #define PHY_SPECIAL_SPD_10FULL ((u16)0x0014)
0392 #define PHY_SPECIAL_SPD_100HALF ((u16)0x0008)
0393 #define PHY_SPECIAL_SPD_100FULL ((u16)0x0018)
0394
0395
0396 #define USB_VENDOR_REQUEST_WRITE_REGISTER 0xA0
0397 #define USB_VENDOR_REQUEST_READ_REGISTER 0xA1
0398 #define USB_VENDOR_REQUEST_GET_STATS 0xA2
0399
0400
0401 #define INT_ENP_RDFO_INT ((u32)BIT(22))
0402 #define INT_ENP_TXE_INT ((u32)BIT(21))
0403 #define INT_ENP_TX_DIS_INT ((u32)BIT(19))
0404 #define INT_ENP_RX_DIS_INT ((u32)BIT(18))
0405 #define INT_ENP_PHY_INT ((u32)BIT(17))
0406 #define INT_ENP_MAC_ERR_INT ((u32)BIT(15))
0407 #define INT_ENP_RX_FIFO_DATA_INT ((u32)BIT(12))
0408
0409 #endif