1
2
3
4
5
6#ifndef _TXGBE_PHY_H_
7#define _TXGBE_PHY_H_
8
9#include "txgbe_type.h"
10
11#define TXGBE_SFP_DETECT_RETRIES 10
12#define TXGBE_MD_COMMAND_TIMEOUT 100
13
14
15
16#define SR_XS_PCS_MMD_STATUS1 0x030001
17#define SR_XS_PCS_CTRL2 0x030007
18#define SR_PCS_CTRL2_TYPE_SEL MS16(0, 0x3)
19#define SR_PCS_CTRL2_TYPE_SEL_R LS16(0, 0, 0x3)
20#define SR_PCS_CTRL2_TYPE_SEL_X LS16(1, 0, 0x3)
21#define SR_PCS_CTRL2_TYPE_SEL_W LS16(2, 0, 0x3)
22#define SR_XS_PCS_KR_STS1 0x030020
23#define SR_XS_PCS_KR_STS1_PLU MS16(12, 0x1)
24#define SR_PMA_CTRL1 0x010000
25#define SR_PMA_CTRL1_SS13 MS16(13, 0x1)
26#define SR_PMA_CTRL1_SS13_KX LS16(0, 13, 0x1)
27#define SR_PMA_CTRL1_SS13_KX4 LS16(1, 13, 0x1)
28#define SR_PMA_CTRL1_LB MS16(0, 0x1)
29#define SR_PMA_KR_PMD_CTRL 0x010096
30#define SR_PMA_KR_PMD_CTRL_EN_TR MS16(1, 0x1)
31#define SR_PMA_KR_PMD_CTRL_RS_TR MS16(0, 0x1)
32#define SR_PMA_KR_PMD_STS 0x010097
33#define SR_PMA_KR_PMD_STS_TR_FAIL MS16(3, 0x1)
34#define SR_PMA_KR_PMD_STS_RCV MS16(0, 0x1)
35#define SR_PMA_KR_LP_CEU 0x010098
36#define SR_PMA_KR_LP_CESTS 0x010099
37#define SR_PMA_KR_LP_CESTS_RR MS16(15, 0x1)
38#define SR_PMA_KR_LD_CEU 0x01009A
39#define SR_PMA_KR_LD_CESTS 0x01009B
40#define SR_PMA_KR_LD_CESTS_RR MS16(15, 0x1)
41#define SR_PMA_KR_FEC_CTRL 0x0100AB
42#define SR_PMA_KR_FEC_CTRL_EN MS16(0, 0x1)
43#define SR_MII_MMD_CTL 0x1F0000
44#define SR_MII_MMD_CTL_AN_EN 0x1000
45#define SR_MII_MMD_CTL_RESTART_AN 0x0200
46#define SR_MII_MMD_DIGI_CTL 0x1F8000
47#define SR_MII_MMD_AN_CTL 0x1F8001
48#define SR_MII_MMD_AN_ADV 0x1F0004
49#define SR_MII_MMD_AN_ADV_PAUSE(v) ((0x3 & (v)) << 7)
50#define SR_MII_MMD_AN_ADV_PAUSE_ASM 0x80
51#define SR_MII_MMD_AN_ADV_PAUSE_SYM 0x100
52#define SR_MII_MMD_LP_BABL 0x1F0005
53
54#define BP_TYPE_KX 0x20
55#define BP_TYPE_KX4 0x40
56#define BP_TYPE_KX4_KX 0x60
57#define BP_TYPE_KR 0x80
58#define BP_TYPE_KR_KX 0xA0
59#define BP_TYPE_KR_KX4 0xC0
60#define BP_TYPE_KR_KX4_KX 0xE0
61
62#define SR_AN_CTRL 0x070000
63#define SR_AN_CTRL_RSTRT_AN MS16(9, 0x1)
64#define SR_AN_CTRL_AN_EN MS16(12, 0x1)
65#define SR_AN_CTRL_EXT_NP MS16(13, 0x1)
66#define SR_AN_MMD_ADV_REG1 0x070010
67#define SR_AN_MMD_ADV_REG1_PAUSE(v) ((0x3 & (v)) << 10)
68#define SR_AN_MMD_ADV_REG1_PAUSE_SYM 0x400
69#define SR_AN_MMD_ADV_REG1_PAUSE_ASM 0x800
70#define SR_AN_MMD_ADV_REG1_NP(v) RS16(v, 15, 0x1)
71#define SR_AN_MMD_ADV_REG2 0x070011
72#define SR_AN_MMD_ADV_REG2_BP_TYPE_KX4 BP_TYPE_KX4
73#define SR_AN_MMD_ADV_REG2_BP_TYPE_KX BP_TYPE_KX
74#define SR_AN_MMD_ADV_REG2_BP_TYPE_KR BP_TYPE_KR
75#define SR_AN_MMD_ADV_REG2_BP_TYPE_KX4_KX BP_TYPE_KX4_KX
76#define SR_AN_MMD_ADV_REG2_BP_TYPE_KR_KX BP_TYPE_KR_KX
77#define SR_AN_MMD_ADV_REG2_BP_TYPE_KR_KX4 BP_TYPE_KR_KX4
78#define SR_AN_MMD_ADV_REG2_BP_TYPE_KR_KX4_KX BP_TYPE_KR_KX4_KX
79#define SR_AN_MMD_ADV_REG2_BP_TYPE_MASK 0xFFFF
80#define SR_AN_MMD_ADV_REG3 0x070012
81#define SR_AN_MMD_ADV_REG3_FCE(v) RS16(v, 14, 0x3)
82#define SR_AN_MMD_LP_ABL1 0x070013
83#define SR_MMD_LP_ABL1_ADV_NP(v) RS16(v, 15, 0x1)
84#define SR_AN_MMD_LP_ABL2 0x070014
85#define SR_AN_MMD_LP_ABL2_BP_TYPE_KX4 BP_TYPE_KX4
86#define SR_AN_MMD_LP_ABL2_BP_TYPE_KX BP_TYPE_KX
87#define SR_AN_MMD_LP_ABL2_BP_TYPE_KR BP_TYPE_KR
88#define SR_AN_MMD_LP_ABL2_BP_TYPE_KX4_KX BP_TYPE_KX4_KX
89#define SR_AN_MMD_LP_ABL2_BP_TYPE_KR_KX BP_TYPE_KR_KX
90#define SR_AN_MMD_LP_ABL2_BP_TYPE_KR_KX4 BP_TYPE_KR_KX4
91#define SR_AN_MMD_LP_ABL2_BP_TYPE_KR_KX4_KX BP_TYPE_KR_KX4_KX
92#define SR_AN_MMD_LP_ABL2_BP_TYPE_MASK 0xFFFF
93#define SR_AN_MMD_LP_ABL3 0x070015
94#define SR_AN_MMD_LP_ABL3_FCE(v) RS16(v, 14, 0x3)
95#define SR_AN_XNP_TX1 0x070016
96#define SR_AN_XNP_TX1_NP MS16(15, 0x1)
97#define SR_AN_LP_XNP_ABL1 0x070019
98#define SR_AN_LP_XNP_ABL1_NP(v) RS16(v, 15, 0x1)
99
100#define VR_AN_INTR_MSK 0x078001
101#define VR_AN_INTR_CMPLT_IE MS16(0, 0x1)
102#define VR_AN_INTR_LINK_IE MS16(1, 0x1)
103#define VR_AN_INTR_PG_RCV_IE MS16(2, 0x1)
104#define VR_AN_INTR 0x078002
105#define VR_AN_INTR_CMPLT MS16(0, 0x1)
106#define VR_AN_INTR_LINK MS16(1, 0x1)
107#define VR_AN_INTR_PG_RCV MS16(2, 0x1)
108#define VR_AN_KR_MODE_CL 0x078003
109#define VR_AN_KR_MODE_CL_PDET MS16(0, 0x1)
110#define VR_XS_OR_PCS_MMD_DIGI_CTL1 0x038000
111#define VR_XS_OR_PCS_MMD_DIGI_CTL1_ENABLE 0x1000
112#define VR_XS_OR_PCS_MMD_DIGI_CTL1_VR_RST 0x8000
113#define VR_XS_OR_PCS_MMD_DIGI_CTL2 0x038001
114#define VR_XS_OR_PCS_MMD_DIGI_STATUS 0x038010
115#define VR_XS_OR_PCS_MMD_DIGI_STATUS_PSEQ_MASK 0x1C
116#define VR_XS_OR_PCS_MMD_DIGI_STATUS_PSEQ_POWER_GOOD 0x10
117#define VR_PMA_KRTR_PRBS_CTRL0 0x018003
118#define VR_PMA_KRTR_PRBS31_EN MS16(1, 0x1)
119#define VR_PMA_KRTR_PRBS_MODE_EN MS16(0, 0x1)
120#define VR_PMA_KRTR_PRBS_CTRL1 0x018004
121#define VR_PMA_KRTR_PRBS_TIME_LMT MS16(0, 0xFFFF)
122#define VR_PMA_KRTR_PRBS_CTRL2 0x018005
123#define VR_PMA_KRTR_PRBS_ERR_LIM MS16(0, 0x2FFF)
124#define VR_PMA_KRTR_TIMER_CTRL0 0x018006
125#define VR_PMA_KRTR_TIMER_MAX_WAIT MS16(0, 0xFFFF)
126#define VR_PMA_KRTR_TIMER_CTRL2 0x018008
127
128#define TXGBE_PHY_MPLLA_CTL0 0x018071
129#define TXGBE_PHY_MPLLA_CTL3 0x018077
130#define TXGBE_PHY_MISC_CTL0 0x018090
131#define TXGBE_PHY_VCO_CAL_LD0 0x018092
132#define TXGBE_PHY_VCO_CAL_LD1 0x018093
133#define TXGBE_PHY_VCO_CAL_LD2 0x018094
134#define TXGBE_PHY_VCO_CAL_LD3 0x018095
135#define TXGBE_PHY_VCO_CAL_REF0 0x018096
136#define TXGBE_PHY_VCO_CAL_REF1 0x018097
137#define TXGBE_PHY_RX_AD_ACK 0x018098
138#define TXGBE_PHY_AFE_DFE_ENABLE 0x01805D
139#define TXGBE_PHY_DFE_TAP_CTL0 0x01805E
140#define TXGBE_PHY_RX_EQ_ATT_LVL0 0x018057
141#define TXGBE_PHY_RX_EQ_CTL0 0x018058
142#define TXGBE_PHY_RX_EQ_CTL 0x01805C
143#define TXGBE_PHY_TX_EQ_CTL0 0x018036
144#define TXGBE_PHY_TX_EQ_CTL1 0x018037
145#define TXGBE_PHY_TX_EQ_CTL1_DEF MS16(7, 0x1)
146#define TXGBE_PHY_TX_RATE_CTL 0x018034
147#define TXGBE_PHY_RX_RATE_CTL 0x018054
148#define TXGBE_PHY_TX_GEN_CTL2 0x018032
149#define TXGBE_PHY_RX_GEN_CTL2 0x018052
150#define TXGBE_PHY_RX_GEN_CTL3 0x018053
151#define TXGBE_PHY_MPLLA_CTL2 0x018073
152#define TXGBE_PHY_RX_POWER_ST_CTL 0x018055
153#define TXGBE_PHY_TX_POWER_ST_CTL 0x018035
154#define TXGBE_PHY_TX_GENCTRL1 0x018031
155#define TXGBE_PHY_EQ_INIT_CTL0 0x01803A
156#define TXGBE_PHY_EQ_INIT_CTL1 0x01803B
157
158#define TXGBE_PHY_MPLLA_CTL0_MULTIPLIER_1GBASEX_KX 32
159#define TXGBE_PHY_MPLLA_CTL0_MULTIPLIER_10GBASER_KR 33
160#define TXGBE_PHY_MPLLA_CTL0_MULTIPLIER_OTHER 40
161#define TXGBE_PHY_MPLLA_CTL0_MULTIPLIER_MASK 0xFF
162#define TXGBE_PHY_MPLLA_CTL3_MULTIPLIER_BW_1GBASEX_KX 0x56
163#define TXGBE_PHY_MPLLA_CTL3_MULTIPLIER_BW_10GBASER_KR 0x7B
164#define TXGBE_PHY_MPLLA_CTL3_MULTIPLIER_BW_OTHER 0x56
165#define TXGBE_PHY_MPLLA_CTL3_MULTIPLIER_BW_MASK 0x7FF
166#define TXGBE_PHY_MISC_CTL0_TX2RX_LB_EN_0 0x1
167#define TXGBE_PHY_MISC_CTL0_TX2RX_LB_EN_3_1 0xE
168#define TXGBE_PHY_MISC_CTL0_RX_VREF_CTRL 0x1F00
169#define TXGBE_PHY_VCO_CAL_LD0_1GBASEX_KX 1344
170#define TXGBE_PHY_VCO_CAL_LD0_10GBASER_KR 1353
171#define TXGBE_PHY_VCO_CAL_LD0_OTHER 1360
172#define TXGBE_PHY_VCO_CAL_LD0_MASK 0x1000
173#define TXGBE_PHY_VCO_CAL_REF0_LD0_1GBASEX_KX 42
174#define TXGBE_PHY_VCO_CAL_REF0_LD0_10GBASER_KR 41
175#define TXGBE_PHY_VCO_CAL_REF0_LD0_OTHER 34
176#define TXGBE_PHY_VCO_CAL_REF0_LD0_MASK 0x3F
177#define TXGBE_PHY_AFE_DFE_ENABLE_DFE_EN0 0x10
178#define TXGBE_PHY_AFE_DFE_ENABLE_AFE_EN0 0x1
179#define TXGBE_PHY_AFE_DFE_ENABLE_MASK 0xFF
180#define TXGBE_PHY_RX_EQ_CTL_CONT_ADAPT0 0x1
181#define TXGBE_PHY_RX_EQ_CTL_CONT_ADAPT_MASK 0xF
182#define TXGBE_PHY_TX_RATE_CTL_TX0_RATE_10GBASER_KR 0x0
183#define TXGBE_PHY_TX_RATE_CTL_TX0_RATE_RXAUI 0x1
184#define TXGBE_PHY_TX_RATE_CTL_TX0_RATE_1GBASEX_KX 0x3
185#define TXGBE_PHY_TX_RATE_CTL_TX0_RATE_OTHER 0x2
186#define TXGBE_PHY_TX_RATE_CTL_TX1_RATE_OTHER 0x20
187#define TXGBE_PHY_TX_RATE_CTL_TX2_RATE_OTHER 0x200
188#define TXGBE_PHY_TX_RATE_CTL_TX3_RATE_OTHER 0x2000
189#define TXGBE_PHY_TX_RATE_CTL_TX0_RATE_MASK 0x7
190#define TXGBE_PHY_TX_RATE_CTL_TX1_RATE_MASK 0x70
191#define TXGBE_PHY_TX_RATE_CTL_TX2_RATE_MASK 0x700
192#define TXGBE_PHY_TX_RATE_CTL_TX3_RATE_MASK 0x7000
193#define TXGBE_PHY_RX_RATE_CTL_RX0_RATE_10GBASER_KR 0x0
194#define TXGBE_PHY_RX_RATE_CTL_RX0_RATE_RXAUI 0x1
195#define TXGBE_PHY_RX_RATE_CTL_RX0_RATE_1GBASEX_KX 0x3
196#define TXGBE_PHY_RX_RATE_CTL_RX0_RATE_OTHER 0x2
197#define TXGBE_PHY_RX_RATE_CTL_RX1_RATE_OTHER 0x20
198#define TXGBE_PHY_RX_RATE_CTL_RX2_RATE_OTHER 0x200
199#define TXGBE_PHY_RX_RATE_CTL_RX3_RATE_OTHER 0x2000
200#define TXGBE_PHY_RX_RATE_CTL_RX0_RATE_MASK 0x7
201#define TXGBE_PHY_RX_RATE_CTL_RX1_RATE_MASK 0x70
202#define TXGBE_PHY_RX_RATE_CTL_RX2_RATE_MASK 0x700
203#define TXGBE_PHY_RX_RATE_CTL_RX3_RATE_MASK 0x7000
204#define TXGBE_PHY_TX_GEN_CTL2_TX0_WIDTH_10GBASER_KR 0x200
205#define TXGBE_PHY_TX_GEN_CTL2_TX0_WIDTH_10GBASER_KR_RXAUI 0x300
206#define TXGBE_PHY_TX_GEN_CTL2_TX0_WIDTH_OTHER 0x100
207#define TXGBE_PHY_TX_GEN_CTL2_TX0_WIDTH_MASK 0x300
208#define TXGBE_PHY_TX_GEN_CTL2_TX1_WIDTH_OTHER 0x400
209#define TXGBE_PHY_TX_GEN_CTL2_TX1_WIDTH_MASK 0xC00
210#define TXGBE_PHY_TX_GEN_CTL2_TX2_WIDTH_OTHER 0x1000
211#define TXGBE_PHY_TX_GEN_CTL2_TX2_WIDTH_MASK 0x3000
212#define TXGBE_PHY_TX_GEN_CTL2_TX3_WIDTH_OTHER 0x4000
213#define TXGBE_PHY_TX_GEN_CTL2_TX3_WIDTH_MASK 0xC000
214#define TXGBE_PHY_RX_GEN_CTL2_RX0_WIDTH_10GBASER_KR 0x200
215#define TXGBE_PHY_RX_GEN_CTL2_RX0_WIDTH_10GBASER_KR_RXAUI 0x300
216#define TXGBE_PHY_RX_GEN_CTL2_RX0_WIDTH_OTHER 0x100
217#define TXGBE_PHY_RX_GEN_CTL2_RX0_WIDTH_MASK 0x300
218#define TXGBE_PHY_RX_GEN_CTL2_RX1_WIDTH_OTHER 0x400
219#define TXGBE_PHY_RX_GEN_CTL2_RX1_WIDTH_MASK 0xC00
220#define TXGBE_PHY_RX_GEN_CTL2_RX2_WIDTH_OTHER 0x1000
221#define TXGBE_PHY_RX_GEN_CTL2_RX2_WIDTH_MASK 0x3000
222#define TXGBE_PHY_RX_GEN_CTL2_RX3_WIDTH_OTHER 0x4000
223#define TXGBE_PHY_RX_GEN_CTL2_RX3_WIDTH_MASK 0xC000
224#define TXGBE_PHY_MPLLA_CTL2_DIV_CLK_EN_8 0x100
225#define TXGBE_PHY_MPLLA_CTL2_DIV_CLK_EN_10 0x200
226#define TXGBE_PHY_MPLLA_CTL2_DIV_CLK_EN_16P5 0x400
227#define TXGBE_PHY_MPLLA_CTL2_DIV_CLK_EN_MASK 0x700
228#define TXGBE_PHY_LANE0_TX_EQ_CTL1 0x100E
229#define TXGBE_PHY_LANE0_TX_EQ_CTL1_MAIN(v) RS16(v, 6, 0x3F)
230#define TXGBE_PHY_LANE0_TX_EQ_CTL2 0x100F
231#define TXGBE_PHY_LANE0_TX_EQ_CTL2_PRE MS16(0, 0x3F)
232#define TXGBE_PHY_LANE0_TX_EQ_CTL2_POST(v) RS16(v, 6, 0x3F)
233
234
235
236
237
238#define TXGBE_SFF_VENDOR_OUI_TYCO 0x00407600
239#define TXGBE_SFF_VENDOR_OUI_FTL 0x00906500
240#define TXGBE_SFF_VENDOR_OUI_AVAGO 0x00176A00
241#define TXGBE_SFF_VENDOR_OUI_INTEL 0x001B2100
242
243
244#define TXGBE_I2C_EEPROM_DEV_ADDR 0xA0
245#define TXGBE_SFF_IDENTIFIER 0x00
246#define TXGBE_SFF_IDENTIFIER_SFP 0x03
247#define TXGBE_SFF_VENDOR_OUI_BYTE0 0x25
248#define TXGBE_SFF_VENDOR_OUI_BYTE1 0x26
249#define TXGBE_SFF_VENDOR_OUI_BYTE2 0x27
250#define TXGBE_SFF_1GBE_COMP_CODES 0x06
251#define TXGBE_SFF_10GBE_COMP_CODES 0x03
252#define TXGBE_SFF_CABLE_TECHNOLOGY 0x08
253#define TXGBE_SFF_CABLE_DA_PASSIVE 0x4
254#define TXGBE_SFF_CABLE_DA_ACTIVE 0x8
255#define TXGBE_SFF_CABLE_SPEC_COMP 0x3C
256#define TXGBE_SFF_SFF_8472_SWAP 0x5C
257#define TXGBE_SFF_SFF_8472_COMP 0x5E
258#define TXGBE_SFF_SFF_8472_OSCB 0x6E
259#define TXGBE_SFF_SFF_8472_ESCB 0x76
260
261#define TXGBE_SFF_IDENTIFIER_QSFP_PLUS 0x0D
262#define TXGBE_SFF_QSFP_VENDOR_OUI_BYTE0 0xA5
263#define TXGBE_SFF_QSFP_VENDOR_OUI_BYTE1 0xA6
264#define TXGBE_SFF_QSFP_VENDOR_OUI_BYTE2 0xA7
265#define TXGBE_SFF_QSFP_CONNECTOR 0x82
266#define TXGBE_SFF_QSFP_10GBE_COMP 0x83
267#define TXGBE_SFF_QSFP_1GBE_COMP 0x86
268#define TXGBE_SFF_QSFP_CABLE_LENGTH 0x92
269#define TXGBE_SFF_QSFP_DEVICE_TECH 0x93
270
271
272#define TXGBE_SFF_DA_SPEC_ACTIVE_LIMITING 0x4
273#define TXGBE_SFF_1GBASESX_CAPABLE 0x1
274#define TXGBE_SFF_1GBASELX_CAPABLE 0x2
275#define TXGBE_SFF_1GBASET_CAPABLE 0x8
276#define TXGBE_SFF_10GBASESR_CAPABLE 0x10
277#define TXGBE_SFF_10GBASELR_CAPABLE 0x20
278#define TXGBE_SFF_SOFT_RS_SELECT_MASK 0x8
279#define TXGBE_SFF_SOFT_RS_SELECT_10G 0x8
280#define TXGBE_SFF_SOFT_RS_SELECT_1G 0x0
281#define TXGBE_SFF_ADDRESSING_MODE 0x4
282#define TXGBE_SFF_QSFP_DA_ACTIVE_CABLE 0x1
283#define TXGBE_SFF_QSFP_DA_PASSIVE_CABLE 0x8
284#define TXGBE_SFF_QSFP_CONNECTOR_NOT_SEPARABLE 0x23
285#define TXGBE_SFF_QSFP_TRANSMITTER_850NM_VCSEL 0x0
286#define TXGBE_I2C_EEPROM_READ_MASK 0x100
287#define TXGBE_I2C_EEPROM_STATUS_MASK 0x3
288#define TXGBE_I2C_EEPROM_STATUS_NO_OPERATION 0x0
289#define TXGBE_I2C_EEPROM_STATUS_PASS 0x1
290#define TXGBE_I2C_EEPROM_STATUS_FAIL 0x2
291#define TXGBE_I2C_EEPROM_STATUS_IN_PROGRESS 0x3
292
293
294#define TXGBE_I2C_EEPROM_DEV_ADDR2 0xA2
295
296
297#define TXGBE_SFF_SFF_8472_UNSUP 0x00
298
299
300
301
302#define TXGBE_MAX_PHY_ADDR 32
303
304#define TXGBE_PHYID_MTD3310 0x00000000U
305#define TXGBE_PHYID_TN1010 0x00A19410U
306#define TXGBE_PHYID_QT2022 0x0043A400U
307#define TXGBE_PHYID_ATH 0x03429050U
308
309
310#define TXGBE_MD_DEV_PMA_PMD 0x1
311#define TXGBE_MD_PHY_ID_HIGH 0x2
312#define TXGBE_MD_PHY_ID_LOW 0x3
313#define TXGBE_PHY_REVISION_MASK 0xFFFFFFF0
314#define TXGBE_MD_PHY_SPEED_ABILITY 0x4
315#define TXGBE_MD_PHY_SPEED_10G 0x0001
316#define TXGBE_MD_PHY_SPEED_1G 0x0010
317#define TXGBE_MD_PHY_SPEED_100M 0x0020
318#define TXGBE_MD_PHY_EXT_ABILITY 0xB
319#define TXGBE_MD_PHY_10GBASET_ABILITY 0x0004
320#define TXGBE_MD_PHY_1000BASET_ABILITY 0x0020
321#define TXGBE_MD_PHY_100BASETX_ABILITY 0x0080
322#define TXGBE_MD_PHY_SET_LOW_POWER_MODE 0x0800
323
324#define TXGBE_MD_TX_VENDOR_ALARMS_3 0xCC02
325#define TXGBE_MD_PMA_PMD_SDA_SCL_ADDR 0xC30A
326#define TXGBE_MD_PMA_PMD_SDA_SCL_DATA 0xC30B
327#define TXGBE_MD_PMA_PMD_SDA_SCL_STAT 0xC30C
328
329#define TXGBE_MD_FW_REV_LO 0xC011
330#define TXGBE_MD_FW_REV_HI 0xC012
331
332#define TXGBE_TN_LASI_STATUS_REG 0x9005
333#define TXGBE_TN_LASI_STATUS_TEMP_ALARM 0x0008
334
335
336#define TXGBE_MD_DEV_PCS 0x3
337#define TXGBE_PCRC8ECL 0x0E810
338#define TXGBE_PCRC8ECH 0x0E811
339#define TXGBE_PCRC8ECH_MASK 0x1F
340#define TXGBE_LDPCECL 0x0E820
341#define TXGBE_LDPCECH 0x0E821
342
343
344#define TXGBE_MD_DEV_PHY_XS 0x4
345#define TXGBE_MD_PHY_XS_CONTROL 0x0
346#define TXGBE_MD_PHY_XS_RESET 0x8000
347
348
349#define TXGBE_MD_DEV_AUTO_NEG 0x7
350
351#define TXGBE_MD_AUTO_NEG_CONTROL 0x0
352#define TXGBE_MD_AUTO_NEG_STATUS 0x1
353#define TXGBE_MD_AUTO_NEG_VENDOR_STAT 0xC800
354#define TXGBE_MD_AUTO_NEG_VENDOR_TX_ALARM 0xCC00
355#define TXGBE_MD_AUTO_NEG_VENDOR_TX_ALARM2 0xCC01
356#define TXGBE_MD_AUTO_NEG_VEN_LSC 0x1
357#define TXGBE_MD_AUTO_NEG_ADVT 0x10
358#define TXGBE_TAF_SYM_PAUSE MS16(10, 0x3)
359#define TXGBE_TAF_ASM_PAUSE MS16(11, 0x3)
360
361#define TXGBE_MD_AUTO_NEG_LP 0x13
362#define TXGBE_MD_AUTO_NEG_EEE_ADVT 0x3C
363
364#define TXGBE_MII_10GBASE_T_AUTONEG_CTRL_REG 0x20
365#define TXGBE_MII_AUTONEG_VENDOR_PROVISION_1_REG 0xC400
366#define TXGBE_MII_AUTONEG_XNP_TX_REG 0x17
367#define TXGBE_MII_AUTONEG_ADVERTISE_REG 0x10
368#define TXGBE_MII_10GBASE_T_ADVERTISE 0x1000
369#define TXGBE_MII_1GBASE_T_ADVERTISE_XNP_TX 0x4000
370#define TXGBE_MII_1GBASE_T_ADVERTISE 0x8000
371#define TXGBE_MII_2_5GBASE_T_ADVERTISE 0x0400
372#define TXGBE_MII_5GBASE_T_ADVERTISE 0x0800
373#define TXGBE_MII_100BASE_T_ADVERTISE 0x0100
374#define TXGBE_MII_100BASE_T_ADVERTISE_HALF 0x0080
375#define TXGBE_MII_RESTART 0x200
376#define TXGBE_MII_AUTONEG_COMPLETE 0x20
377#define TXGBE_MII_AUTONEG_LINK_UP 0x04
378#define TXGBE_MII_AUTONEG_REG 0x0
379#define TXGBE_MD_PMA_TX_VEN_LASI_INT_MASK 0xD401
380#define TXGBE_MD_PMA_TX_VEN_LASI_INT_EN 0x1
381#define TXGBE_MD_PMD_STD_TX_DISABLE_CNTR 0x9
382#define TXGBE_MD_PMD_GLOBAL_TX_DISABLE 0x0001
383
384
385#define TXGBE_MD_DEV_VENDOR_1 30
386#define TXGBE_MD_DEV_XFI_DSP 30
387#define TNX_FW_REV 0xB
388#define TXGBE_MD_VENDOR_SPECIFIC_1_CONTROL 0x0
389#define TXGBE_MD_VENDOR_SPECIFIC_1_STATUS 0x1
390#define TXGBE_MD_VENDOR_SPECIFIC_1_LINK_STATUS 0x0008
391#define TXGBE_MD_VENDOR_SPECIFIC_1_SPEED_STATUS 0x0010
392#define TXGBE_MD_VENDOR_SPECIFIC_1_10G_SPEED 0x0018
393#define TXGBE_MD_VENDOR_SPECIFIC_1_1G_SPEED 0x0010
394
395
396#define TXGBE_MD_DEV_GENERAL 31
397#define TXGBE_MD_PORT_CTRL 0xF001
398#define TXGBE_MD_PORT_CTRL_RESET MS16(14, 0x1)
399
400#define TXGBE_BP_M_NULL 0
401#define TXGBE_BP_M_SFI 1
402#define TXGBE_BP_M_KR 2
403#define TXGBE_BP_M_KX4 3
404#define TXGBE_BP_M_KX 4
405#define TXGBE_BP_M_NAUTO 0
406#define TXGBE_BP_M_AUTO 1
407
408#ifndef CL72_KRTR_PRBS_MODE_EN
409#define CL72_KRTR_PRBS_MODE_EN 0xFFFF
410#endif
411
412
413
414
415#define TXGBE_I2C_SLAVEADDR (0x50)
416
417bool txgbe_validate_phy_addr(struct txgbe_hw *hw, u32 phy_addr);
418enum txgbe_phy_type txgbe_get_phy_type_from_id(u32 phy_id);
419s32 txgbe_get_phy_id(struct txgbe_hw *hw);
420s32 txgbe_identify_phy(struct txgbe_hw *hw);
421s32 txgbe_reset_phy(struct txgbe_hw *hw);
422s32 txgbe_read_phy_reg_mdi(struct txgbe_hw *hw, u32 reg_addr, u32 device_type,
423 u16 *phy_data);
424s32 txgbe_write_phy_reg_mdi(struct txgbe_hw *hw, u32 reg_addr, u32 device_type,
425 u16 phy_data);
426s32 txgbe_read_phy_reg(struct txgbe_hw *hw, u32 reg_addr,
427 u32 device_type, u16 *phy_data);
428s32 txgbe_write_phy_reg(struct txgbe_hw *hw, u32 reg_addr,
429 u32 device_type, u16 phy_data);
430s32 txgbe_setup_phy_link(struct txgbe_hw *hw);
431s32 txgbe_setup_phy_link_speed(struct txgbe_hw *hw,
432 u32 speed,
433 bool autoneg_wait_to_complete);
434s32 txgbe_get_phy_fw_version(struct txgbe_hw *hw, u32 *fw_version);
435s32 txgbe_get_copper_link_capabilities(struct txgbe_hw *hw,
436 u32 *speed,
437 bool *autoneg);
438s32 txgbe_check_reset_blocked(struct txgbe_hw *hw);
439
440
441s32 txgbe_check_phy_link_tnx(struct txgbe_hw *hw,
442 u32 *speed,
443 bool *link_up);
444s32 txgbe_setup_phy_link_tnx(struct txgbe_hw *hw);
445
446s32 txgbe_identify_module(struct txgbe_hw *hw);
447s32 txgbe_identify_sfp_module(struct txgbe_hw *hw);
448s32 txgbe_identify_qsfp_module(struct txgbe_hw *hw);
449
450s32 txgbe_read_i2c_byte(struct txgbe_hw *hw, u8 byte_offset,
451 u8 dev_addr, u8 *data);
452s32 txgbe_read_i2c_byte_unlocked(struct txgbe_hw *hw, u8 byte_offset,
453 u8 dev_addr, u8 *data);
454s32 txgbe_write_i2c_byte(struct txgbe_hw *hw, u8 byte_offset,
455 u8 dev_addr, u8 data);
456s32 txgbe_write_i2c_byte_unlocked(struct txgbe_hw *hw, u8 byte_offset,
457 u8 dev_addr, u8 data);
458s32 txgbe_read_i2c_sff8472(struct txgbe_hw *hw, u8 byte_offset,
459 u8 *sff8472_data);
460s32 txgbe_read_i2c_eeprom(struct txgbe_hw *hw, u8 byte_offset,
461 u8 *eeprom_data);
462s32 txgbe_write_i2c_eeprom(struct txgbe_hw *hw, u8 byte_offset,
463 u8 eeprom_data);
464u64 txgbe_autoc_read(struct txgbe_hw *hw);
465void txgbe_autoc_write(struct txgbe_hw *hw, u64 value);
466void txgbe_bp_mode_set(struct txgbe_hw *hw);
467void txgbe_set_phy_temp(struct txgbe_hw *hw);
468void txgbe_bp_down_event(struct txgbe_hw *hw);
469s32 txgbe_kr_handle(struct txgbe_hw *hw);
470
471#endif
472