xref: /dpdk/lib/ethdev/sff_8636.h (revision b4f0a9bb5807a4f0a4904595bb85a9a386696311)
1*c42754fdSRobin Zhang /* SPDX-License-Identifier: BSD-3-Clause
2*c42754fdSRobin Zhang  * Copyright(c) 2022 Intel Corporation
3*c42754fdSRobin Zhang  * SFF-8636 standards based QSFP EEPROM Field Definitions
4*c42754fdSRobin Zhang  */
5*c42754fdSRobin Zhang 
6*c42754fdSRobin Zhang #ifndef _SFF_8636_H_
7*c42754fdSRobin Zhang #define _SFF_8636_H_
8*c42754fdSRobin Zhang 
9*c42754fdSRobin Zhang /*------------------------------------------------------------------------------
10*c42754fdSRobin Zhang  *
11*c42754fdSRobin Zhang  * QSFP EEPROM data structures
12*c42754fdSRobin Zhang  *
13*c42754fdSRobin Zhang  * register info from SFF-8636 Rev 2.7
14*c42754fdSRobin Zhang  */
15*c42754fdSRobin Zhang 
16*c42754fdSRobin Zhang /*------------------------------------------------------------------------------
17*c42754fdSRobin Zhang  *
18*c42754fdSRobin Zhang  * Lower Memory Page 00h
19*c42754fdSRobin Zhang  * Measurement, Diagnostic and Control Functions
20*c42754fdSRobin Zhang  */
21*c42754fdSRobin Zhang /* Identifier - 0 */
22*c42754fdSRobin Zhang /* Values are defined under SFF_8024_ID_OFFSET */
23*c42754fdSRobin Zhang #define	SFF_8636_ID_OFFSET	0x00
24*c42754fdSRobin Zhang 
25*c42754fdSRobin Zhang #define	SFF_8636_REV_COMPLIANCE_OFFSET	0x01
26*c42754fdSRobin Zhang #define	SFF_8636_REV_UNSPECIFIED		0x00
27*c42754fdSRobin Zhang #define	SFF_8636_REV_8436_48			0x01
28*c42754fdSRobin Zhang #define	SFF_8636_REV_8436_8636			0x02
29*c42754fdSRobin Zhang #define	SFF_8636_REV_8636_13			0x03
30*c42754fdSRobin Zhang #define	SFF_8636_REV_8636_14			0x04
31*c42754fdSRobin Zhang #define	SFF_8636_REV_8636_15			0x05
32*c42754fdSRobin Zhang #define	SFF_8636_REV_8636_20			0x06
33*c42754fdSRobin Zhang #define	SFF_8636_REV_8636_27			0x07
34*c42754fdSRobin Zhang 
35*c42754fdSRobin Zhang #define	SFF_8636_STATUS_2_OFFSET	0x02
36*c42754fdSRobin Zhang /* Flat Memory:0- Paging, 1- Page 0 only */
37*c42754fdSRobin Zhang #define	SFF_8636_STATUS_PAGE_3_PRESENT		RTE_BIT32(2)
38*c42754fdSRobin Zhang #define	SFF_8636_STATUS_INTL_OUTPUT		RTE_BIT32(1)
39*c42754fdSRobin Zhang #define	SFF_8636_STATUS_DATA_NOT_READY		RTE_BIT32(0)
40*c42754fdSRobin Zhang 
41*c42754fdSRobin Zhang /* Channel Status Interrupt Flags - 3-5 */
42*c42754fdSRobin Zhang #define	SFF_8636_LOS_AW_OFFSET	0x03
43*c42754fdSRobin Zhang #define	SFF_8636_TX4_LOS_AW		RTE_BIT32(7)
44*c42754fdSRobin Zhang #define	SFF_8636_TX3_LOS_AW		RTE_BIT32(6)
45*c42754fdSRobin Zhang #define	SFF_8636_TX2_LOS_AW		RTE_BIT32(5)
46*c42754fdSRobin Zhang #define	SFF_8636_TX1_LOS_AW		RTE_BIT32(4)
47*c42754fdSRobin Zhang #define	SFF_8636_RX4_LOS_AW		RTE_BIT32(3)
48*c42754fdSRobin Zhang #define	SFF_8636_RX3_LOS_AW		RTE_BIT32(2)
49*c42754fdSRobin Zhang #define	SFF_8636_RX2_LOS_AW		RTE_BIT32(1)
50*c42754fdSRobin Zhang #define	SFF_8636_RX1_LOS_AW		RTE_BIT32(0)
51*c42754fdSRobin Zhang 
52*c42754fdSRobin Zhang #define	SFF_8636_FAULT_AW_OFFSET	0x04
53*c42754fdSRobin Zhang #define	SFF_8636_TX4_FAULT_AW	RTE_BIT32(3)
54*c42754fdSRobin Zhang #define	SFF_8636_TX3_FAULT_AW	RTE_BIT32(2)
55*c42754fdSRobin Zhang #define	SFF_8636_TX2_FAULT_AW	RTE_BIT32(1)
56*c42754fdSRobin Zhang #define	SFF_8636_TX1_FAULT_AW	RTE_BIT32(0)
57*c42754fdSRobin Zhang 
58*c42754fdSRobin Zhang /* Module Monitor Interrupt Flags - 6-8 */
59*c42754fdSRobin Zhang #define	SFF_8636_TEMP_AW_OFFSET	0x06
60*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HALARM_STATUS		RTE_BIT32(7)
61*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LALARM_STATUS		RTE_BIT32(6)
62*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HWARN_STATUS		RTE_BIT32(5)
63*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LWARN_STATUS		RTE_BIT32(4)
64*c42754fdSRobin Zhang 
65*c42754fdSRobin Zhang #define	SFF_8636_VCC_AW_OFFSET	0x07
66*c42754fdSRobin Zhang #define	SFF_8636_VCC_HALARM_STATUS		RTE_BIT32(7)
67*c42754fdSRobin Zhang #define	SFF_8636_VCC_LALARM_STATUS		RTE_BIT32(6)
68*c42754fdSRobin Zhang #define	SFF_8636_VCC_HWARN_STATUS		RTE_BIT32(5)
69*c42754fdSRobin Zhang #define	SFF_8636_VCC_LWARN_STATUS		RTE_BIT32(4)
70*c42754fdSRobin Zhang 
71*c42754fdSRobin Zhang /* Channel Monitor Interrupt Flags - 9-21 */
72*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_12_AW_OFFSET	0x09
73*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_1_HALARM		RTE_BIT32(7)
74*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_1_LALARM		RTE_BIT32(6)
75*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_1_HWARN			RTE_BIT32(5)
76*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_1_LWARN			RTE_BIT32(4)
77*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_2_HALARM		RTE_BIT32(3)
78*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_2_LALARM		RTE_BIT32(2)
79*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_2_HWARN			RTE_BIT32(1)
80*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_2_LWARN			RTE_BIT32(0)
81*c42754fdSRobin Zhang 
82*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_34_AW_OFFSET	0x0A
83*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_3_HALARM		RTE_BIT32(7)
84*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_3_LALARM		RTE_BIT32(6)
85*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_3_HWARN			RTE_BIT32(5)
86*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_3_LWARN			RTE_BIT32(4)
87*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_4_HALARM		RTE_BIT32(3)
88*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_4_LALARM		RTE_BIT32(2)
89*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_4_HWARN			RTE_BIT32(1)
90*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_4_LWARN			RTE_BIT32(0)
91*c42754fdSRobin Zhang 
92*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_12_AW_OFFSET	0x0B
93*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_1_HALARM		RTE_BIT32(7)
94*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_1_LALARM		RTE_BIT32(6)
95*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_1_HWARN		RTE_BIT32(5)
96*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_1_LWARN		RTE_BIT32(4)
97*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_2_HALARM		RTE_BIT32(3)
98*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_2_LALARM		RTE_BIT32(2)
99*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_2_HWARN		RTE_BIT32(1)
100*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_2_LWARN		RTE_BIT32(0)
101*c42754fdSRobin Zhang 
102*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_34_AW_OFFSET	0xC
103*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_3_HALARM		RTE_BIT32(7)
104*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_3_LALARM		RTE_BIT32(6)
105*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_3_HWARN		RTE_BIT32(5)
106*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_3_LWARN		RTE_BIT32(4)
107*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_4_HALARM		RTE_BIT32(3)
108*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_4_LALARM		RTE_BIT32(2)
109*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_4_HWARN		RTE_BIT32(1)
110*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_4_LWARN		RTE_BIT32(0)
111*c42754fdSRobin Zhang 
112*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_12_AW_OFFSET	0x0D
113*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_1_HALARM		RTE_BIT32(7)
114*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_1_LALARM		RTE_BIT32(6)
115*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_1_HWARN			RTE_BIT32(5)
116*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_1_LWARN			RTE_BIT32(4)
117*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_2_HALARM		RTE_BIT32(3)
118*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_2_LALARM		RTE_BIT32(2)
119*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_2_HWARN			RTE_BIT32(1)
120*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_2_LWARN			RTE_BIT32(0)
121*c42754fdSRobin Zhang 
122*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_34_AW_OFFSET	0x0E
123*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_3_HALARM		RTE_BIT32(7)
124*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_3_LALARM		RTE_BIT32(6)
125*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_3_HWARN			RTE_BIT32(5)
126*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_3_LWARN			RTE_BIT32(4)
127*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_4_HALARM		RTE_BIT32(3)
128*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_4_LALARM		RTE_BIT32(2)
129*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_4_HWARN			RTE_BIT32(1)
130*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_4_LWARN			RTE_BIT32(0)
131*c42754fdSRobin Zhang 
132*c42754fdSRobin Zhang /* Module Monitoring Values - 22-33 */
133*c42754fdSRobin Zhang #define	SFF_8636_TEMP_CURR		0x16
134*c42754fdSRobin Zhang #define	SFF_8636_TEMP_MSB_OFFSET		0x16
135*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LSB_OFFSET		0x17
136*c42754fdSRobin Zhang 
137*c42754fdSRobin Zhang #define	SFF_8636_VCC_CURR		0x1A
138*c42754fdSRobin Zhang #define	SFF_8636_VCC_MSB_OFFSET		0x1A
139*c42754fdSRobin Zhang #define	SFF_8636_VCC_LSB_OFFSET		0x1B
140*c42754fdSRobin Zhang 
141*c42754fdSRobin Zhang /* Channel Monitoring Values - 34-81 */
142*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_1_OFFSET		0x22
143*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_2_OFFSET		0x24
144*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_3_OFFSET		0x26
145*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_4_OFFSET		0x28
146*c42754fdSRobin Zhang 
147*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_1_OFFSET	0x2A
148*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_2_OFFSET	0x2C
149*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_3_OFFSET	0x2E
150*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_4_OFFSET	0x30
151*c42754fdSRobin Zhang 
152*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_1_OFFSET		0x32
153*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_2_OFFSET		0x34
154*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_3_OFFSET		0x36
155*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_4_OFFSET		0x38
156*c42754fdSRobin Zhang 
157*c42754fdSRobin Zhang /* Control Bytes - 86 - 99 */
158*c42754fdSRobin Zhang #define	SFF_8636_TX_DISABLE_OFFSET	0x56
159*c42754fdSRobin Zhang #define	SFF_8636_TX_DISABLE_4			RTE_BIT32(3)
160*c42754fdSRobin Zhang #define	SFF_8636_TX_DISABLE_3			RTE_BIT32(2)
161*c42754fdSRobin Zhang #define	SFF_8636_TX_DISABLE_2			RTE_BIT32(1)
162*c42754fdSRobin Zhang #define	SFF_8636_TX_DISABLE_1			RTE_BIT32(0)
163*c42754fdSRobin Zhang 
164*c42754fdSRobin Zhang #define	SFF_8636_RX_RATE_SELECT_OFFSET	0x57
165*c42754fdSRobin Zhang #define	SFF_8636_RX_RATE_SELECT_4_MASK		(3 << 6)
166*c42754fdSRobin Zhang #define	SFF_8636_RX_RATE_SELECT_3_MASK		(3 << 4)
167*c42754fdSRobin Zhang #define	SFF_8636_RX_RATE_SELECT_2_MASK		(3 << 2)
168*c42754fdSRobin Zhang #define	SFF_8636_RX_RATE_SELECT_1_MASK		(3 << 0)
169*c42754fdSRobin Zhang 
170*c42754fdSRobin Zhang #define	SFF_8636_TX_RATE_SELECT_OFFSET	0x58
171*c42754fdSRobin Zhang #define	SFF_8636_TX_RATE_SELECT_4_MASK		(3 << 6)
172*c42754fdSRobin Zhang #define	SFF_8636_TX_RATE_SELECT_3_MASK		(3 << 4)
173*c42754fdSRobin Zhang #define	SFF_8636_TX_RATE_SELECT_2_MASK		(3 << 2)
174*c42754fdSRobin Zhang #define	SFF_8636_TX_RATE_SELECT_1_MASK		(3 << 0)
175*c42754fdSRobin Zhang 
176*c42754fdSRobin Zhang #define	SFF_8636_RX_APP_SELECT_4_OFFSET	0x58
177*c42754fdSRobin Zhang #define	SFF_8636_RX_APP_SELECT_3_OFFSET	0x59
178*c42754fdSRobin Zhang #define	SFF_8636_RX_APP_SELECT_2_OFFSET	0x5A
179*c42754fdSRobin Zhang #define	SFF_8636_RX_APP_SELECT_1_OFFSET	0x5B
180*c42754fdSRobin Zhang 
181*c42754fdSRobin Zhang #define	SFF_8636_PWR_MODE_OFFSET		0x5D
182*c42754fdSRobin Zhang #define	SFF_8636_HIGH_PWR_ENABLE		RTE_BIT32(2)
183*c42754fdSRobin Zhang #define	SFF_8636_LOW_PWR_MODE			RTE_BIT32(1)
184*c42754fdSRobin Zhang #define	SFF_8636_PWR_OVERRIDE			RTE_BIT32(0)
185*c42754fdSRobin Zhang 
186*c42754fdSRobin Zhang #define	SFF_8636_TX_APP_SELECT_4_OFFSET	0x5E
187*c42754fdSRobin Zhang #define	SFF_8636_TX_APP_SELECT_3_OFFSET	0x5F
188*c42754fdSRobin Zhang #define	SFF_8636_TX_APP_SELECT_2_OFFSET	0x60
189*c42754fdSRobin Zhang #define	SFF_8636_TX_APP_SELECT_1_OFFSET	0x61
190*c42754fdSRobin Zhang 
191*c42754fdSRobin Zhang #define	SFF_8636_LOS_MASK_OFFSET		0x64
192*c42754fdSRobin Zhang #define	SFF_8636_TX_LOS_4_MASK			RTE_BIT32(7)
193*c42754fdSRobin Zhang #define	SFF_8636_TX_LOS_3_MASK			RTE_BIT32(6)
194*c42754fdSRobin Zhang #define	SFF_8636_TX_LOS_2_MASK			RTE_BIT32(5)
195*c42754fdSRobin Zhang #define	SFF_8636_TX_LOS_1_MASK			RTE_BIT32(4)
196*c42754fdSRobin Zhang #define	SFF_8636_RX_LOS_4_MASK			RTE_BIT32(3)
197*c42754fdSRobin Zhang #define	SFF_8636_RX_LOS_3_MASK			RTE_BIT32(2)
198*c42754fdSRobin Zhang #define	SFF_8636_RX_LOS_2_MASK			RTE_BIT32(1)
199*c42754fdSRobin Zhang #define	SFF_8636_RX_LOS_1_MASK			RTE_BIT32(0)
200*c42754fdSRobin Zhang 
201*c42754fdSRobin Zhang #define	SFF_8636_FAULT_MASK_OFFSET	0x65
202*c42754fdSRobin Zhang #define	SFF_8636_TX_FAULT_1_MASK		RTE_BIT32(3)
203*c42754fdSRobin Zhang #define	SFF_8636_TX_FAULT_2_MASK		RTE_BIT32(2)
204*c42754fdSRobin Zhang #define	SFF_8636_TX_FAULT_3_MASK		RTE_BIT32(1)
205*c42754fdSRobin Zhang #define	SFF_8636_TX_FAULT_4_MASK		RTE_BIT32(0)
206*c42754fdSRobin Zhang 
207*c42754fdSRobin Zhang #define	SFF_8636_TEMP_MASK_OFFSET	0x67
208*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HALARM_MASK		RTE_BIT32(7)
209*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LALARM_MASK		RTE_BIT32(6)
210*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HWARN_MASK		RTE_BIT32(5)
211*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LWARN_MASK		RTE_BIT32(4)
212*c42754fdSRobin Zhang 
213*c42754fdSRobin Zhang #define	SFF_8636_VCC_MASK_OFFSET		0x68
214*c42754fdSRobin Zhang #define	SFF_8636_VCC_HALARM_MASK		RTE_BIT32(7)
215*c42754fdSRobin Zhang #define	SFF_8636_VCC_LALARM_MASK		RTE_BIT32(6)
216*c42754fdSRobin Zhang #define	SFF_8636_VCC_HWARN_MASK			RTE_BIT32(5)
217*c42754fdSRobin Zhang #define	SFF_8636_VCC_LWARN_MASK			RTE_BIT32(4)
218*c42754fdSRobin Zhang 
219*c42754fdSRobin Zhang /*------------------------------------------------------------------------------
220*c42754fdSRobin Zhang  *
221*c42754fdSRobin Zhang  * Upper Memory Page 00h
222*c42754fdSRobin Zhang  * Serial ID - Base ID, Extended ID and Vendor Specific ID fields
223*c42754fdSRobin Zhang  */
224*c42754fdSRobin Zhang /* Identifier - 128 */
225*c42754fdSRobin Zhang /* Identifier values same as Lower Memory Page 00h */
226*c42754fdSRobin Zhang #define	SFF_8636_UPPER_PAGE_0_ID_OFFSET		0x80
227*c42754fdSRobin Zhang 
228*c42754fdSRobin Zhang /* Extended Identifier - 128 */
229*c42754fdSRobin Zhang #define SFF_8636_EXT_ID_OFFSET		0x81
230*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_MASK		0xC0
231*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_1		(0 << 6)
232*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_2		(1 << 6)
233*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_3		(2 << 6)
234*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_4		(3 << 6)
235*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CLIE_MASK		0x10
236*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CLIEI_CODE_PRESENT	(1 << 4)
237*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CDR_TX_MASK		0x08
238*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CDR_TX_PRESENT		(1 << 3)
239*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CDR_RX_MASK		0x04
240*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_CDR_RX_PRESENT		(1 << 2)
241*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_EPWR_CLASS_MASK		0x03
242*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_LEGACY	0
243*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_5		1
244*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_6		2
245*c42754fdSRobin Zhang #define	SFF_8636_EXT_ID_PWR_CLASS_7		3
246*c42754fdSRobin Zhang 
247*c42754fdSRobin Zhang /* Connector Values offset - 130 */
248*c42754fdSRobin Zhang /* Values are defined under SFF_8024_CTOR */
249*c42754fdSRobin Zhang #define	SFF_8636_CTOR_OFFSET		0x82
250*c42754fdSRobin Zhang #define	SFF_8636_CTOR_UNKNOWN			0x00
251*c42754fdSRobin Zhang #define	SFF_8636_CTOR_SC			0x01
252*c42754fdSRobin Zhang #define	SFF_8636_CTOR_FC_STYLE_1		0x02
253*c42754fdSRobin Zhang #define	SFF_8636_CTOR_FC_STYLE_2		0x03
254*c42754fdSRobin Zhang #define	SFF_8636_CTOR_BNC_TNC			0x04
255*c42754fdSRobin Zhang #define	SFF_8636_CTOR_FC_COAX			0x05
256*c42754fdSRobin Zhang #define	SFF_8636_CTOR_FIBER_JACK		0x06
257*c42754fdSRobin Zhang #define	SFF_8636_CTOR_LC			0x07
258*c42754fdSRobin Zhang #define	SFF_8636_CTOR_MT_RJ			0x08
259*c42754fdSRobin Zhang #define	SFF_8636_CTOR_MU			0x09
260*c42754fdSRobin Zhang #define	SFF_8636_CTOR_SG			0x0A
261*c42754fdSRobin Zhang #define	SFF_8636_CTOR_OPT_PT			0x0B
262*c42754fdSRobin Zhang #define	SFF_8636_CTOR_MPO			0x0C
263*c42754fdSRobin Zhang /* 0D-1Fh --- Reserved */
264*c42754fdSRobin Zhang #define	SFF_8636_CTOR_HSDC_II			0x20
265*c42754fdSRobin Zhang #define	SFF_8636_CTOR_COPPER_PT			0x21
266*c42754fdSRobin Zhang #define	SFF_8636_CTOR_RJ45			0x22
267*c42754fdSRobin Zhang #define	SFF_8636_CTOR_NO_SEPARABLE		0x23
268*c42754fdSRobin Zhang #define	SFF_8636_CTOR_MXC_2X16			0x24
269*c42754fdSRobin Zhang 
270*c42754fdSRobin Zhang /* Specification Compliance - 131-138 */
271*c42754fdSRobin Zhang /* Ethernet Compliance Codes - 131 */
272*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_COMP_OFFSET	0x83
273*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_RSRVD			RTE_BIT32(7)
274*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_10G_LRM		RTE_BIT32(6)
275*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_10G_LR		RTE_BIT32(5)
276*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_10G_SR		RTE_BIT32(4)
277*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_CR4		RTE_BIT32(3)
278*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_SR4		RTE_BIT32(2)
279*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_LR4		RTE_BIT32(1)
280*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_ACTIVE	RTE_BIT32(0)
281*c42754fdSRobin Zhang 
282*c42754fdSRobin Zhang /* SONET Compliance Codes - 132 */
283*c42754fdSRobin Zhang #define	SFF_8636_SONET_COMP_OFFSET	0x84
284*c42754fdSRobin Zhang #define	SFF_8636_SONET_40G_OTN			RTE_BIT32(3)
285*c42754fdSRobin Zhang #define	SFF_8636_SONET_OC48_LR			RTE_BIT32(2)
286*c42754fdSRobin Zhang #define	SFF_8636_SONET_OC48_IR			RTE_BIT32(1)
287*c42754fdSRobin Zhang #define	SFF_8636_SONET_OC48_SR			RTE_BIT32(0)
288*c42754fdSRobin Zhang 
289*c42754fdSRobin Zhang /* SAS/SATA Complaince Codes - 133 */
290*c42754fdSRobin Zhang #define	SFF_8636_SAS_COMP_OFFSET		0x85
291*c42754fdSRobin Zhang #define	SFF_8636_SAS_12G			RTE_BIT32(6)
292*c42754fdSRobin Zhang #define	SFF_8636_SAS_6G				RTE_BIT32(5)
293*c42754fdSRobin Zhang #define	SFF_8636_SAS_3G				RTE_BIT32(4)
294*c42754fdSRobin Zhang 
295*c42754fdSRobin Zhang /* Gigabit Ethernet Compliance Codes - 134 */
296*c42754fdSRobin Zhang #define	SFF_8636_GIGE_COMP_OFFSET	0x86
297*c42754fdSRobin Zhang #define	SFF_8636_GIGE_1000_BASE_T		RTE_BIT32(3)
298*c42754fdSRobin Zhang #define	SFF_8636_GIGE_1000_BASE_CX		RTE_BIT32(2)
299*c42754fdSRobin Zhang #define	SFF_8636_GIGE_1000_BASE_LX		RTE_BIT32(1)
300*c42754fdSRobin Zhang #define	SFF_8636_GIGE_1000_BASE_SX		RTE_BIT32(0)
301*c42754fdSRobin Zhang 
302*c42754fdSRobin Zhang /* Fibre Channel Link length/Transmitter Tech. - 135,136 */
303*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_OFFSET		0x87
304*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_VERY_LONG		RTE_BIT32(7)
305*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_SHORT			RTE_BIT32(6)
306*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_INT			RTE_BIT32(5)
307*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_LONG			RTE_BIT32(4)
308*c42754fdSRobin Zhang #define	SFF_8636_FC_LEN_MED			RTE_BIT32(3)
309*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_LONG_LC		RTE_BIT32(1)
310*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_ELEC_INTER		RTE_BIT32(0)
311*c42754fdSRobin Zhang 
312*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_OFFSET		0x88
313*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_ELEC_INTRA		RTE_BIT32(7)
314*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_SHORT_WO_OFC		RTE_BIT32(6)
315*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_SHORT_W_OFC		RTE_BIT32(5)
316*c42754fdSRobin Zhang #define	SFF_8636_FC_TECH_LONG_LL		RTE_BIT32(4)
317*c42754fdSRobin Zhang 
318*c42754fdSRobin Zhang /* Fibre Channel Transmitter Media - 137 */
319*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_OFFSET	0x89
320*c42754fdSRobin Zhang /* Twin Axial Pair */
321*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_TW		RTE_BIT32(7)
322*c42754fdSRobin Zhang /* Shielded Twisted Pair */
323*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_TP		RTE_BIT32(6)
324*c42754fdSRobin Zhang /* Miniature Coax */
325*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_MI		RTE_BIT32(5)
326*c42754fdSRobin Zhang /* Video Coax */
327*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_TV		RTE_BIT32(4)
328*c42754fdSRobin Zhang /* Multi-mode 62.5m */
329*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_M6		RTE_BIT32(3)
330*c42754fdSRobin Zhang /* Multi-mode 50m */
331*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_M5		RTE_BIT32(2)
332*c42754fdSRobin Zhang /* Multi-mode 50um */
333*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_OM3		RTE_BIT32(1)
334*c42754fdSRobin Zhang /* Single Mode */
335*c42754fdSRobin Zhang #define	SFF_8636_FC_TRANS_MEDIA_SM		RTE_BIT32(0)
336*c42754fdSRobin Zhang 
337*c42754fdSRobin Zhang /* Fibre Channel Speed - 138 */
338*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_OFFSET		0x8A
339*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_1200_MBPS		RTE_BIT32(7)
340*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_800_MBPS		RTE_BIT32(6)
341*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_1600_MBPS		RTE_BIT32(5)
342*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_400_MBPS		RTE_BIT32(4)
343*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_200_MBPS		RTE_BIT32(2)
344*c42754fdSRobin Zhang #define	SFF_8636_FC_SPEED_100_MBPS		RTE_BIT32(0)
345*c42754fdSRobin Zhang 
346*c42754fdSRobin Zhang /* Encoding - 139 */
347*c42754fdSRobin Zhang /* Values are defined under SFF_8024_ENCODING */
348*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_OFFSET		0x8B
349*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_MANCHESTER	0x06
350*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_64B66B		0x05
351*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_SONET			0x04
352*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_NRZ			0x03
353*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_4B5B			0x02
354*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_8B10B			0x01
355*c42754fdSRobin Zhang #define	SFF_8636_ENCODING_UNSPEC		0x00
356*c42754fdSRobin Zhang 
357*c42754fdSRobin Zhang /* BR, Nominal - 140 */
358*c42754fdSRobin Zhang #define	SFF_8636_BR_NOMINAL_OFFSET	0x8C
359*c42754fdSRobin Zhang 
360*c42754fdSRobin Zhang /* Extended RateSelect - 141 */
361*c42754fdSRobin Zhang #define	SFF_8636_EXT_RS_OFFSET		0x8D
362*c42754fdSRobin Zhang #define	SFF_8636_EXT_RS_V1			RTE_BIT32(0)
363*c42754fdSRobin Zhang 
364*c42754fdSRobin Zhang /* Length (Standard SM Fiber)-km - 142 */
365*c42754fdSRobin Zhang #define	SFF_8636_SM_LEN_OFFSET		0x8E
366*c42754fdSRobin Zhang 
367*c42754fdSRobin Zhang /* Length (OM3)-Unit 2m - 143 */
368*c42754fdSRobin Zhang #define	SFF_8636_OM3_LEN_OFFSET		0x8F
369*c42754fdSRobin Zhang 
370*c42754fdSRobin Zhang /* Length (OM2)-Unit 1m - 144 */
371*c42754fdSRobin Zhang #define	SFF_8636_OM2_LEN_OFFSET		0x90
372*c42754fdSRobin Zhang 
373*c42754fdSRobin Zhang /* Length (OM1)-Unit 1m - 145 */
374*c42754fdSRobin Zhang #define	SFF_8636_OM1_LEN_OFFSET		0x91
375*c42754fdSRobin Zhang 
376*c42754fdSRobin Zhang /* Cable Assembly Length -Unit 1m - 146 */
377*c42754fdSRobin Zhang #define	SFF_8636_CBL_LEN_OFFSET		0x92
378*c42754fdSRobin Zhang 
379*c42754fdSRobin Zhang /* Device Technology - 147 */
380*c42754fdSRobin Zhang #define	SFF_8636_DEVICE_TECH_OFFSET	0x93
381*c42754fdSRobin Zhang /* Transmitter Technology */
382*c42754fdSRobin Zhang #define	SFF_8636_TRANS_TECH_MASK		0xF0
383*c42754fdSRobin Zhang /* Copper cable, linear active equalizers */
384*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_LNR_EQUAL		(15 << 4)
385*c42754fdSRobin Zhang /* Copper cable, near end limiting active equalizers */
386*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_NEAR_EQUAL	(14 << 4)
387*c42754fdSRobin Zhang /* Copper cable, far end limiting active equalizers */
388*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_FAR_EQUAL		(13 << 4)
389*c42754fdSRobin Zhang /* Copper cable, near & far end limiting active equalizers */
390*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_LNR_FAR_EQUAL	(12 << 4)
391*c42754fdSRobin Zhang /* Copper cable, passive equalized */
392*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_PAS_EQUAL		(11 << 4)
393*c42754fdSRobin Zhang /* Copper cable, unequalized */
394*c42754fdSRobin Zhang #define	SFF_8636_TRANS_COPPER_PAS_UNEQUAL	(10 << 4)
395*c42754fdSRobin Zhang /* 1490 nm DFB */
396*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1490_DFB			(9 << 4)
397*c42754fdSRobin Zhang /* Others */
398*c42754fdSRobin Zhang #define	SFF_8636_TRANS_OTHERS			(8 << 4)
399*c42754fdSRobin Zhang /* 1550 nm EML */
400*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1550_EML			(7 << 4)
401*c42754fdSRobin Zhang /* 1310 nm EML */
402*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1310_EML			(6 << 4)
403*c42754fdSRobin Zhang /* 1550 nm DFB */
404*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1550_DFB			(5 << 4)
405*c42754fdSRobin Zhang /* 1310 nm DFB */
406*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1310_DFB			(4 << 4)
407*c42754fdSRobin Zhang /* 1310 nm FP */
408*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1310_FP			(3 << 4)
409*c42754fdSRobin Zhang /* 1550 nm VCSEL */
410*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1550_VCSEL		(2 << 4)
411*c42754fdSRobin Zhang /* 1310 nm VCSEL */
412*c42754fdSRobin Zhang #define	SFF_8636_TRANS_1310_VCSEL		(1 << 4)
413*c42754fdSRobin Zhang /* 850 nm VCSEL */
414*c42754fdSRobin Zhang #define	SFF_8636_TRANS_850_VCSEL		(0 << 4)
415*c42754fdSRobin Zhang 
416*c42754fdSRobin Zhang  /* Active/No wavelength control */
417*c42754fdSRobin Zhang #define	SFF_8636_DEV_TECH_ACTIVE_WAVE_LEN	RTE_BIT32(3)
418*c42754fdSRobin Zhang /* Cooled transmitter */
419*c42754fdSRobin Zhang #define	SFF_8636_DEV_TECH_COOL_TRANS		RTE_BIT32(2)
420*c42754fdSRobin Zhang /* APD/Pin Detector */
421*c42754fdSRobin Zhang #define	SFF_8636_DEV_TECH_APD_DETECTOR		RTE_BIT32(1)
422*c42754fdSRobin Zhang /* Transmitter tunable */
423*c42754fdSRobin Zhang #define	SFF_8636_DEV_TECH_TUNABLE		RTE_BIT32(0)
424*c42754fdSRobin Zhang 
425*c42754fdSRobin Zhang /* Vendor Name - 148-163 */
426*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_NAME_START_OFFSET	0x94
427*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_NAME_END_OFFSET		0xA3
428*c42754fdSRobin Zhang 
429*c42754fdSRobin Zhang /* Extended Module Codes - 164 */
430*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_CODE_OFFSET	0xA4
431*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_INFINIBAND_EDR	RTE_BIT32(4)
432*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_INFINIBAND_FDR	RTE_BIT32(3)
433*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_INFINIBAND_QDR	RTE_BIT32(2)
434*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_INFINIBAND_DDR	RTE_BIT32(1)
435*c42754fdSRobin Zhang #define	SFF_8636_EXT_MOD_INFINIBAND_SDR	RTE_BIT32(0)
436*c42754fdSRobin Zhang 
437*c42754fdSRobin Zhang /* Vendor OUI - 165-167 */
438*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_OUI_OFFSET		0xA5
439*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_OUI_LEN		3
440*c42754fdSRobin Zhang 
441*c42754fdSRobin Zhang /* Vendor OUI - 165-167 */
442*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_PN_START_OFFSET		0xA8
443*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_PN_END_OFFSET		0xB7
444*c42754fdSRobin Zhang 
445*c42754fdSRobin Zhang /* Vendor Revision - 184-185 */
446*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_REV_START_OFFSET	0xB8
447*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_REV_END_OFFSET		0xB9
448*c42754fdSRobin Zhang 
449*c42754fdSRobin Zhang /* Wavelength - 186-187 */
450*c42754fdSRobin Zhang #define	SFF_8636_WAVELEN_HIGH_BYTE_OFFSET	0xBA
451*c42754fdSRobin Zhang #define	SFF_8636_WAVELEN_LOW_BYTE_OFFSET	0xBB
452*c42754fdSRobin Zhang 
453*c42754fdSRobin Zhang /* Wavelength  Tolerance- 188-189 */
454*c42754fdSRobin Zhang #define	SFF_8636_WAVE_TOL_HIGH_BYTE_OFFSET	0xBC
455*c42754fdSRobin Zhang #define	SFF_8636_WAVE_TOL_LOW_BYTE_OFFSET	0xBD
456*c42754fdSRobin Zhang 
457*c42754fdSRobin Zhang /* Max case temp - Other than 70 C - 190 */
458*c42754fdSRobin Zhang #define	SFF_8636_MAXCASE_TEMP_OFFSET	0xBE
459*c42754fdSRobin Zhang 
460*c42754fdSRobin Zhang /* CC_BASE - 191 */
461*c42754fdSRobin Zhang #define	SFF_8636_CC_BASE_OFFSET		0xBF
462*c42754fdSRobin Zhang 
463*c42754fdSRobin Zhang /* Option Values - 192-195 */
464*c42754fdSRobin Zhang #define	SFF_8636_OPTION_1_OFFSET	0xC0
465*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_UNSPECIFIED		0x00
466*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_AOC		0x01
467*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_SR4		0x02
468*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_LR4		0x03
469*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_ER4		0x04
470*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_SR10		0x05
471*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_CWDM4_FEC	0x06
472*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_PSM4		0x07
473*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_ACC		0x08
474*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_CWDM4_NO_FEC	0x09
475*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_RSVD1		0x0A
476*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_CR4		0x0B
477*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_25G_CR_CA_S		0x0C
478*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_25G_CR_CA_N		0x0D
479*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_ER4		0x10
480*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_4X10_SR		0x11
481*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_40G_PSM4		0x12
482*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_G959_P1I1_2D1		0x13
483*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_G959_P1S1_2D2		0x14
484*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_G959_P1L1_2D2		0x15
485*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_10GT_SFI		0x16
486*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_CLR4		0x17
487*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_AOC2		0x18
488*c42754fdSRobin Zhang #define	SFF_8636_ETHERNET_100G_ACC2		0x19
489*c42754fdSRobin Zhang 
490*c42754fdSRobin Zhang #define	SFF_8636_OPTION_2_OFFSET	0xC1
491*c42754fdSRobin Zhang /* Rx output amplitude */
492*c42754fdSRobin Zhang #define	SFF_8636_O2_RX_OUTPUT_AMP	RTE_BIT32(0)
493*c42754fdSRobin Zhang #define	SFF_8636_OPTION_3_OFFSET	0xC2
494*c42754fdSRobin Zhang /* Rx Squelch Disable */
495*c42754fdSRobin Zhang #define	SFF_8636_O3_RX_SQL_DSBL	RTE_BIT32(3)
496*c42754fdSRobin Zhang /* Rx Output Disable capable */
497*c42754fdSRobin Zhang #define	SFF_8636_O3_RX_OUTPUT_DSBL	RTE_BIT32(2)
498*c42754fdSRobin Zhang /* Tx Squelch Disable */
499*c42754fdSRobin Zhang #define	SFF_8636_O3_TX_SQL_DSBL	RTE_BIT32(1)
500*c42754fdSRobin Zhang /* Tx Squelch Impl */
501*c42754fdSRobin Zhang #define	SFF_8636_O3_TX_SQL_IMPL	RTE_BIT32(0)
502*c42754fdSRobin Zhang #define	SFF_8636_OPTION_4_OFFSET	0xC3
503*c42754fdSRobin Zhang /* Memory Page 02 present */
504*c42754fdSRobin Zhang #define	SFF_8636_O4_PAGE_02_PRESENT	RTE_BIT32(7)
505*c42754fdSRobin Zhang /* Memory Page 01 present */
506*c42754fdSRobin Zhang #define	SFF_8636_O4_PAGE_01_PRESENT	RTE_BIT32(6)
507*c42754fdSRobin Zhang /* Rate Select implemented */
508*c42754fdSRobin Zhang #define	SFF_8636_O4_RATE_SELECT	RTE_BIT32(5)
509*c42754fdSRobin Zhang /* Tx_DISABLE implemented */
510*c42754fdSRobin Zhang #define	SFF_8636_O4_TX_DISABLE		RTE_BIT32(4)
511*c42754fdSRobin Zhang /* Tx_FAULT implemented */
512*c42754fdSRobin Zhang #define	SFF_8636_O4_TX_FAULT		RTE_BIT32(3)
513*c42754fdSRobin Zhang /* Tx Squelch implemented */
514*c42754fdSRobin Zhang #define	SFF_8636_O4_TX_SQUELCH		RTE_BIT32(2)
515*c42754fdSRobin Zhang /* Tx Loss of Signal */
516*c42754fdSRobin Zhang #define	SFF_8636_O4_TX_LOS		RTE_BIT32(1)
517*c42754fdSRobin Zhang 
518*c42754fdSRobin Zhang /* Vendor SN - 196-211 */
519*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_SN_START_OFFSET	0xC4
520*c42754fdSRobin Zhang #define	SFF_8636_VENDOR_SN_END_OFFSET	0xD3
521*c42754fdSRobin Zhang 
522*c42754fdSRobin Zhang /* Vendor Date - 212-219 */
523*c42754fdSRobin Zhang #define	SFF_8636_DATE_YEAR_OFFSET	0xD4
524*c42754fdSRobin Zhang #define	SFF_8636_DATE_YEAR_LEN			2
525*c42754fdSRobin Zhang #define	SFF_8636_DATE_MONTH_OFFSET	0xD6
526*c42754fdSRobin Zhang #define	SFF_8636_DATE_MONTH_LEN		2
527*c42754fdSRobin Zhang #define	SFF_8636_DATE_DAY_OFFSET	0xD8
528*c42754fdSRobin Zhang #define	SFF_8636_DATE_DAY_LEN			2
529*c42754fdSRobin Zhang #define	SFF_8636_DATE_VENDOR_LOT_OFFSET 0xDA
530*c42754fdSRobin Zhang #define	SFF_8636_DATE_VENDOR_LOT_LEN		2
531*c42754fdSRobin Zhang 
532*c42754fdSRobin Zhang /* Diagnostic Monitoring Type - 220 */
533*c42754fdSRobin Zhang #define	SFF_8636_DIAG_TYPE_OFFSET	0xDC
534*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_TYPE_MASK	0x8
535*c42754fdSRobin Zhang #define	 SFF_8636_RX_PWR_TYPE_AVG_PWR	RTE_BIT32(3)
536*c42754fdSRobin Zhang #define	 SFF_8636_RX_PWR_TYPE_OMA	(0 << 3)
537*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_TYPE_MASK	0x4
538*c42754fdSRobin Zhang #define	 SFF_8636_TX_PWR_TYPE_AVG_PWR	RTE_BIT32(2)
539*c42754fdSRobin Zhang 
540*c42754fdSRobin Zhang /* Enhanced Options - 221 */
541*c42754fdSRobin Zhang #define	SFF_8636_ENH_OPTIONS_OFFSET	0xDD
542*c42754fdSRobin Zhang #define	SFF_8636_RATE_SELECT_EXT_SUPPORT	RTE_BIT32(3)
543*c42754fdSRobin Zhang #define	SFF_8636_RATE_SELECT_APP_TABLE_SUPPORT	RTE_BIT32(2)
544*c42754fdSRobin Zhang 
545*c42754fdSRobin Zhang /* Check code - 223 */
546*c42754fdSRobin Zhang #define	SFF_8636_CC_EXT_OFFSET		0xDF
547*c42754fdSRobin Zhang #define	SFF_8636_CC_EXT_LEN		1
548*c42754fdSRobin Zhang 
549*c42754fdSRobin Zhang /*------------------------------------------------------------------------------
550*c42754fdSRobin Zhang  *
551*c42754fdSRobin Zhang  * Upper Memory Page 03h
552*c42754fdSRobin Zhang  * Contains module thresholds, channel thresholds and masks,
553*c42754fdSRobin Zhang  * and optional channel controls
554*c42754fdSRobin Zhang  *
555*c42754fdSRobin Zhang  * Offset - Page Num(3) * PageSize(0x80) + Page offset
556*c42754fdSRobin Zhang  */
557*c42754fdSRobin Zhang 
558*c42754fdSRobin Zhang /* Module Thresholds (48 Bytes) 128-175 */
559*c42754fdSRobin Zhang /* MSB at low address, LSB at high address */
560*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HALRM		0x200
561*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LALRM		0x202
562*c42754fdSRobin Zhang #define	SFF_8636_TEMP_HWARN		0x204
563*c42754fdSRobin Zhang #define	SFF_8636_TEMP_LWARN		0x206
564*c42754fdSRobin Zhang 
565*c42754fdSRobin Zhang #define	SFF_8636_VCC_HALRM		0x210
566*c42754fdSRobin Zhang #define	SFF_8636_VCC_LALRM		0x212
567*c42754fdSRobin Zhang #define	SFF_8636_VCC_HWARN		0x214
568*c42754fdSRobin Zhang #define	SFF_8636_VCC_LWARN		0x216
569*c42754fdSRobin Zhang 
570*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_HALRM		0x230
571*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_LALRM		0x232
572*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_HWARN		0x234
573*c42754fdSRobin Zhang #define	SFF_8636_RX_PWR_LWARN		0x236
574*c42754fdSRobin Zhang 
575*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_HALRM		0x238
576*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_LALRM		0x23A
577*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_HWARN		0x23C
578*c42754fdSRobin Zhang #define	SFF_8636_TX_BIAS_LWARN		0x23E
579*c42754fdSRobin Zhang 
580*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_HALRM		0x240
581*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_LALRM		0x242
582*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_HWARN		0x244
583*c42754fdSRobin Zhang #define	SFF_8636_TX_PWR_LWARN		0x246
584*c42754fdSRobin Zhang 
585*c42754fdSRobin Zhang #define	ETH_MODULE_SFF_8636_MAX_LEN	640
586*c42754fdSRobin Zhang #define	ETH_MODULE_SFF_8436_MAX_LEN	640
587*c42754fdSRobin Zhang 
588*c42754fdSRobin Zhang #endif /* _SFF_8636_H_ */
589