1*eef4f27bSRobert Mustacchi /* 2*eef4f27bSRobert Mustacchi * Copyright 2014-2017 Cavium, Inc. 3*eef4f27bSRobert Mustacchi * The contents of this file are subject to the terms of the Common Development 4*eef4f27bSRobert Mustacchi * and Distribution License, v.1, (the "License"). 5*eef4f27bSRobert Mustacchi * 6*eef4f27bSRobert Mustacchi * You may not use this file except in compliance with the License. 7*eef4f27bSRobert Mustacchi * 8*eef4f27bSRobert Mustacchi * You can obtain a copy of the License at available 9*eef4f27bSRobert Mustacchi * at http://opensource.org/licenses/CDDL-1.0 10*eef4f27bSRobert Mustacchi * 11*eef4f27bSRobert Mustacchi * See the License for the specific language governing permissions and 12*eef4f27bSRobert Mustacchi * limitations under the License. 13*eef4f27bSRobert Mustacchi */ 14*eef4f27bSRobert Mustacchi 15*eef4f27bSRobert Mustacchi #ifndef _54xx_reg_h 16*eef4f27bSRobert Mustacchi #define _54xx_reg_h 17*eef4f27bSRobert Mustacchi 18*eef4f27bSRobert Mustacchi #include "bits.h" 19*eef4f27bSRobert Mustacchi 20*eef4f27bSRobert Mustacchi 21*eef4f27bSRobert Mustacchi 22*eef4f27bSRobert Mustacchi /* Control register. */ 23*eef4f27bSRobert Mustacchi #define PHY_CTRL_REG 0x00 24*eef4f27bSRobert Mustacchi #define PHY_CTRL_SPEED_MASK (BIT_6 | BIT_13) 25*eef4f27bSRobert Mustacchi #define PHY_CTRL_SPEED_SELECT_10MBPS BIT_NONE 26*eef4f27bSRobert Mustacchi #define PHY_CTRL_SPEED_SELECT_100MBPS BIT_13 27*eef4f27bSRobert Mustacchi #define PHY_CTRL_SPEED_SELECT_1000MBPS BIT_6 28*eef4f27bSRobert Mustacchi #define PHY_CTRL_COLLISION_TEST_ENABLE BIT_7 29*eef4f27bSRobert Mustacchi #define PHY_CTRL_FULL_DUPLEX_MODE BIT_8 30*eef4f27bSRobert Mustacchi #define PHY_CTRL_RESTART_AUTO_NEG BIT_9 31*eef4f27bSRobert Mustacchi #define PHY_CTRL_ISOLATE_PHY BIT_10 32*eef4f27bSRobert Mustacchi #define PHY_CTRL_LOWER_POWER_MODE BIT_11 33*eef4f27bSRobert Mustacchi #define PHY_CTRL_AUTO_NEG_ENABLE BIT_12 34*eef4f27bSRobert Mustacchi #define PHY_CTRL_LOOPBACK_MODE BIT_14 35*eef4f27bSRobert Mustacchi #define PHY_CTRL_PHY_RESET BIT_15 36*eef4f27bSRobert Mustacchi 37*eef4f27bSRobert Mustacchi 38*eef4f27bSRobert Mustacchi /* Status register. */ 39*eef4f27bSRobert Mustacchi #define PHY_STATUS_REG 0x01 40*eef4f27bSRobert Mustacchi #define PHY_STATUS_LINK_PASS BIT_2 41*eef4f27bSRobert Mustacchi #define PHY_STATUS_AUTO_NEG_COMPLETE BIT_5 42*eef4f27bSRobert Mustacchi 43*eef4f27bSRobert Mustacchi 44*eef4f27bSRobert Mustacchi /* Phy Id registers. */ 45*eef4f27bSRobert Mustacchi #define PHY_ID1_REG 0x02 46*eef4f27bSRobert Mustacchi #define PHY_ID2_REG 0x03 47*eef4f27bSRobert Mustacchi 48*eef4f27bSRobert Mustacchi /* PHY_ID1: bits 31-16; PHY_ID2: bits 15-0. */ 49*eef4f27bSRobert Mustacchi #define PHY_BCM5400_PHY_ID 0x00206040 50*eef4f27bSRobert Mustacchi #define PHY_BCM5401_PHY_ID 0x00206050 51*eef4f27bSRobert Mustacchi #define PHY_BCM5411_PHY_ID 0x00206070 52*eef4f27bSRobert Mustacchi #define PHY_BCM5701_PHY_ID 0x00206110 53*eef4f27bSRobert Mustacchi #define PHY_BCM5703_PHY_ID 0x00206160 54*eef4f27bSRobert Mustacchi #define PHY_BCM5706_PHY_ID 0x00206160 55*eef4f27bSRobert Mustacchi 56*eef4f27bSRobert Mustacchi #define PHY_ID(id) ((id) & 0xfffffff0) 57*eef4f27bSRobert Mustacchi #define PHY_REV_ID(id) ((id) & 0xf) 58*eef4f27bSRobert Mustacchi #define PHY_BCM5401_B0_REV 0x1 59*eef4f27bSRobert Mustacchi #define PHY_BCM5401_B2_REV 0x3 60*eef4f27bSRobert Mustacchi #define PHY_BCM5401_C0_REV 0x6 61*eef4f27bSRobert Mustacchi 62*eef4f27bSRobert Mustacchi 63*eef4f27bSRobert Mustacchi /* Auto-negotiation advertisement register. */ 64*eef4f27bSRobert Mustacchi #define PHY_AN_AD_REG 0x04 65*eef4f27bSRobert Mustacchi #define PHY_AN_AD_10BASET_HALF BIT_5 66*eef4f27bSRobert Mustacchi #define PHY_AN_AD_10BASET_FULL BIT_6 67*eef4f27bSRobert Mustacchi #define PHY_AN_AD_100BASETX_HALF BIT_7 68*eef4f27bSRobert Mustacchi #define PHY_AN_AD_100BASETX_FULL BIT_8 69*eef4f27bSRobert Mustacchi #define PHY_AN_AD_PAUSE_CAPABLE BIT_10 70*eef4f27bSRobert Mustacchi #define PHY_AN_AD_ASYM_PAUSE BIT_11 71*eef4f27bSRobert Mustacchi #define PHY_AN_AD_PROTOCOL_802_3_CSMA_CD 0x01 72*eef4f27bSRobert Mustacchi 73*eef4f27bSRobert Mustacchi 74*eef4f27bSRobert Mustacchi /* Apply to 1000-X fiber mode only */ 75*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_FULL_DUPLEX BIT_5 76*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_HALF_DUPLEX BIT_6 77*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_PAUSE_CAPABLE BIT_7 78*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_ASYM_PAUSE BIT_8 79*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_REMOTE_FAULT_LINK_FAILURE BIT_12 80*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_REMOTE_FAULT_OFFLINE BIT_13 81*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000X_REMOTE_FAULT_AUTONEG_ERR (BIT_12 | BIT_13) 82*eef4f27bSRobert Mustacchi 83*eef4f27bSRobert Mustacchi /* Auto-negotiation Link Partner Ability register. */ 84*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_ABILITY_REG 0x05 85*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_10BASET_HALF BIT_5 86*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_10BASET_FULL BIT_6 87*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_100BASETX_HALF BIT_7 88*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_100BASETX_FULL BIT_8 89*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_PAUSE_CAPABLE BIT_10 90*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_ASYM_PAUSE BIT_11 91*eef4f27bSRobert Mustacchi 92*eef4f27bSRobert Mustacchi 93*eef4f27bSRobert Mustacchi /* Auto-negotiation expansion register. */ 94*eef4f27bSRobert Mustacchi #define PHY_AN_EXPANSION_REG 0x06 95*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_AUTONEG_ABILITY BIT_0 96*eef4f27bSRobert Mustacchi 97*eef4f27bSRobert Mustacchi 98*eef4f27bSRobert Mustacchi /* 1000Base-T control/advertisement register. */ 99*eef4f27bSRobert Mustacchi #define PHY_1000BASET_CTRL_REG 0x09 100*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000BASET_HALF BIT_8 101*eef4f27bSRobert Mustacchi #define PHY_AN_AD_1000BASET_FULL BIT_9 102*eef4f27bSRobert Mustacchi #define PHY_CONFIG_AS_MASTER BIT_11 103*eef4f27bSRobert Mustacchi #define PHY_ENABLE_CONFIG_AS_MASTER BIT_12 104*eef4f27bSRobert Mustacchi 105*eef4f27bSRobert Mustacchi 106*eef4f27bSRobert Mustacchi /* 1000Base-T status/link partner advertisement. */ 107*eef4f27bSRobert Mustacchi #define PHY_1000BASET_STATUS_REG 0x0a 108*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_1000BASET_HALF BIT_10 109*eef4f27bSRobert Mustacchi #define PHY_LINK_PARTNER_1000BASET_FULL BIT_11 110*eef4f27bSRobert Mustacchi 111*eef4f27bSRobert Mustacchi 112*eef4f27bSRobert Mustacchi /* Extended control register. */ 113*eef4f27bSRobert Mustacchi #define BCM540X_EXT_CTRL_REG 0x10 114*eef4f27bSRobert Mustacchi 115*eef4f27bSRobert Mustacchi #define BCM540X_EXT_CTRL_LINK3_LED_MODE BIT_1 116*eef4f27bSRobert Mustacchi #define BCM540X_EXT_CTRL_TBI BIT_15 117*eef4f27bSRobert Mustacchi 118*eef4f27bSRobert Mustacchi 119*eef4f27bSRobert Mustacchi /* DSP Coefficient Read/Write Port. */ 120*eef4f27bSRobert Mustacchi #define BCM540X_DSP_RW_PORT 0x15 121*eef4f27bSRobert Mustacchi 122*eef4f27bSRobert Mustacchi 123*eef4f27bSRobert Mustacchi /* DSP Coeficient Address Register. */ 124*eef4f27bSRobert Mustacchi #define BCM540X_DSP_ADDRESS_REG 0x17 125*eef4f27bSRobert Mustacchi 126*eef4f27bSRobert Mustacchi #define BCM540X_DSP_TAP_NUMBER_MASK 0x00 127*eef4f27bSRobert Mustacchi #define BCM540X_DSP_AGC_A 0x00 128*eef4f27bSRobert Mustacchi #define BCM540X_DSP_AGC_B 0x01 129*eef4f27bSRobert Mustacchi #define BCM540X_DSP_MSE_PAIR_STATUS 0x02 130*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SOFT_DECISION 0x03 131*eef4f27bSRobert Mustacchi #define BCM540X_DSP_PHASE_REG 0x04 132*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SKEW 0x05 133*eef4f27bSRobert Mustacchi #define BCM540X_DSP_POWER_SAVER_UPPER_BOUND 0x06 134*eef4f27bSRobert Mustacchi #define BCM540X_DSP_POWER_SAVER_LOWER_BOUND 0x07 135*eef4f27bSRobert Mustacchi #define BCM540X_DSP_LAST_ECHO 0x08 136*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FREQUENCY 0x09 137*eef4f27bSRobert Mustacchi #define BCM540X_DSP_PLL_BANDWIDTH 0x0a 138*eef4f27bSRobert Mustacchi #define BCM540X_DSP_PLL_PHASE_OFFSET 0x0b 139*eef4f27bSRobert Mustacchi 140*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_DCOFFSET (BIT_10 | BIT_11) 141*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_FEXT3 (BIT_8 | BIT_9 | BIT_11) 142*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_FEXT2 (BIT_9 | BIT_11) 143*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_FEXT1 (BIT_8 | BIT_11) 144*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_FEXT0 BIT_11 145*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_NEXT3 (BIT_8 | BIT_9 | BIT_10) 146*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_NEXT2 (BIT_9 | BIT_10) 147*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_NEXT1 (BIT_8 | BIT_10) 148*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_NEXT0 BIT_10 149*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_ECHO (BIT_8 | BIT_9) 150*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_DFE BIT_9 151*eef4f27bSRobert Mustacchi #define BCM540X_DSP_FILTER_FFE BIT_8 152*eef4f27bSRobert Mustacchi 153*eef4f27bSRobert Mustacchi #define BCM540X_DSP_CONTROL_ALL_FILTERS BIT_12 154*eef4f27bSRobert Mustacchi 155*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SEL_CH_0 BIT_NONE 156*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SEL_CH_1 BIT_13 157*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SEL_CH_2 BIT_14 158*eef4f27bSRobert Mustacchi #define BCM540X_DSP_SEL_CH_3 (BIT_13 | BIT_14) 159*eef4f27bSRobert Mustacchi 160*eef4f27bSRobert Mustacchi #define BCM540X_CONTROL_ALL_CHANNELS BIT_15 161*eef4f27bSRobert Mustacchi 162*eef4f27bSRobert Mustacchi 163*eef4f27bSRobert Mustacchi /* Auxilliary Control Register (Shadow Register) */ 164*eef4f27bSRobert Mustacchi #define BCM5401_AUX_CTRL 0x18 165*eef4f27bSRobert Mustacchi 166*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_MASK 0x7 167*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_NORMAL 0x00 168*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_10BASET 0x01 169*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_POWER_CONTROL 0x02 170*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_IP_PHONE 0x03 171*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_MISC_TEST1 0x04 172*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_MISC_TEST2 0x05 173*eef4f27bSRobert Mustacchi #define BCM5401_SHADOW_SEL_IP_PHONE_SEED 0x06 174*eef4f27bSRobert Mustacchi 175*eef4f27bSRobert Mustacchi 176*eef4f27bSRobert Mustacchi /* Shadow register selector == '000' */ 177*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_DIAG_MODE BIT_3 178*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_DISABLE_MBP BIT_4 179*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_DISABLE_LOW_PWR BIT_5 180*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_DISABLE_INV_PRF BIT_6 181*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_DISABLE_PRF BIT_7 182*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_RX_SLICING_NORMAL BIT_NONE 183*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_RX_SLICING_4D BIT_8 184*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_RX_SLICING_3LVL_1D BIT_9 185*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_RX_SLICING_5LVL_1D (BIT_8 | BIT_9) 186*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_TX_6DB_CODING BIT_10 187*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_ENABLE_SM_DSP_CLOCK BIT_11 188*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_4NS BIT_NONE 189*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_5NS BIT_12 190*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_3NS BIT_13 191*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EDGERATE_CTRL_0NS (BIT_12 | BIT_13) 192*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EXT_PACKET_LENGTH BIT_14 193*eef4f27bSRobert Mustacchi #define BCM5401_SHDW_NORMAL_EXTERNAL_LOOPBACK BIT_15 194*eef4f27bSRobert Mustacchi 195*eef4f27bSRobert Mustacchi 196*eef4f27bSRobert Mustacchi /* Auxilliary status summary. */ 197*eef4f27bSRobert Mustacchi #define BCM540X_AUX_STATUS_REG 0x19 198*eef4f27bSRobert Mustacchi 199*eef4f27bSRobert Mustacchi #define BCM540X_AUX_LINK_PASS BIT_2 200*eef4f27bSRobert Mustacchi #define BCM540X_AUX_SPEED_MASK (BIT_8 | BIT_9 | BIT_10) 201*eef4f27bSRobert Mustacchi #define BCM540X_AUX_10BASET_HD BIT_8 202*eef4f27bSRobert Mustacchi #define BCM540X_AUX_10BASET_FD BIT_9 203*eef4f27bSRobert Mustacchi #define BCM540X_AUX_100BASETX_HD (BIT_8 | BIT_9) 204*eef4f27bSRobert Mustacchi #define BCM540X_AUX_100BASET4 BIT_10 205*eef4f27bSRobert Mustacchi #define BCM540X_AUX_100BASETX_FD (BIT_8 | BIT_10) 206*eef4f27bSRobert Mustacchi #define BCM540X_AUX_1000BASET_HD (BIT_9 | BIT_10) 207*eef4f27bSRobert Mustacchi #define BCM540X_AUX_1000BASET_FD (BIT_8 | BIT_9 | BIT_10) 208*eef4f27bSRobert Mustacchi 209*eef4f27bSRobert Mustacchi 210*eef4f27bSRobert Mustacchi /* Interrupt status. */ 211*eef4f27bSRobert Mustacchi #define BCM540X_INT_STATUS_REG 0x1a 212*eef4f27bSRobert Mustacchi 213*eef4f27bSRobert Mustacchi #define BCM540X_INT_LINK_CHNG BIT_1 214*eef4f27bSRobert Mustacchi #define BCM540X_INT_SPEED_CHNG BIT_2 215*eef4f27bSRobert Mustacchi #define BCM540X_INT_DUPLEX_CHNG BIT_3 216*eef4f27bSRobert Mustacchi #define BCM540X_INT_AUTO_NEG_PAGE_RX BIT_10 217*eef4f27bSRobert Mustacchi 218*eef4f27bSRobert Mustacchi 219*eef4f27bSRobert Mustacchi /* Interrupt mask register. */ 220*eef4f27bSRobert Mustacchi #define BCM540X_INT_MASK_REG 0x1b 221*eef4f27bSRobert Mustacchi 222*eef4f27bSRobert Mustacchi 223*eef4f27bSRobert Mustacchi 224*eef4f27bSRobert Mustacchi #endif // _54xx_reg_h 225