Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002  /***************************************************************************
0003  *
0004  * Copyright (C) 2007-2010 SMSC
0005  *
0006  *****************************************************************************/
0007 
0008 #ifndef _SMSC75XX_H
0009 #define _SMSC75XX_H
0010 
0011 /* Tx command words */
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 /* Rx command words */
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 /* SCSRs */
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 /* MAC CSRs */
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 /* Vendor-specific PHY Definitions */
0367 
0368 /* Mode Control/Status Register */
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 /* USB Vendor Requests */
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 /* Interrupt Endpoint status word bitfields */
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 /* _SMSC75XX_H */