Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Microchip KSZ8795 register definitions
0004  *
0005  * Copyright (c) 2017 Microchip Technology Inc.
0006  *  Tristram Ha <Tristram.Ha@microchip.com>
0007  */
0008 
0009 #ifndef __KSZ8795_REG_H
0010 #define __KSZ8795_REG_H
0011 
0012 #define KS_PORT_M           0x1F
0013 
0014 #define KS_PRIO_M           0x3
0015 #define KS_PRIO_S           2
0016 
0017 #define SW_REVISION_M           0x0E
0018 #define SW_REVISION_S           1
0019 
0020 #define KSZ8863_REG_SW_RESET        0x43
0021 
0022 #define KSZ8863_GLOBAL_SOFTWARE_RESET   BIT(4)
0023 #define KSZ8863_PCS_RESET       BIT(0)
0024 
0025 #define REG_SW_CTRL_0           0x02
0026 
0027 #define SW_NEW_BACKOFF          BIT(7)
0028 #define SW_GLOBAL_RESET         BIT(6)
0029 #define SW_FLUSH_DYN_MAC_TABLE      BIT(5)
0030 #define SW_FLUSH_STA_MAC_TABLE      BIT(4)
0031 #define SW_LINK_AUTO_AGING      BIT(0)
0032 
0033 #define REG_SW_CTRL_1           0x03
0034 
0035 #define SW_HUGE_PACKET          BIT(6)
0036 #define SW_TX_FLOW_CTRL_DISABLE     BIT(5)
0037 #define SW_RX_FLOW_CTRL_DISABLE     BIT(4)
0038 #define SW_CHECK_LENGTH         BIT(3)
0039 #define SW_AGING_ENABLE         BIT(2)
0040 #define SW_FAST_AGING           BIT(1)
0041 #define SW_AGGR_BACKOFF         BIT(0)
0042 
0043 #define REG_SW_CTRL_2           0x04
0044 
0045 #define UNICAST_VLAN_BOUNDARY       BIT(7)
0046 #define SW_BACK_PRESSURE        BIT(5)
0047 #define FAIR_FLOW_CTRL          BIT(4)
0048 #define NO_EXC_COLLISION_DROP       BIT(3)
0049 #define SW_LEGAL_PACKET_DISABLE     BIT(1)
0050 
0051 #define REG_SW_CTRL_3           0x05
0052  #define WEIGHTED_FAIR_QUEUE_ENABLE BIT(3)
0053 
0054 #define SW_VLAN_ENABLE          BIT(7)
0055 #define SW_IGMP_SNOOP           BIT(6)
0056 #define SW_MIRROR_RX_TX         BIT(0)
0057 
0058 #define REG_SW_CTRL_4           0x06
0059 
0060 #define SW_HALF_DUPLEX_FLOW_CTRL    BIT(7)
0061 #define SW_HALF_DUPLEX          BIT(6)
0062 #define SW_FLOW_CTRL            BIT(5)
0063 #define SW_10_MBIT          BIT(4)
0064 #define SW_REPLACE_VID          BIT(3)
0065 
0066 #define REG_SW_CTRL_5           0x07
0067 
0068 #define REG_SW_CTRL_6           0x08
0069 
0070 #define SW_MIB_COUNTER_FLUSH        BIT(7)
0071 #define SW_MIB_COUNTER_FREEZE       BIT(6)
0072 #define SW_MIB_COUNTER_CTRL_ENABLE  KS_PORT_M
0073 
0074 #define REG_SW_CTRL_9           0x0B
0075 
0076 #define SPI_CLK_125_MHZ         0x80
0077 #define SPI_CLK_62_5_MHZ        0x40
0078 #define SPI_CLK_31_25_MHZ       0x00
0079 
0080 #define SW_LED_MODE_M           0x3
0081 #define SW_LED_MODE_S           4
0082 #define SW_LED_LINK_ACT_SPEED       0
0083 #define SW_LED_LINK_ACT         1
0084 #define SW_LED_LINK_ACT_DUPLEX      2
0085 #define SW_LED_LINK_DUPLEX      3
0086 
0087 #define REG_SW_CTRL_10          0x0C
0088 
0089 #define SW_PASS_PAUSE           BIT(0)
0090 
0091 #define REG_SW_CTRL_11          0x0D
0092 
0093 #define REG_POWER_MANAGEMENT_1      0x0E
0094 
0095 #define SW_PLL_POWER_DOWN       BIT(5)
0096 #define SW_POWER_MANAGEMENT_MODE_M  0x3
0097 #define SW_POWER_MANAGEMENT_MODE_S  3
0098 #define SW_POWER_NORMAL         0
0099 #define SW_ENERGY_DETECTION     1
0100 #define SW_SOFTWARE_POWER_DOWN      2
0101 
0102 #define REG_POWER_MANAGEMENT_2      0x0F
0103 
0104 #define REG_PORT_1_CTRL_0       0x10
0105 #define REG_PORT_2_CTRL_0       0x20
0106 #define REG_PORT_3_CTRL_0       0x30
0107 #define REG_PORT_4_CTRL_0       0x40
0108 #define REG_PORT_5_CTRL_0       0x50
0109 
0110 #define PORT_BROADCAST_STORM        BIT(7)
0111 #define PORT_DIFFSERV_ENABLE        BIT(6)
0112 #define PORT_802_1P_ENABLE      BIT(5)
0113 #define PORT_BASED_PRIO_S       3
0114 #define PORT_BASED_PRIO_M       KS_PRIO_M
0115 #define PORT_BASED_PRIO_0       0
0116 #define PORT_BASED_PRIO_1       1
0117 #define PORT_BASED_PRIO_2       2
0118 #define PORT_BASED_PRIO_3       3
0119 #define PORT_INSERT_TAG         BIT(2)
0120 #define PORT_REMOVE_TAG         BIT(1)
0121 #define PORT_QUEUE_SPLIT_L      BIT(0)
0122 
0123 #define REG_PORT_1_CTRL_1       0x11
0124 #define REG_PORT_2_CTRL_1       0x21
0125 #define REG_PORT_3_CTRL_1       0x31
0126 #define REG_PORT_4_CTRL_1       0x41
0127 #define REG_PORT_5_CTRL_1       0x51
0128 
0129 #define PORT_MIRROR_SNIFFER     BIT(7)
0130 #define PORT_MIRROR_RX          BIT(6)
0131 #define PORT_MIRROR_TX          BIT(5)
0132 #define PORT_VLAN_MEMBERSHIP        KS_PORT_M
0133 
0134 #define REG_PORT_1_CTRL_2       0x12
0135 #define REG_PORT_2_CTRL_2       0x22
0136 #define REG_PORT_3_CTRL_2       0x32
0137 #define REG_PORT_4_CTRL_2       0x42
0138 #define REG_PORT_5_CTRL_2       0x52
0139 
0140 #define PORT_INGRESS_FILTER     BIT(6)
0141 #define PORT_DISCARD_NON_VID        BIT(5)
0142 #define PORT_FORCE_FLOW_CTRL        BIT(4)
0143 #define PORT_BACK_PRESSURE      BIT(3)
0144 
0145 #define REG_PORT_1_CTRL_3       0x13
0146 #define REG_PORT_2_CTRL_3       0x23
0147 #define REG_PORT_3_CTRL_3       0x33
0148 #define REG_PORT_4_CTRL_3       0x43
0149 #define REG_PORT_5_CTRL_3       0x53
0150 #define REG_PORT_1_CTRL_4       0x14
0151 #define REG_PORT_2_CTRL_4       0x24
0152 #define REG_PORT_3_CTRL_4       0x34
0153 #define REG_PORT_4_CTRL_4       0x44
0154 #define REG_PORT_5_CTRL_4       0x54
0155 
0156 #define PORT_DEFAULT_VID        0x0001
0157 
0158 #define REG_PORT_1_CTRL_5       0x15
0159 #define REG_PORT_2_CTRL_5       0x25
0160 #define REG_PORT_3_CTRL_5       0x35
0161 #define REG_PORT_4_CTRL_5       0x45
0162 #define REG_PORT_5_CTRL_5       0x55
0163 
0164 #define PORT_ACL_ENABLE         BIT(2)
0165 #define PORT_AUTHEN_MODE        0x3
0166 #define PORT_AUTHEN_PASS        0
0167 #define PORT_AUTHEN_BLOCK       1
0168 #define PORT_AUTHEN_TRAP        2
0169 
0170 #define REG_PORT_5_CTRL_6       0x56
0171 
0172 #define PORT_MII_INTERNAL_CLOCK     BIT(7)
0173 #define PORT_GMII_MAC_MODE      BIT(2)
0174 
0175 #define REG_PORT_1_CTRL_7       0x17
0176 #define REG_PORT_2_CTRL_7       0x27
0177 #define REG_PORT_3_CTRL_7       0x37
0178 #define REG_PORT_4_CTRL_7       0x47
0179 
0180 #define PORT_AUTO_NEG_ASYM_PAUSE    BIT(5)
0181 #define PORT_AUTO_NEG_SYM_PAUSE     BIT(4)
0182 #define PORT_AUTO_NEG_100BTX_FD     BIT(3)
0183 #define PORT_AUTO_NEG_100BTX        BIT(2)
0184 #define PORT_AUTO_NEG_10BT_FD       BIT(1)
0185 #define PORT_AUTO_NEG_10BT      BIT(0)
0186 
0187 #define REG_PORT_1_STATUS_0     0x18
0188 #define REG_PORT_2_STATUS_0     0x28
0189 #define REG_PORT_3_STATUS_0     0x38
0190 #define REG_PORT_4_STATUS_0     0x48
0191 
0192 /* For KSZ8765. */
0193 #define PORT_REMOTE_ASYM_PAUSE      BIT(5)
0194 #define PORT_REMOTE_SYM_PAUSE       BIT(4)
0195 #define PORT_REMOTE_100BTX_FD       BIT(3)
0196 #define PORT_REMOTE_100BTX      BIT(2)
0197 #define PORT_REMOTE_10BT_FD     BIT(1)
0198 #define PORT_REMOTE_10BT        BIT(0)
0199 
0200 #define REG_PORT_1_STATUS_1     0x19
0201 #define REG_PORT_2_STATUS_1     0x29
0202 #define REG_PORT_3_STATUS_1     0x39
0203 #define REG_PORT_4_STATUS_1     0x49
0204 
0205 #define PORT_HP_MDIX            BIT(7)
0206 #define PORT_REVERSED_POLARITY      BIT(5)
0207 #define PORT_TX_FLOW_CTRL       BIT(4)
0208 #define PORT_RX_FLOW_CTRL       BIT(3)
0209 #define PORT_STAT_SPEED_100MBIT     BIT(2)
0210 #define PORT_STAT_FULL_DUPLEX       BIT(1)
0211 
0212 #define PORT_REMOTE_FAULT       BIT(0)
0213 
0214 #define REG_PORT_1_LINK_MD_CTRL     0x1A
0215 #define REG_PORT_2_LINK_MD_CTRL     0x2A
0216 #define REG_PORT_3_LINK_MD_CTRL     0x3A
0217 #define REG_PORT_4_LINK_MD_CTRL     0x4A
0218 
0219 #define PORT_CABLE_10M_SHORT        BIT(7)
0220 #define PORT_CABLE_DIAG_RESULT_M    GENMASK(6, 5)
0221 #define PORT_CABLE_DIAG_RESULT_S    5
0222 #define PORT_CABLE_STAT_NORMAL      0
0223 #define PORT_CABLE_STAT_OPEN        1
0224 #define PORT_CABLE_STAT_SHORT       2
0225 #define PORT_CABLE_STAT_FAILED      3
0226 #define PORT_START_CABLE_DIAG       BIT(4)
0227 #define PORT_FORCE_LINK         BIT(3)
0228 #define PORT_POWER_SAVING       BIT(2)
0229 #define PORT_PHY_REMOTE_LOOPBACK    BIT(1)
0230 #define PORT_CABLE_FAULT_COUNTER_H  0x01
0231 
0232 #define REG_PORT_1_LINK_MD_RESULT   0x1B
0233 #define REG_PORT_2_LINK_MD_RESULT   0x2B
0234 #define REG_PORT_3_LINK_MD_RESULT   0x3B
0235 #define REG_PORT_4_LINK_MD_RESULT   0x4B
0236 
0237 #define PORT_CABLE_FAULT_COUNTER_L  0xFF
0238 #define PORT_CABLE_FAULT_COUNTER    0x1FF
0239 
0240 #define REG_PORT_1_CTRL_9       0x1C
0241 #define REG_PORT_2_CTRL_9       0x2C
0242 #define REG_PORT_3_CTRL_9       0x3C
0243 #define REG_PORT_4_CTRL_9       0x4C
0244 
0245 #define PORT_AUTO_NEG_ENABLE        BIT(7)
0246 #define PORT_AUTO_NEG_DISABLE       BIT(7)
0247 #define PORT_FORCE_100_MBIT     BIT(6)
0248 #define PORT_FORCE_FULL_DUPLEX      BIT(5)
0249 
0250 #define REG_PORT_1_CTRL_10      0x1D
0251 #define REG_PORT_2_CTRL_10      0x2D
0252 #define REG_PORT_3_CTRL_10      0x3D
0253 #define REG_PORT_4_CTRL_10      0x4D
0254 
0255 #define PORT_LED_OFF            BIT(7)
0256 #define PORT_TX_DISABLE         BIT(6)
0257 #define PORT_AUTO_NEG_RESTART       BIT(5)
0258 #define PORT_POWER_DOWN         BIT(3)
0259 #define PORT_AUTO_MDIX_DISABLE      BIT(2)
0260 #define PORT_FORCE_MDIX         BIT(1)
0261 #define PORT_MAC_LOOPBACK       BIT(0)
0262 
0263 #define REG_PORT_1_STATUS_2     0x1E
0264 #define REG_PORT_2_STATUS_2     0x2E
0265 #define REG_PORT_3_STATUS_2     0x3E
0266 #define REG_PORT_4_STATUS_2     0x4E
0267 
0268 #define PORT_MDIX_STATUS        BIT(7)
0269 #define PORT_AUTO_NEG_COMPLETE      BIT(6)
0270 #define PORT_STAT_LINK_GOOD     BIT(5)
0271 
0272 #define REG_PORT_1_STATUS_3     0x1F
0273 #define REG_PORT_2_STATUS_3     0x2F
0274 #define REG_PORT_3_STATUS_3     0x3F
0275 #define REG_PORT_4_STATUS_3     0x4F
0276 
0277 #define PORT_PHY_LOOPBACK       BIT(7)
0278 #define PORT_PHY_ISOLATE        BIT(5)
0279 #define PORT_PHY_SOFT_RESET     BIT(4)
0280 #define PORT_PHY_FORCE_LINK     BIT(3)
0281 #define PORT_PHY_MODE_M         0x7
0282 #define PHY_MODE_IN_AUTO_NEG        1
0283 #define PHY_MODE_10BT_HALF      2
0284 #define PHY_MODE_100BT_HALF     3
0285 #define PHY_MODE_10BT_FULL      5
0286 #define PHY_MODE_100BT_FULL     6
0287 #define PHY_MODE_ISOLDATE       7
0288 
0289 #define REG_PORT_CTRL_0         0x00
0290 #define REG_PORT_CTRL_1         0x01
0291 #define REG_PORT_CTRL_2         0x02
0292 #define REG_PORT_CTRL_VID       0x03
0293 
0294 #define REG_PORT_CTRL_5         0x05
0295 
0296 #define REG_PORT_STATUS_1       0x09
0297 #define REG_PORT_LINK_MD_CTRL       0x0A
0298 #define REG_PORT_LINK_MD_RESULT     0x0B
0299 #define REG_PORT_CTRL_9         0x0C
0300 #define REG_PORT_CTRL_10        0x0D
0301 #define REG_PORT_STATUS_3       0x0F
0302 
0303 #define REG_PORT_CTRL_12        0xA0
0304 #define REG_PORT_CTRL_13        0xA1
0305 #define REG_PORT_RATE_CTRL_3        0xA2
0306 #define REG_PORT_RATE_CTRL_2        0xA3
0307 #define REG_PORT_RATE_CTRL_1        0xA4
0308 #define REG_PORT_RATE_CTRL_0        0xA5
0309 #define REG_PORT_RATE_LIMIT     0xA6
0310 #define REG_PORT_IN_RATE_0      0xA7
0311 #define REG_PORT_IN_RATE_1      0xA8
0312 #define REG_PORT_IN_RATE_2      0xA9
0313 #define REG_PORT_IN_RATE_3      0xAA
0314 #define REG_PORT_OUT_RATE_0     0xAB
0315 #define REG_PORT_OUT_RATE_1     0xAC
0316 #define REG_PORT_OUT_RATE_2     0xAD
0317 #define REG_PORT_OUT_RATE_3     0xAE
0318 
0319 #define PORT_CTRL_ADDR(port, addr)      \
0320     ((addr) + REG_PORT_1_CTRL_0 + (port) *  \
0321         (REG_PORT_2_CTRL_0 - REG_PORT_1_CTRL_0))
0322 
0323 #define REG_SW_MAC_ADDR_0       0x68
0324 #define REG_SW_MAC_ADDR_1       0x69
0325 #define REG_SW_MAC_ADDR_2       0x6A
0326 #define REG_SW_MAC_ADDR_3       0x6B
0327 #define REG_SW_MAC_ADDR_4       0x6C
0328 #define REG_SW_MAC_ADDR_5       0x6D
0329 
0330 #define TABLE_EXT_SELECT_S      5
0331 #define TABLE_EEE_V         1
0332 #define TABLE_ACL_V         2
0333 #define TABLE_PME_V         4
0334 #define TABLE_LINK_MD_V         5
0335 #define TABLE_EEE           (TABLE_EEE_V << TABLE_EXT_SELECT_S)
0336 #define TABLE_ACL           (TABLE_ACL_V << TABLE_EXT_SELECT_S)
0337 #define TABLE_PME           (TABLE_PME_V << TABLE_EXT_SELECT_S)
0338 #define TABLE_LINK_MD           (TABLE_LINK_MD << TABLE_EXT_SELECT_S)
0339 #define TABLE_READ          BIT(4)
0340 #define TABLE_SELECT_S          2
0341 #define TABLE_STATIC_MAC_V      0
0342 #define TABLE_VLAN_V            1
0343 #define TABLE_DYNAMIC_MAC_V     2
0344 #define TABLE_MIB_V         3
0345 #define TABLE_STATIC_MAC        (TABLE_STATIC_MAC_V << TABLE_SELECT_S)
0346 #define TABLE_VLAN          (TABLE_VLAN_V << TABLE_SELECT_S)
0347 #define TABLE_DYNAMIC_MAC       (TABLE_DYNAMIC_MAC_V << TABLE_SELECT_S)
0348 #define TABLE_MIB           (TABLE_MIB_V << TABLE_SELECT_S)
0349 
0350 #define REG_IND_CTRL_1          0x6F
0351 
0352 #define TABLE_ENTRY_MASK        0x03FF
0353 #define TABLE_EXT_ENTRY_MASK        0x0FFF
0354 
0355 #define REG_IND_DATA_5          0x73
0356 #define REG_IND_DATA_2          0x76
0357 #define REG_IND_DATA_1          0x77
0358 #define REG_IND_DATA_0          0x78
0359 
0360 #define REG_IND_DATA_PME_EEE_ACL    0xA0
0361 
0362 #define REG_INT_STATUS          0x7C
0363 #define REG_INT_ENABLE          0x7D
0364 
0365 #define INT_PME             BIT(4)
0366 
0367 #define REG_ACL_INT_STATUS      0x7E
0368 #define REG_ACL_INT_ENABLE      0x7F
0369 
0370 #define INT_PORT_5          BIT(4)
0371 #define INT_PORT_4          BIT(3)
0372 #define INT_PORT_3          BIT(2)
0373 #define INT_PORT_2          BIT(1)
0374 #define INT_PORT_1          BIT(0)
0375 
0376 #define INT_PORT_ALL            \
0377     (INT_PORT_5 | INT_PORT_4 | INT_PORT_3 | INT_PORT_2 | INT_PORT_1)
0378 
0379 #define REG_SW_CTRL_12          0x80
0380 #define REG_SW_CTRL_13          0x81
0381 
0382 #define SWITCH_802_1P_MASK      3
0383 #define SWITCH_802_1P_BASE      3
0384 #define SWITCH_802_1P_SHIFT     2
0385 
0386 #define SW_802_1P_MAP_M         KS_PRIO_M
0387 #define SW_802_1P_MAP_S         KS_PRIO_S
0388 
0389 #define REG_SWITCH_CTRL_14      0x82
0390 
0391 #define SW_PRIO_MAPPING_M       KS_PRIO_M
0392 #define SW_PRIO_MAPPING_S       6
0393 #define SW_PRIO_MAP_3_HI        0
0394 #define SW_PRIO_MAP_2_HI        2
0395 #define SW_PRIO_MAP_0_LO        3
0396 
0397 #define REG_SW_CTRL_15          0x83
0398 #define REG_SW_CTRL_16          0x84
0399 #define REG_SW_CTRL_17          0x85
0400 #define REG_SW_CTRL_18          0x86
0401 
0402 #define SW_SELF_ADDR_FILTER_ENABLE  BIT(6)
0403 
0404 #define REG_SW_UNK_UCAST_CTRL       0x83
0405 #define REG_SW_UNK_MCAST_CTRL       0x84
0406 #define REG_SW_UNK_VID_CTRL     0x85
0407 #define REG_SW_UNK_IP_MCAST_CTRL    0x86
0408 
0409 #define SW_UNK_FWD_ENABLE       BIT(5)
0410 #define SW_UNK_FWD_MAP          KS_PORT_M
0411 
0412 #define REG_SW_CTRL_19          0x87
0413 
0414 #define SW_IN_RATE_LIMIT_PERIOD_M   0x3
0415 #define SW_IN_RATE_LIMIT_PERIOD_S   4
0416 #define SW_IN_RATE_LIMIT_16_MS      0
0417 #define SW_IN_RATE_LIMIT_64_MS      1
0418 #define SW_IN_RATE_LIMIT_256_MS     2
0419 #define SW_OUT_RATE_LIMIT_QUEUE_BASED   BIT(3)
0420 #define SW_INS_TAG_ENABLE       BIT(2)
0421 
0422 #define REG_TOS_PRIO_CTRL_0     0x90
0423 #define REG_TOS_PRIO_CTRL_1     0x91
0424 #define REG_TOS_PRIO_CTRL_2     0x92
0425 #define REG_TOS_PRIO_CTRL_3     0x93
0426 #define REG_TOS_PRIO_CTRL_4     0x94
0427 #define REG_TOS_PRIO_CTRL_5     0x95
0428 #define REG_TOS_PRIO_CTRL_6     0x96
0429 #define REG_TOS_PRIO_CTRL_7     0x97
0430 #define REG_TOS_PRIO_CTRL_8     0x98
0431 #define REG_TOS_PRIO_CTRL_9     0x99
0432 #define REG_TOS_PRIO_CTRL_10        0x9A
0433 #define REG_TOS_PRIO_CTRL_11        0x9B
0434 #define REG_TOS_PRIO_CTRL_12        0x9C
0435 #define REG_TOS_PRIO_CTRL_13        0x9D
0436 #define REG_TOS_PRIO_CTRL_14        0x9E
0437 #define REG_TOS_PRIO_CTRL_15        0x9F
0438 
0439 #define TOS_PRIO_M          KS_PRIO_M
0440 #define TOS_PRIO_S          KS_PRIO_S
0441 
0442 #define REG_SW_CTRL_20          0xA3
0443 
0444 #define SW_GMII_DRIVE_STRENGTH_S    4
0445 #define SW_DRIVE_STRENGTH_M     0x7
0446 #define SW_DRIVE_STRENGTH_2MA       0
0447 #define SW_DRIVE_STRENGTH_4MA       1
0448 #define SW_DRIVE_STRENGTH_8MA       2
0449 #define SW_DRIVE_STRENGTH_12MA      3
0450 #define SW_DRIVE_STRENGTH_16MA      4
0451 #define SW_DRIVE_STRENGTH_20MA      5
0452 #define SW_DRIVE_STRENGTH_24MA      6
0453 #define SW_DRIVE_STRENGTH_28MA      7
0454 #define SW_MII_DRIVE_STRENGTH_S     0
0455 
0456 #define REG_SW_CTRL_21          0xA4
0457 
0458 #define SW_IPV6_MLD_OPTION      BIT(3)
0459 #define SW_IPV6_MLD_SNOOP       BIT(2)
0460 
0461 #define REG_PORT_1_CTRL_12      0xB0
0462 #define REG_PORT_2_CTRL_12      0xC0
0463 #define REG_PORT_3_CTRL_12      0xD0
0464 #define REG_PORT_4_CTRL_12      0xE0
0465 #define REG_PORT_5_CTRL_12      0xF0
0466 
0467 #define PORT_PASS_ALL           BIT(6)
0468 #define PORT_INS_TAG_FOR_PORT_5_S   3
0469 #define PORT_INS_TAG_FOR_PORT_5     BIT(3)
0470 #define PORT_INS_TAG_FOR_PORT_4     BIT(2)
0471 #define PORT_INS_TAG_FOR_PORT_3     BIT(1)
0472 #define PORT_INS_TAG_FOR_PORT_2     BIT(0)
0473 
0474 #define REG_PORT_1_CTRL_13      0xB1
0475 #define REG_PORT_2_CTRL_13      0xC1
0476 #define REG_PORT_3_CTRL_13      0xD1
0477 #define REG_PORT_4_CTRL_13      0xE1
0478 #define REG_PORT_5_CTRL_13      0xF1
0479 
0480 #define PORT_QUEUE_SPLIT_H      BIT(1)
0481 #define PORT_QUEUE_SPLIT_1      0
0482 #define PORT_QUEUE_SPLIT_2      1
0483 #define PORT_QUEUE_SPLIT_4      2
0484 #define PORT_DROP_TAG           BIT(0)
0485 
0486 #define REG_PORT_1_CTRL_14      0xB2
0487 #define REG_PORT_2_CTRL_14      0xC2
0488 #define REG_PORT_3_CTRL_14      0xD2
0489 #define REG_PORT_4_CTRL_14      0xE2
0490 #define REG_PORT_5_CTRL_14      0xF2
0491 #define REG_PORT_1_CTRL_15      0xB3
0492 #define REG_PORT_2_CTRL_15      0xC3
0493 #define REG_PORT_3_CTRL_15      0xD3
0494 #define REG_PORT_4_CTRL_15      0xE3
0495 #define REG_PORT_5_CTRL_15      0xF3
0496 #define REG_PORT_1_CTRL_16      0xB4
0497 #define REG_PORT_2_CTRL_16      0xC4
0498 #define REG_PORT_3_CTRL_16      0xD4
0499 #define REG_PORT_4_CTRL_16      0xE4
0500 #define REG_PORT_5_CTRL_16      0xF4
0501 #define REG_PORT_1_CTRL_17      0xB5
0502 #define REG_PORT_2_CTRL_17      0xC5
0503 #define REG_PORT_3_CTRL_17      0xD5
0504 #define REG_PORT_4_CTRL_17      0xE5
0505 #define REG_PORT_5_CTRL_17      0xF5
0506 
0507 #define REG_PORT_1_RATE_CTRL_3      0xB2
0508 #define REG_PORT_1_RATE_CTRL_2      0xB3
0509 #define REG_PORT_1_RATE_CTRL_1      0xB4
0510 #define REG_PORT_1_RATE_CTRL_0      0xB5
0511 #define REG_PORT_2_RATE_CTRL_3      0xC2
0512 #define REG_PORT_2_RATE_CTRL_2      0xC3
0513 #define REG_PORT_2_RATE_CTRL_1      0xC4
0514 #define REG_PORT_2_RATE_CTRL_0      0xC5
0515 #define REG_PORT_3_RATE_CTRL_3      0xD2
0516 #define REG_PORT_3_RATE_CTRL_2      0xD3
0517 #define REG_PORT_3_RATE_CTRL_1      0xD4
0518 #define REG_PORT_3_RATE_CTRL_0      0xD5
0519 #define REG_PORT_4_RATE_CTRL_3      0xE2
0520 #define REG_PORT_4_RATE_CTRL_2      0xE3
0521 #define REG_PORT_4_RATE_CTRL_1      0xE4
0522 #define REG_PORT_4_RATE_CTRL_0      0xE5
0523 #define REG_PORT_5_RATE_CTRL_3      0xF2
0524 #define REG_PORT_5_RATE_CTRL_2      0xF3
0525 #define REG_PORT_5_RATE_CTRL_1      0xF4
0526 #define REG_PORT_5_RATE_CTRL_0      0xF5
0527 
0528 #define RATE_CTRL_ENABLE        BIT(7)
0529 #define RATE_RATIO_M            (BIT(7) - 1)
0530 
0531 #define PORT_OUT_RATE_ENABLE        BIT(7)
0532 
0533 #define REG_PORT_1_RATE_LIMIT       0xB6
0534 #define REG_PORT_2_RATE_LIMIT       0xC6
0535 #define REG_PORT_3_RATE_LIMIT       0xD6
0536 #define REG_PORT_4_RATE_LIMIT       0xE6
0537 #define REG_PORT_5_RATE_LIMIT       0xF6
0538 
0539 #define PORT_IN_PORT_BASED_S        6
0540 #define PORT_RATE_PACKET_BASED_S    5
0541 #define PORT_IN_FLOW_CTRL_S     4
0542 #define PORT_IN_LIMIT_MODE_M        0x3
0543 #define PORT_IN_LIMIT_MODE_S        2
0544 #define PORT_COUNT_IFG_S        1
0545 #define PORT_COUNT_PREAMBLE_S       0
0546 #define PORT_IN_PORT_BASED      BIT(PORT_IN_PORT_BASED_S)
0547 #define PORT_RATE_PACKET_BASED      BIT(PORT_RATE_PACKET_BASED_S)
0548 #define PORT_IN_FLOW_CTRL       BIT(PORT_IN_FLOW_CTRL_S)
0549 #define PORT_IN_ALL         0
0550 #define PORT_IN_UNICAST         1
0551 #define PORT_IN_MULTICAST       2
0552 #define PORT_IN_BROADCAST       3
0553 #define PORT_COUNT_IFG          BIT(PORT_COUNT_IFG_S)
0554 #define PORT_COUNT_PREAMBLE     BIT(PORT_COUNT_PREAMBLE_S)
0555 
0556 #define REG_PORT_1_IN_RATE_0        0xB7
0557 #define REG_PORT_2_IN_RATE_0        0xC7
0558 #define REG_PORT_3_IN_RATE_0        0xD7
0559 #define REG_PORT_4_IN_RATE_0        0xE7
0560 #define REG_PORT_5_IN_RATE_0        0xF7
0561 #define REG_PORT_1_IN_RATE_1        0xB8
0562 #define REG_PORT_2_IN_RATE_1        0xC8
0563 #define REG_PORT_3_IN_RATE_1        0xD8
0564 #define REG_PORT_4_IN_RATE_1        0xE8
0565 #define REG_PORT_5_IN_RATE_1        0xF8
0566 #define REG_PORT_1_IN_RATE_2        0xB9
0567 #define REG_PORT_2_IN_RATE_2        0xC9
0568 #define REG_PORT_3_IN_RATE_2        0xD9
0569 #define REG_PORT_4_IN_RATE_2        0xE9
0570 #define REG_PORT_5_IN_RATE_2        0xF9
0571 #define REG_PORT_1_IN_RATE_3        0xBA
0572 #define REG_PORT_2_IN_RATE_3        0xCA
0573 #define REG_PORT_3_IN_RATE_3        0xDA
0574 #define REG_PORT_4_IN_RATE_3        0xEA
0575 #define REG_PORT_5_IN_RATE_3        0xFA
0576 
0577 #define PORT_IN_RATE_ENABLE     BIT(7)
0578 #define PORT_RATE_LIMIT_M       (BIT(7) - 1)
0579 
0580 #define REG_PORT_1_OUT_RATE_0       0xBB
0581 #define REG_PORT_2_OUT_RATE_0       0xCB
0582 #define REG_PORT_3_OUT_RATE_0       0xDB
0583 #define REG_PORT_4_OUT_RATE_0       0xEB
0584 #define REG_PORT_5_OUT_RATE_0       0xFB
0585 #define REG_PORT_1_OUT_RATE_1       0xBC
0586 #define REG_PORT_2_OUT_RATE_1       0xCC
0587 #define REG_PORT_3_OUT_RATE_1       0xDC
0588 #define REG_PORT_4_OUT_RATE_1       0xEC
0589 #define REG_PORT_5_OUT_RATE_1       0xFC
0590 #define REG_PORT_1_OUT_RATE_2       0xBD
0591 #define REG_PORT_2_OUT_RATE_2       0xCD
0592 #define REG_PORT_3_OUT_RATE_2       0xDD
0593 #define REG_PORT_4_OUT_RATE_2       0xED
0594 #define REG_PORT_5_OUT_RATE_2       0xFD
0595 #define REG_PORT_1_OUT_RATE_3       0xBE
0596 #define REG_PORT_2_OUT_RATE_3       0xCE
0597 #define REG_PORT_3_OUT_RATE_3       0xDE
0598 #define REG_PORT_4_OUT_RATE_3       0xEE
0599 #define REG_PORT_5_OUT_RATE_3       0xFE
0600 
0601 /* 88x3 specific */
0602 
0603 #define REG_SW_INSERT_SRC_PVID      0xC2
0604 
0605 /* PME */
0606 
0607 #define SW_PME_OUTPUT_ENABLE        BIT(1)
0608 #define SW_PME_ACTIVE_HIGH      BIT(0)
0609 
0610 #define PORT_MAGIC_PACKET_DETECT    BIT(2)
0611 #define PORT_LINK_UP_DETECT     BIT(1)
0612 #define PORT_ENERGY_DETECT      BIT(0)
0613 
0614 /* ACL */
0615 
0616 #define ACL_FIRST_RULE_M        0xF
0617 
0618 #define ACL_MODE_M          0x3
0619 #define ACL_MODE_S          4
0620 #define ACL_MODE_DISABLE        0
0621 #define ACL_MODE_LAYER_2        1
0622 #define ACL_MODE_LAYER_3        2
0623 #define ACL_MODE_LAYER_4        3
0624 #define ACL_ENABLE_M            0x3
0625 #define ACL_ENABLE_S            2
0626 #define ACL_ENABLE_2_COUNT      0
0627 #define ACL_ENABLE_2_TYPE       1
0628 #define ACL_ENABLE_2_MAC        2
0629 #define ACL_ENABLE_2_BOTH       3
0630 #define ACL_ENABLE_3_IP         1
0631 #define ACL_ENABLE_3_SRC_DST_COMP   2
0632 #define ACL_ENABLE_4_PROTOCOL       0
0633 #define ACL_ENABLE_4_TCP_PORT_COMP  1
0634 #define ACL_ENABLE_4_UDP_PORT_COMP  2
0635 #define ACL_ENABLE_4_TCP_SEQN_COMP  3
0636 #define ACL_SRC             BIT(1)
0637 #define ACL_EQUAL           BIT(0)
0638 
0639 #define ACL_MAX_PORT            0xFFFF
0640 
0641 #define ACL_MIN_PORT            0xFFFF
0642 #define ACL_IP_ADDR         0xFFFFFFFF
0643 #define ACL_TCP_SEQNUM          0xFFFFFFFF
0644 
0645 #define ACL_RESERVED            0xF8
0646 #define ACL_PORT_MODE_M         0x3
0647 #define ACL_PORT_MODE_S         1
0648 #define ACL_PORT_MODE_DISABLE       0
0649 #define ACL_PORT_MODE_EITHER        1
0650 #define ACL_PORT_MODE_IN_RANGE      2
0651 #define ACL_PORT_MODE_OUT_OF_RANGE  3
0652 
0653 #define ACL_TCP_FLAG_ENABLE     BIT(0)
0654 
0655 #define ACL_TCP_FLAG_M          0xFF
0656 
0657 #define ACL_TCP_FLAG            0xFF
0658 #define ACL_ETH_TYPE            0xFFFF
0659 #define ACL_IP_M            0xFFFFFFFF
0660 
0661 #define ACL_PRIO_MODE_M         0x3
0662 #define ACL_PRIO_MODE_S         6
0663 #define ACL_PRIO_MODE_DISABLE       0
0664 #define ACL_PRIO_MODE_HIGHER        1
0665 #define ACL_PRIO_MODE_LOWER     2
0666 #define ACL_PRIO_MODE_REPLACE       3
0667 #define ACL_PRIO_M          0x7
0668 #define ACL_PRIO_S          3
0669 #define ACL_VLAN_PRIO_REPLACE       BIT(2)
0670 #define ACL_VLAN_PRIO_M         0x7
0671 #define ACL_VLAN_PRIO_HI_M      0x3
0672 
0673 #define ACL_VLAN_PRIO_LO_M      0x8
0674 #define ACL_VLAN_PRIO_S         7
0675 #define ACL_MAP_MODE_M          0x3
0676 #define ACL_MAP_MODE_S          5
0677 #define ACL_MAP_MODE_DISABLE        0
0678 #define ACL_MAP_MODE_OR         1
0679 #define ACL_MAP_MODE_AND        2
0680 #define ACL_MAP_MODE_REPLACE        3
0681 #define ACL_MAP_PORT_M          0x1F
0682 
0683 #define ACL_CNT_M           (BIT(11) - 1)
0684 #define ACL_CNT_S           5
0685 #define ACL_MSEC_UNIT           BIT(4)
0686 #define ACL_INTR_MODE           BIT(3)
0687 
0688 #define REG_PORT_ACL_BYTE_EN_MSB    0x10
0689 
0690 #define ACL_BYTE_EN_MSB_M       0x3F
0691 
0692 #define REG_PORT_ACL_BYTE_EN_LSB    0x11
0693 
0694 #define ACL_ACTION_START        0xA
0695 #define ACL_ACTION_LEN          2
0696 #define ACL_INTR_CNT_START      0xB
0697 #define ACL_RULESET_START       0xC
0698 #define ACL_RULESET_LEN         2
0699 #define ACL_TABLE_LEN           14
0700 
0701 #define ACL_ACTION_ENABLE       0x000C
0702 #define ACL_MATCH_ENABLE        0x1FF0
0703 #define ACL_RULESET_ENABLE      0x2003
0704 #define ACL_BYTE_ENABLE         ((ACL_BYTE_EN_MSB_M << 8) | 0xFF)
0705 #define ACL_MODE_ENABLE         (0x10 << 8)
0706 
0707 #define REG_PORT_ACL_CTRL_0     0x12
0708 
0709 #define PORT_ACL_WRITE_DONE     BIT(6)
0710 #define PORT_ACL_READ_DONE      BIT(5)
0711 #define PORT_ACL_WRITE          BIT(4)
0712 #define PORT_ACL_INDEX_M        0xF
0713 
0714 #define REG_PORT_ACL_CTRL_1     0x13
0715 
0716 #define PORT_ACL_FORCE_DLR_MISS     BIT(0)
0717 
0718 #define KSZ8795_ID_HI           0x0022
0719 #define KSZ8795_ID_LO           0x1550
0720 #define KSZ8863_ID_LO           0x1430
0721 
0722 #define KSZ8795_SW_ID           0x8795
0723 
0724 #define PHY_REG_LINK_MD         0x1D
0725 
0726 #define PHY_START_CABLE_DIAG        BIT(15)
0727 #define PHY_CABLE_DIAG_RESULT_M     GENMASK(14, 13)
0728 #define PHY_CABLE_DIAG_RESULT       0x6000
0729 #define PHY_CABLE_STAT_NORMAL       0x0000
0730 #define PHY_CABLE_STAT_OPEN     0x2000
0731 #define PHY_CABLE_STAT_SHORT        0x4000
0732 #define PHY_CABLE_STAT_FAILED       0x6000
0733 #define PHY_CABLE_10M_SHORT     BIT(12)
0734 #define PHY_CABLE_FAULT_COUNTER_M   GENMASK(8, 0)
0735 
0736 #define PHY_REG_PHY_CTRL        0x1F
0737 
0738 #define PHY_MODE_M          0x7
0739 #define PHY_MODE_S          8
0740 #define PHY_STAT_REVERSED_POLARITY  BIT(5)
0741 #define PHY_STAT_MDIX           BIT(4)
0742 #define PHY_FORCE_LINK          BIT(3)
0743 #define PHY_POWER_SAVING_ENABLE     BIT(2)
0744 #define PHY_REMOTE_LOOPBACK     BIT(1)
0745 
0746 /* Chip resource */
0747 
0748 #define PRIO_QUEUES         4
0749 
0750 #define KS_PRIO_IN_REG          4
0751 
0752 #define MIB_COUNTER_NUM     0x20
0753 
0754 /* Common names used by other drivers */
0755 
0756 #define P_BCAST_STORM_CTRL      REG_PORT_CTRL_0
0757 #define P_PRIO_CTRL         REG_PORT_CTRL_0
0758 #define P_TAG_CTRL          REG_PORT_CTRL_0
0759 #define P_MIRROR_CTRL           REG_PORT_CTRL_1
0760 #define P_802_1P_CTRL           REG_PORT_CTRL_2
0761 #define P_PASS_ALL_CTRL         REG_PORT_CTRL_12
0762 #define P_INS_SRC_PVID_CTRL     REG_PORT_CTRL_12
0763 #define P_DROP_TAG_CTRL         REG_PORT_CTRL_13
0764 #define P_RATE_LIMIT_CTRL       REG_PORT_RATE_LIMIT
0765 
0766 #define S_UNKNOWN_DA_CTRL       REG_SWITCH_CTRL_12
0767 #define S_FORWARD_INVALID_VID_CTRL  REG_FORWARD_INVALID_VID
0768 
0769 #define S_FLUSH_TABLE_CTRL      REG_SW_CTRL_0
0770 #define S_LINK_AGING_CTRL       REG_SW_CTRL_0
0771 #define S_HUGE_PACKET_CTRL      REG_SW_CTRL_1
0772 #define S_MIRROR_CTRL           REG_SW_CTRL_3
0773 #define S_REPLACE_VID_CTRL      REG_SW_CTRL_4
0774 #define S_PASS_PAUSE_CTRL       REG_SW_CTRL_10
0775 #define S_802_1P_PRIO_CTRL      REG_SW_CTRL_12
0776 #define S_TOS_PRIO_CTRL         REG_TOS_PRIO_CTRL_0
0777 #define S_IPV6_MLD_CTRL         REG_SW_CTRL_21
0778 
0779 #define IND_ACC_TABLE(table)        ((table) << 8)
0780 
0781 /* */
0782 #define REG_IND_EEE_GLOB2_LO        0x34
0783 #define REG_IND_EEE_GLOB2_HI        0x35
0784 
0785 /**
0786  * MIB_COUNTER_VALUE            00-00000000-3FFFFFFF
0787  * MIB_TOTAL_BYTES          00-0000000F-FFFFFFFF
0788  * MIB_PACKET_DROPPED           00-00000000-0000FFFF
0789  * MIB_COUNTER_VALID            00-00000020-00000000
0790  * MIB_COUNTER_OVERFLOW         00-00000040-00000000
0791  */
0792 
0793 #define MIB_COUNTER_VALUE       0x3FFFFFFF
0794 
0795 #define KSZ8795_MIB_TOTAL_RX_0      0x100
0796 #define KSZ8795_MIB_TOTAL_TX_0      0x101
0797 #define KSZ8795_MIB_TOTAL_RX_1      0x104
0798 #define KSZ8795_MIB_TOTAL_TX_1      0x105
0799 
0800 #define KSZ8863_MIB_PACKET_DROPPED_TX_0 0x100
0801 #define KSZ8863_MIB_PACKET_DROPPED_RX_0 0x105
0802 
0803 #define MIB_PACKET_DROPPED      0x0000FFFF
0804 
0805 #define MIB_TOTAL_BYTES_H       0x0000000F
0806 
0807 #define TAIL_TAG_OVERRIDE       BIT(6)
0808 #define TAIL_TAG_LOOKUP         BIT(7)
0809 
0810 #define FID_ENTRIES         128
0811 
0812 #endif