xref: /freebsd/sys/contrib/alpine-hal/al_hal_serdes_regs.h (revision 2414e86439f4c53aff73d1afe0453fb48145d9e5)
1*49b49cdaSZbigniew Bodek /*-
2*49b49cdaSZbigniew Bodek *******************************************************************************
3*49b49cdaSZbigniew Bodek Copyright (C) 2015 Annapurna Labs Ltd.
4*49b49cdaSZbigniew Bodek 
5*49b49cdaSZbigniew Bodek This file may be licensed under the terms of the Annapurna Labs Commercial
6*49b49cdaSZbigniew Bodek License Agreement.
7*49b49cdaSZbigniew Bodek 
8*49b49cdaSZbigniew Bodek Alternatively, this file can be distributed under the terms of the GNU General
9*49b49cdaSZbigniew Bodek Public License V2 as published by the Free Software Foundation and can be
10*49b49cdaSZbigniew Bodek found at http://www.gnu.org/licenses/gpl-2.0.html
11*49b49cdaSZbigniew Bodek 
12*49b49cdaSZbigniew Bodek Alternatively, redistribution and use in source and binary forms, with or
13*49b49cdaSZbigniew Bodek without modification, are permitted provided that the following conditions are
14*49b49cdaSZbigniew Bodek met:
15*49b49cdaSZbigniew Bodek 
16*49b49cdaSZbigniew Bodek     *     Redistributions of source code must retain the above copyright notice,
17*49b49cdaSZbigniew Bodek this list of conditions and the following disclaimer.
18*49b49cdaSZbigniew Bodek 
19*49b49cdaSZbigniew Bodek     *     Redistributions in binary form must reproduce the above copyright
20*49b49cdaSZbigniew Bodek notice, this list of conditions and the following disclaimer in
21*49b49cdaSZbigniew Bodek the documentation and/or other materials provided with the
22*49b49cdaSZbigniew Bodek distribution.
23*49b49cdaSZbigniew Bodek 
24*49b49cdaSZbigniew Bodek THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
25*49b49cdaSZbigniew Bodek ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26*49b49cdaSZbigniew Bodek WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27*49b49cdaSZbigniew Bodek DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
28*49b49cdaSZbigniew Bodek ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29*49b49cdaSZbigniew Bodek (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30*49b49cdaSZbigniew Bodek LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31*49b49cdaSZbigniew Bodek ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32*49b49cdaSZbigniew Bodek (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33*49b49cdaSZbigniew Bodek SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34*49b49cdaSZbigniew Bodek 
35*49b49cdaSZbigniew Bodek *******************************************************************************/
36*49b49cdaSZbigniew Bodek 
37*49b49cdaSZbigniew Bodek /**
38*49b49cdaSZbigniew Bodek  *  @{
39*49b49cdaSZbigniew Bodek  * @file   al_hal_serdes_regs.h
40*49b49cdaSZbigniew Bodek  *
41*49b49cdaSZbigniew Bodek  * @brief ... registers
42*49b49cdaSZbigniew Bodek  *
43*49b49cdaSZbigniew Bodek  */
44*49b49cdaSZbigniew Bodek 
45*49b49cdaSZbigniew Bodek #ifndef __AL_HAL_SERDES_REGS_H__
46*49b49cdaSZbigniew Bodek #define __AL_HAL_SERDES_REGS_H__
47*49b49cdaSZbigniew Bodek 
48*49b49cdaSZbigniew Bodek #include "al_hal_plat_types.h"
49*49b49cdaSZbigniew Bodek 
50*49b49cdaSZbigniew Bodek #ifdef __cplusplus
51*49b49cdaSZbigniew Bodek extern "C" {
52*49b49cdaSZbigniew Bodek #endif
53*49b49cdaSZbigniew Bodek /*
54*49b49cdaSZbigniew Bodek * Unit Registers
55*49b49cdaSZbigniew Bodek */
56*49b49cdaSZbigniew Bodek 
57*49b49cdaSZbigniew Bodek struct serdes_gen {
58*49b49cdaSZbigniew Bodek 	/* [0x0] SerDes Registers Version */
59*49b49cdaSZbigniew Bodek 	uint32_t version;
60*49b49cdaSZbigniew Bodek 	uint32_t rsrvd_0[3];
61*49b49cdaSZbigniew Bodek 	/* [0x10] SerDes register file address */
62*49b49cdaSZbigniew Bodek 	uint32_t reg_addr;
63*49b49cdaSZbigniew Bodek 	/* [0x14] SerDes register file data */
64*49b49cdaSZbigniew Bodek 	uint32_t reg_data;
65*49b49cdaSZbigniew Bodek 	uint32_t rsrvd_1[2];
66*49b49cdaSZbigniew Bodek 	/* [0x20] SerDes control */
67*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_bist;
68*49b49cdaSZbigniew Bodek 	/* [0x24] SerDes control */
69*49b49cdaSZbigniew Bodek 	uint32_t ictl_pcs;
70*49b49cdaSZbigniew Bodek 	/* [0x28] SerDes control */
71*49b49cdaSZbigniew Bodek 	uint32_t ictl_pma;
72*49b49cdaSZbigniew Bodek 	uint32_t rsrvd_2;
73*49b49cdaSZbigniew Bodek 	/* [0x30] SerDes control */
74*49b49cdaSZbigniew Bodek 	uint32_t ipd_multi_synth;
75*49b49cdaSZbigniew Bodek 	/* [0x34] SerDes control */
76*49b49cdaSZbigniew Bodek 	uint32_t irst;
77*49b49cdaSZbigniew Bodek 	/* [0x38] SerDes control */
78*49b49cdaSZbigniew Bodek 	uint32_t octl_multi_synthready;
79*49b49cdaSZbigniew Bodek 	/* [0x3c] SerDes control */
80*49b49cdaSZbigniew Bodek 	uint32_t octl_multi_synthstatus;
81*49b49cdaSZbigniew Bodek 	/* [0x40] SerDes control */
82*49b49cdaSZbigniew Bodek 	uint32_t clk_out;
83*49b49cdaSZbigniew Bodek 	uint32_t rsrvd[47];
84*49b49cdaSZbigniew Bodek };
85*49b49cdaSZbigniew Bodek struct serdes_lane {
86*49b49cdaSZbigniew Bodek 	uint32_t rsrvd1[4];
87*49b49cdaSZbigniew Bodek 	/* [0x10] SerDes status */
88*49b49cdaSZbigniew Bodek 	uint32_t octl_pma;
89*49b49cdaSZbigniew Bodek 	/* [0x14] SerDes control */
90*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_andme;
91*49b49cdaSZbigniew Bodek 	/* [0x18] SerDes control */
92*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_lb;
93*49b49cdaSZbigniew Bodek 	/* [0x1c] SerDes control */
94*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_rxbist;
95*49b49cdaSZbigniew Bodek 	/* [0x20] SerDes control */
96*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_txbist;
97*49b49cdaSZbigniew Bodek 	/* [0x24] SerDes control */
98*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi;
99*49b49cdaSZbigniew Bodek 	/* [0x28] SerDes control */
100*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_rxeq;
101*49b49cdaSZbigniew Bodek 	/* [0x2c] SerDes control */
102*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_rxeq_l_low;
103*49b49cdaSZbigniew Bodek 	/* [0x30] SerDes control */
104*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_rxeq_l_high;
105*49b49cdaSZbigniew Bodek 	/* [0x34] SerDes control */
106*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_rxeyediag;
107*49b49cdaSZbigniew Bodek 	/* [0x38] SerDes control */
108*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_txdeemph;
109*49b49cdaSZbigniew Bodek 	/* [0x3c] SerDes control */
110*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_txmargin;
111*49b49cdaSZbigniew Bodek 	/* [0x40] SerDes control */
112*49b49cdaSZbigniew Bodek 	uint32_t ictl_multi_txswing;
113*49b49cdaSZbigniew Bodek 	/* [0x44] SerDes control */
114*49b49cdaSZbigniew Bodek 	uint32_t idat_multi;
115*49b49cdaSZbigniew Bodek 	/* [0x48] SerDes control */
116*49b49cdaSZbigniew Bodek 	uint32_t ipd_multi;
117*49b49cdaSZbigniew Bodek 	/* [0x4c] SerDes control */
118*49b49cdaSZbigniew Bodek 	uint32_t octl_multi_rxbist;
119*49b49cdaSZbigniew Bodek 	/* [0x50] SerDes control */
120*49b49cdaSZbigniew Bodek 	uint32_t octl_multi;
121*49b49cdaSZbigniew Bodek 	/* [0x54] SerDes control */
122*49b49cdaSZbigniew Bodek 	uint32_t octl_multi_rxeyediag;
123*49b49cdaSZbigniew Bodek 	/* [0x58] SerDes control */
124*49b49cdaSZbigniew Bodek 	uint32_t odat_multi_rxbist;
125*49b49cdaSZbigniew Bodek 	/* [0x5c] SerDes control */
126*49b49cdaSZbigniew Bodek 	uint32_t odat_multi_rxeq;
127*49b49cdaSZbigniew Bodek 	/* [0x60] SerDes control */
128*49b49cdaSZbigniew Bodek 	uint32_t multi_rx_dvalid;
129*49b49cdaSZbigniew Bodek 	/* [0x64] SerDes control */
130*49b49cdaSZbigniew Bodek 	uint32_t reserved;
131*49b49cdaSZbigniew Bodek 	uint32_t rsrvd[6];
132*49b49cdaSZbigniew Bodek };
133*49b49cdaSZbigniew Bodek 
134*49b49cdaSZbigniew Bodek struct al_serdes_regs {
135*49b49cdaSZbigniew Bodek 	uint32_t rsrvd_0[64];
136*49b49cdaSZbigniew Bodek 	struct serdes_gen gen;                               /* [0x100] */
137*49b49cdaSZbigniew Bodek 	struct serdes_lane lane[4];                          /* [0x200] */
138*49b49cdaSZbigniew Bodek };
139*49b49cdaSZbigniew Bodek 
140*49b49cdaSZbigniew Bodek 
141*49b49cdaSZbigniew Bodek /*
142*49b49cdaSZbigniew Bodek * Registers Fields
143*49b49cdaSZbigniew Bodek */
144*49b49cdaSZbigniew Bodek 
145*49b49cdaSZbigniew Bodek 
146*49b49cdaSZbigniew Bodek /**** version register ****/
147*49b49cdaSZbigniew Bodek /*  Revision number (Minor) */
148*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RELEASE_NUM_MINOR_MASK 0x000000FF
149*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RELEASE_NUM_MINOR_SHIFT 0
150*49b49cdaSZbigniew Bodek /*  Revision number (Major) */
151*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RELEASE_NUM_MAJOR_MASK 0x0000FF00
152*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RELEASE_NUM_MAJOR_SHIFT 8
153*49b49cdaSZbigniew Bodek /*  Date of release */
154*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATE_DAY_MASK 0x001F0000
155*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATE_DAY_SHIFT 16
156*49b49cdaSZbigniew Bodek /*  Month of release */
157*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATA_MONTH_MASK 0x01E00000
158*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATA_MONTH_SHIFT 21
159*49b49cdaSZbigniew Bodek /* Year of release (starting from 2000) */
160*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATE_YEAR_MASK 0x3E000000
161*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_DATE_YEAR_SHIFT 25
162*49b49cdaSZbigniew Bodek /*  Reserved */
163*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RESERVED_MASK 0xC0000000
164*49b49cdaSZbigniew Bodek #define SERDES_GEN_VERSION_RESERVED_SHIFT 30
165*49b49cdaSZbigniew Bodek 
166*49b49cdaSZbigniew Bodek /**** reg_addr register ****/
167*49b49cdaSZbigniew Bodek /* Address value */
168*49b49cdaSZbigniew Bodek #define SERDES_GEN_REG_ADDR_VAL_MASK     0x0000FFFF
169*49b49cdaSZbigniew Bodek #define SERDES_GEN_REG_ADDR_VAL_SHIFT    0
170*49b49cdaSZbigniew Bodek 
171*49b49cdaSZbigniew Bodek /**** reg_data register ****/
172*49b49cdaSZbigniew Bodek /* Data value */
173*49b49cdaSZbigniew Bodek #define SERDES_GEN_REG_DATA_VAL_MASK     0x000000FF
174*49b49cdaSZbigniew Bodek #define SERDES_GEN_REG_DATA_VAL_SHIFT    0
175*49b49cdaSZbigniew Bodek 
176*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_BIST register ****/
177*49b49cdaSZbigniew Bodek 
178*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_MULTI_BIST_MODESEL_NT_MASK 0x00000007
179*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_MULTI_BIST_MODESEL_NT_SHIFT 0
180*49b49cdaSZbigniew Bodek 
181*49b49cdaSZbigniew Bodek /**** ICTL_PCS register ****/
182*49b49cdaSZbigniew Bodek 
183*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PCS_EN_NT        (1 << 0)
184*49b49cdaSZbigniew Bodek 
185*49b49cdaSZbigniew Bodek /**** ICTL_PMA register ****/
186*49b49cdaSZbigniew Bodek 
187*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REF_SEL_NT_MASK 0x00000007
188*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REF_SEL_NT_SHIFT 0
189*49b49cdaSZbigniew Bodek 
190*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REF_SEL_NT_REF \
191*49b49cdaSZbigniew Bodek 	(0 << (SERDES_GEN_ICTL_PMA_REF_SEL_NT_SHIFT))
192*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REF_SEL_NT_R2L \
193*49b49cdaSZbigniew Bodek 	(3 << (SERDES_GEN_ICTL_PMA_REF_SEL_NT_SHIFT))
194*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REF_SEL_NT_L2R \
195*49b49cdaSZbigniew Bodek 	(4 << (SERDES_GEN_ICTL_PMA_REF_SEL_NT_SHIFT))
196*49b49cdaSZbigniew Bodek 
197*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_MASK 0x00000070
198*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_SHIFT 4
199*49b49cdaSZbigniew Bodek 
200*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_0 \
201*49b49cdaSZbigniew Bodek 	(0 << (SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_SHIFT))
202*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_REF \
203*49b49cdaSZbigniew Bodek 	(2 << (SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_SHIFT))
204*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_R2L \
205*49b49cdaSZbigniew Bodek 	(3 << (SERDES_GEN_ICTL_PMA_REFBUSRIGHT2LEFT_MODE_NT_SHIFT))
206*49b49cdaSZbigniew Bodek 
207*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_MASK 0x00000700
208*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_SHIFT 8
209*49b49cdaSZbigniew Bodek 
210*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_0 \
211*49b49cdaSZbigniew Bodek 	(0 << (SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_SHIFT))
212*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_REF \
213*49b49cdaSZbigniew Bodek 	(2 << (SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_SHIFT))
214*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_L2R \
215*49b49cdaSZbigniew Bodek 	(3 << (SERDES_GEN_ICTL_PMA_REFBUSLEFT2RIGHT_MODE_NT_SHIFT))
216*49b49cdaSZbigniew Bodek 
217*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_TXENABLE_A_SRC		(1 << 11)
218*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_TXENABLE_A_SRC_THIS		(0 << 11)
219*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_TXENABLE_A_SRC_MASTER	(1 << 11)
220*49b49cdaSZbigniew Bodek 
221*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_TXENABLE_A   (1 << 12)
222*49b49cdaSZbigniew Bodek 
223*49b49cdaSZbigniew Bodek #define SERDES_GEN_ICTL_PMA_SYNTHCKBYPASSEN_NT (1 << 13)
224*49b49cdaSZbigniew Bodek 
225*49b49cdaSZbigniew Bodek /**** IPD_MULTI_SYNTH register ****/
226*49b49cdaSZbigniew Bodek 
227*49b49cdaSZbigniew Bodek #define SERDES_GEN_IPD_MULTI_SYNTH_B     (1 << 0)
228*49b49cdaSZbigniew Bodek 
229*49b49cdaSZbigniew Bodek /**** IRST register ****/
230*49b49cdaSZbigniew Bodek 
231*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L3_B_A  (1 << 0)
232*49b49cdaSZbigniew Bodek 
233*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L2_B_A  (1 << 1)
234*49b49cdaSZbigniew Bodek 
235*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L1_B_A  (1 << 2)
236*49b49cdaSZbigniew Bodek 
237*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L0_B_A  (1 << 3)
238*49b49cdaSZbigniew Bodek 
239*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L3_B_A (1 << 4)
240*49b49cdaSZbigniew Bodek 
241*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L2_B_A (1 << 5)
242*49b49cdaSZbigniew Bodek 
243*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L1_B_A (1 << 6)
244*49b49cdaSZbigniew Bodek 
245*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L0_B_A (1 << 7)
246*49b49cdaSZbigniew Bodek 
247*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_SYNTH_B_A (1 << 8)
248*49b49cdaSZbigniew Bodek 
249*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_POR_B_A          (1 << 12)
250*49b49cdaSZbigniew Bodek 
251*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L3_B_A_SEL (1 << 16)
252*49b49cdaSZbigniew Bodek 
253*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L2_B_A_SEL (1 << 17)
254*49b49cdaSZbigniew Bodek 
255*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L1_B_A_SEL (1 << 18)
256*49b49cdaSZbigniew Bodek 
257*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_PIPE_RST_L0_B_A_SEL (1 << 19)
258*49b49cdaSZbigniew Bodek 
259*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L3_B_A_SEL (1 << 20)
260*49b49cdaSZbigniew Bodek 
261*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L2_B_A_SEL (1 << 21)
262*49b49cdaSZbigniew Bodek 
263*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L1_B_A_SEL (1 << 22)
264*49b49cdaSZbigniew Bodek 
265*49b49cdaSZbigniew Bodek #define SERDES_GEN_IRST_MULTI_HARD_TXRX_L0_B_A_SEL (1 << 23)
266*49b49cdaSZbigniew Bodek 
267*49b49cdaSZbigniew Bodek /**** OCTL_MULTI_SYNTHREADY register ****/
268*49b49cdaSZbigniew Bodek 
269*49b49cdaSZbigniew Bodek #define SERDES_GEN_OCTL_MULTI_SYNTHREADY_A (1 << 0)
270*49b49cdaSZbigniew Bodek 
271*49b49cdaSZbigniew Bodek /**** OCTL_MULTI_SYNTHSTATUS register ****/
272*49b49cdaSZbigniew Bodek 
273*49b49cdaSZbigniew Bodek #define SERDES_GEN_OCTL_MULTI_SYNTHSTATUS_A (1 << 0)
274*49b49cdaSZbigniew Bodek 
275*49b49cdaSZbigniew Bodek /**** clk_out register ****/
276*49b49cdaSZbigniew Bodek 
277*49b49cdaSZbigniew Bodek #define SERDES_GEN_CLK_OUT_SEL_MASK      0x0000003F
278*49b49cdaSZbigniew Bodek #define SERDES_GEN_CLK_OUT_SEL_SHIFT     0
279*49b49cdaSZbigniew Bodek 
280*49b49cdaSZbigniew Bodek /**** OCTL_PMA register ****/
281*49b49cdaSZbigniew Bodek 
282*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_PMA_TXSTATUS_L_A (1 << 0)
283*49b49cdaSZbigniew Bodek 
284*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_ANDME register ****/
285*49b49cdaSZbigniew Bodek 
286*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_ANDME_EN_L_A (1 << 0)
287*49b49cdaSZbigniew Bodek 
288*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_ANDME_EN_L_A_SEL (1 << 1)
289*49b49cdaSZbigniew Bodek 
290*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_LB register ****/
291*49b49cdaSZbigniew Bodek 
292*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_TX2RXIOTIMEDEN_L_NT (1 << 0)
293*49b49cdaSZbigniew Bodek 
294*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_TX2RXBUFTIMEDEN_L_NT (1 << 1)
295*49b49cdaSZbigniew Bodek 
296*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_RX2TXUNTIMEDEN_L_NT (1 << 2)
297*49b49cdaSZbigniew Bodek 
298*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_PARRX2TXTIMEDEN_L_NT (1 << 3)
299*49b49cdaSZbigniew Bodek 
300*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_CDRCLK2TXEN_L_NT (1 << 4)
301*49b49cdaSZbigniew Bodek 
302*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_TX2RXBUFTIMEDEN_L_NT_SEL (1 << 8)
303*49b49cdaSZbigniew Bodek 
304*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_LB_RX2TXUNTIMEDEN_L_NT_SEL (1 << 9)
305*49b49cdaSZbigniew Bodek 
306*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_RXBIST register ****/
307*49b49cdaSZbigniew Bodek 
308*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXBIST_EN_L_A (1 << 0)
309*49b49cdaSZbigniew Bodek 
310*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_TXBIST register ****/
311*49b49cdaSZbigniew Bodek 
312*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXBIST_EN_L_A (1 << 0)
313*49b49cdaSZbigniew Bodek 
314*49b49cdaSZbigniew Bodek /**** ICTL_MULTI register ****/
315*49b49cdaSZbigniew Bodek 
316*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_PSTATE_L_MASK 0x00000003
317*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_PSTATE_L_SHIFT 0
318*49b49cdaSZbigniew Bodek 
319*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_PSTATE_L_SEL (1 << 2)
320*49b49cdaSZbigniew Bodek 
321*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXDATAWIDTH_L_MASK 0x00000070
322*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXDATAWIDTH_L_SHIFT 4
323*49b49cdaSZbigniew Bodek 
324*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXOVRCDRLOCK2DATAEN_L_A (1 << 8)
325*49b49cdaSZbigniew Bodek 
326*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXOVRCDRLOCK2DATA_L_A (1 << 9)
327*49b49cdaSZbigniew Bodek 
328*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXBEACON_L_A (1 << 12)
329*49b49cdaSZbigniew Bodek 
330*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDETECTRXREQ_L_A (1 << 13)
331*49b49cdaSZbigniew Bodek 
332*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXRATE_L_MASK 0x00070000
333*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXRATE_L_SHIFT 16
334*49b49cdaSZbigniew Bodek 
335*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXRATE_L_SEL (1 << 19)
336*49b49cdaSZbigniew Bodek 
337*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXRATE_L_MASK 0x00700000
338*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXRATE_L_SHIFT 20
339*49b49cdaSZbigniew Bodek 
340*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXRATE_L_SEL (1 << 23)
341*49b49cdaSZbigniew Bodek 
342*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXAMP_L_MASK 0x07000000
343*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXAMP_L_SHIFT 24
344*49b49cdaSZbigniew Bodek 
345*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXAMP_EN_L (1 << 27)
346*49b49cdaSZbigniew Bodek 
347*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDATAWIDTH_L_MASK 0x70000000
348*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDATAWIDTH_L_SHIFT 28
349*49b49cdaSZbigniew Bodek 
350*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_RXEQ register ****/
351*49b49cdaSZbigniew Bodek 
352*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEQ_EN_L (1 << 0)
353*49b49cdaSZbigniew Bodek 
354*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEQ_START_L_A (1 << 1)
355*49b49cdaSZbigniew Bodek 
356*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEQ_PRECAL_CODE_SEL_MASK 0x00000070
357*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEQ_PRECAL_CODE_SEL_SHIFT 4
358*49b49cdaSZbigniew Bodek 
359*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_RXEQ_L_high register ****/
360*49b49cdaSZbigniew Bodek 
361*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEQ_L_HIGH_VAL (1 << 0)
362*49b49cdaSZbigniew Bodek 
363*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_RXEYEDIAG register ****/
364*49b49cdaSZbigniew Bodek 
365*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_RXEYEDIAG_START_L_A (1 << 0)
366*49b49cdaSZbigniew Bodek 
367*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_TXDEEMPH register ****/
368*49b49cdaSZbigniew Bodek 
369*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_L_MASK 0x0003FFFF
370*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_L_SHIFT 0
371*49b49cdaSZbigniew Bodek 
372*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_ZERO_MASK	0x7c0
373*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_ZERO_SHIFT	6
374*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_PLUS_MASK	0xf000
375*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_PLUS_SHIFT	12
376*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_MINUS_MASK	0x7
377*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXDEEMPH_C_MINUS_SHIFT	0
378*49b49cdaSZbigniew Bodek 
379*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_TXMARGIN register ****/
380*49b49cdaSZbigniew Bodek 
381*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXMARGIN_L_MASK 0x00000007
382*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXMARGIN_L_SHIFT 0
383*49b49cdaSZbigniew Bodek 
384*49b49cdaSZbigniew Bodek /**** ICTL_MULTI_TXSWING register ****/
385*49b49cdaSZbigniew Bodek 
386*49b49cdaSZbigniew Bodek #define SERDES_LANE_ICTL_MULTI_TXSWING_L (1 << 0)
387*49b49cdaSZbigniew Bodek 
388*49b49cdaSZbigniew Bodek /**** IDAT_MULTI register ****/
389*49b49cdaSZbigniew Bodek 
390*49b49cdaSZbigniew Bodek #define SERDES_LANE_IDAT_MULTI_TXELECIDLE_L_MASK 0x0000000F
391*49b49cdaSZbigniew Bodek #define SERDES_LANE_IDAT_MULTI_TXELECIDLE_L_SHIFT 0
392*49b49cdaSZbigniew Bodek 
393*49b49cdaSZbigniew Bodek #define SERDES_LANE_IDAT_MULTI_TXELECIDLE_L_SEL (1 << 4)
394*49b49cdaSZbigniew Bodek 
395*49b49cdaSZbigniew Bodek /**** IPD_MULTI register ****/
396*49b49cdaSZbigniew Bodek 
397*49b49cdaSZbigniew Bodek #define SERDES_LANE_IPD_MULTI_TX_L_B     (1 << 0)
398*49b49cdaSZbigniew Bodek 
399*49b49cdaSZbigniew Bodek #define SERDES_LANE_IPD_MULTI_RX_L_B     (1 << 1)
400*49b49cdaSZbigniew Bodek 
401*49b49cdaSZbigniew Bodek /**** OCTL_MULTI_RXBIST register ****/
402*49b49cdaSZbigniew Bodek 
403*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXBIST_DONE_L_A (1 << 0)
404*49b49cdaSZbigniew Bodek 
405*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXBIST_RXLOCKED_L_A (1 << 1)
406*49b49cdaSZbigniew Bodek 
407*49b49cdaSZbigniew Bodek /**** OCTL_MULTI register ****/
408*49b49cdaSZbigniew Bodek 
409*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXCDRLOCK2DATA_L_A (1 << 0)
410*49b49cdaSZbigniew Bodek 
411*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXEQ_DONE_L_A (1 << 1)
412*49b49cdaSZbigniew Bodek 
413*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXREADY_L_A (1 << 2)
414*49b49cdaSZbigniew Bodek 
415*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXSTATUS_L_A (1 << 3)
416*49b49cdaSZbigniew Bodek 
417*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_TXREADY_L_A (1 << 4)
418*49b49cdaSZbigniew Bodek 
419*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_TXDETECTRXSTAT_L_A (1 << 5)
420*49b49cdaSZbigniew Bodek 
421*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_TXDETECTRXACK_L_A (1 << 6)
422*49b49cdaSZbigniew Bodek 
423*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXSIGNALDETECT_L_A (1 << 7)
424*49b49cdaSZbigniew Bodek 
425*49b49cdaSZbigniew Bodek /**** OCTL_MULTI_RXEYEDIAG register ****/
426*49b49cdaSZbigniew Bodek 
427*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXEYEDIAG_STAT_L_A_MASK 0x00003FFF
428*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXEYEDIAG_STAT_L_A_SHIFT 0
429*49b49cdaSZbigniew Bodek 
430*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXEYEDIAG_DONE_L_A (1 << 16)
431*49b49cdaSZbigniew Bodek 
432*49b49cdaSZbigniew Bodek #define SERDES_LANE_OCTL_MULTI_RXEYEDIAG_ERR_L_A (1 << 17)
433*49b49cdaSZbigniew Bodek 
434*49b49cdaSZbigniew Bodek /**** ODAT_MULTI_RXBIST register ****/
435*49b49cdaSZbigniew Bodek 
436*49b49cdaSZbigniew Bodek #define SERDES_LANE_ODAT_MULTI_RXBIST_ERRCOUNT_L_A_MASK 0x0000FFFF
437*49b49cdaSZbigniew Bodek #define SERDES_LANE_ODAT_MULTI_RXBIST_ERRCOUNT_L_A_SHIFT 0
438*49b49cdaSZbigniew Bodek 
439*49b49cdaSZbigniew Bodek #define SERDES_LANE_ODAT_MULTI_RXBIST_ERRCOUNT_OVERFLOW_L_A (1 << 16)
440*49b49cdaSZbigniew Bodek 
441*49b49cdaSZbigniew Bodek /**** ODAT_MULTI_RXEQ register ****/
442*49b49cdaSZbigniew Bodek 
443*49b49cdaSZbigniew Bodek #define SERDES_LANE_ODAT_MULTI_RXEQ_BEST_EYE_VAL_L_A_MASK 0x00003FFF
444*49b49cdaSZbigniew Bodek #define SERDES_LANE_ODAT_MULTI_RXEQ_BEST_EYE_VAL_L_A_SHIFT 0
445*49b49cdaSZbigniew Bodek 
446*49b49cdaSZbigniew Bodek /**** MULTI_RX_DVALID register ****/
447*49b49cdaSZbigniew Bodek 
448*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_CDR_LOCK (1 << 0)
449*49b49cdaSZbigniew Bodek 
450*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_SIGNALDETECT (1 << 1)
451*49b49cdaSZbigniew Bodek 
452*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_TX_READY (1 << 2)
453*49b49cdaSZbigniew Bodek 
454*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_RX_READY (1 << 3)
455*49b49cdaSZbigniew Bodek 
456*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_SYNT_READY (1 << 4)
457*49b49cdaSZbigniew Bodek 
458*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MASK_RX_ELECIDLE (1 << 5)
459*49b49cdaSZbigniew Bodek 
460*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MUX_SEL_MASK 0x00FF0000
461*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_MUX_SEL_SHIFT 16
462*49b49cdaSZbigniew Bodek 
463*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_00_SEL (1 << 24)
464*49b49cdaSZbigniew Bodek 
465*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_00_VAL (1 << 25)
466*49b49cdaSZbigniew Bodek 
467*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_01_SEL (1 << 26)
468*49b49cdaSZbigniew Bodek 
469*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_01_VAL (1 << 27)
470*49b49cdaSZbigniew Bodek 
471*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_10_SEL (1 << 28)
472*49b49cdaSZbigniew Bodek 
473*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_10_VAL (1 << 29)
474*49b49cdaSZbigniew Bodek 
475*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_11_SEL (1 << 30)
476*49b49cdaSZbigniew Bodek 
477*49b49cdaSZbigniew Bodek #define SERDES_LANE_MULTI_RX_DVALID_PS_11_VAL (1 << 31)
478*49b49cdaSZbigniew Bodek 
479*49b49cdaSZbigniew Bodek /**** reserved register ****/
480*49b49cdaSZbigniew Bodek 
481*49b49cdaSZbigniew Bodek #define SERDES_LANE_RESERVED_OUT_MASK    0x000000FF
482*49b49cdaSZbigniew Bodek #define SERDES_LANE_RESERVED_OUT_SHIFT   0
483*49b49cdaSZbigniew Bodek 
484*49b49cdaSZbigniew Bodek #define SERDES_LANE_RESERVED_IN_MASK     0x00FF0000
485*49b49cdaSZbigniew Bodek #define SERDES_LANE_RESERVED_IN_SHIFT    16
486*49b49cdaSZbigniew Bodek 
487*49b49cdaSZbigniew Bodek #ifdef __cplusplus
488*49b49cdaSZbigniew Bodek }
489*49b49cdaSZbigniew Bodek #endif
490*49b49cdaSZbigniew Bodek 
491*49b49cdaSZbigniew Bodek #endif /* __AL_HAL_serdes_REGS_H__ */
492*49b49cdaSZbigniew Bodek 
493*49b49cdaSZbigniew Bodek /** @} end of ... group */
494*49b49cdaSZbigniew Bodek 
495*49b49cdaSZbigniew Bodek 
496