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