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