1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2011-2013, NVIDIA Corporation. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _VIDEO_TEGRA124_SOR_H 8*4882a593Smuzhiyun #define _VIDEO_TEGRA124_SOR_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #define SUPER_STATE0 0x1 11*4882a593Smuzhiyun #define SUPER_STATE0_UPDATE_SHIFT 0 12*4882a593Smuzhiyun #define SUPER_STATE0_UPDATE_DEFAULT_MASK 0x1 13*4882a593Smuzhiyun #define SUPER_STATE1 0x2 14*4882a593Smuzhiyun #define SUPER_STATE1_ATTACHED_SHIFT 3 15*4882a593Smuzhiyun #define SUPER_STATE1_ATTACHED_NO (0 << 3) 16*4882a593Smuzhiyun #define SUPER_STATE1_ATTACHED_YES (1 << 3) 17*4882a593Smuzhiyun #define SUPER_STATE1_ASY_ORMODE_SHIFT 2 18*4882a593Smuzhiyun #define SUPER_STATE1_ASY_ORMODE_SAFE (0 << 2) 19*4882a593Smuzhiyun #define SUPER_STATE1_ASY_ORMODE_NORMAL (1 << 2) 20*4882a593Smuzhiyun #define SUPER_STATE1_ASY_HEAD_OP_SHIFT 0 21*4882a593Smuzhiyun #define SUPER_STATE1_ASY_HEAD_OP_DEFAULT_MASK 0x3 22*4882a593Smuzhiyun #define SUPER_STATE1_ASY_HEAD_OP_SLEEP 0 23*4882a593Smuzhiyun #define SUPER_STATE1_ASY_HEAD_OP_SNOOZE 1 24*4882a593Smuzhiyun #define SUPER_STATE1_ASY_HEAD_OP_AWAKE 2 25*4882a593Smuzhiyun #define STATE0 0x3 26*4882a593Smuzhiyun #define STATE0_UPDATE_SHIFT 0 27*4882a593Smuzhiyun #define STATE0_UPDATE_DEFAULT_MASK 0x1 28*4882a593Smuzhiyun #define STATE1 0x4 29*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_SHIFT 17 30*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_DEFAULT_MASK (0xf << 17) 31*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_16_422 (1 << 17) 32*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_18_444 (2 << 17) 33*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_20_422 (3 << 17) 34*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_24_422 (4 << 17) 35*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_24_444 (5 << 17) 36*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_30_444 (6 << 17) 37*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_32_422 (7 << 17) 38*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_36_444 (8 << 17) 39*4882a593Smuzhiyun #define STATE1_ASY_PIXELDEPTH_BPP_48_444 (9 << 17) 40*4882a593Smuzhiyun #define STATE1_ASY_REPLICATE_SHIFT 15 41*4882a593Smuzhiyun #define STATE1_ASY_REPLICATE_DEFAULT_MASK (3 << 15) 42*4882a593Smuzhiyun #define STATE1_ASY_REPLICATE_OFF (0 << 15) 43*4882a593Smuzhiyun #define STATE1_ASY_REPLICATE_X2 (1 << 15) 44*4882a593Smuzhiyun #define STATE1_ASY_REPLICATE_X4 (2 << 15) 45*4882a593Smuzhiyun #define STATE1_ASY_DEPOL_SHIFT 14 46*4882a593Smuzhiyun #define STATE1_ASY_DEPOL_DEFAULT_MASK (1 << 14) 47*4882a593Smuzhiyun #define STATE1_ASY_DEPOL_POSITIVE_TRUE (0 << 14) 48*4882a593Smuzhiyun #define STATE1_ASY_DEPOL_NEGATIVE_TRUE (1 << 14) 49*4882a593Smuzhiyun #define STATE1_ASY_VSYNCPOL_SHIFT 13 50*4882a593Smuzhiyun #define STATE1_ASY_VSYNCPOL_DEFAULT_MASK (1 << 13) 51*4882a593Smuzhiyun #define STATE1_ASY_VSYNCPOL_POSITIVE_TRUE (0 << 13) 52*4882a593Smuzhiyun #define STATE1_ASY_VSYNCPOL_NEGATIVE_TRUE (1 << 13) 53*4882a593Smuzhiyun #define STATE1_ASY_HSYNCPOL_SHIFT 12 54*4882a593Smuzhiyun #define STATE1_ASY_HSYNCPOL_DEFAULT_MASK (1 << 12) 55*4882a593Smuzhiyun #define STATE1_ASY_HSYNCPOL_POSITIVE_TRUE (0 << 12) 56*4882a593Smuzhiyun #define STATE1_ASY_HSYNCPOL_NEGATIVE_TRUE (1 << 12) 57*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_SHIFT 8 58*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_DEFAULT_MASK (0xf << 8) 59*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_LVDS_CUSTOM (0 << 8) 60*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_DP_A (8 << 8) 61*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_DP_B (9 << 8) 62*4882a593Smuzhiyun #define STATE1_ASY_PROTOCOL_CUSTOM (15 << 8) 63*4882a593Smuzhiyun #define STATE1_ASY_CRCMODE_SHIFT 6 64*4882a593Smuzhiyun #define STATE1_ASY_CRCMODE_DEFAULT_MASK (3 << 6) 65*4882a593Smuzhiyun #define STATE1_ASY_CRCMODE_ACTIVE_RASTER (0 << 6) 66*4882a593Smuzhiyun #define STATE1_ASY_CRCMODE_COMPLETE_RASTER (1 << 6) 67*4882a593Smuzhiyun #define STATE1_ASY_CRCMODE_NON_ACTIVE_RASTER (2 << 6) 68*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_SHIFT 4 69*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_DEFAULT_MASK (3 << 4) 70*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_NONE (0 << 4) 71*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_SUBHEAD0 (1 << 4) 72*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_SUBHEAD1 (2 << 4) 73*4882a593Smuzhiyun #define STATE1_ASY_SUBOWNER_BOTH (3 << 4) 74*4882a593Smuzhiyun #define STATE1_ASY_OWNER_SHIFT 0 75*4882a593Smuzhiyun #define STATE1_ASY_OWNER_DEFAULT_MASK 0xf 76*4882a593Smuzhiyun #define STATE1_ASY_OWNER_NONE 0 77*4882a593Smuzhiyun #define STATE1_ASY_OWNER_HEAD0 1 78*4882a593Smuzhiyun #define STATE1_ASY_OWNER_HEAD1 2 79*4882a593Smuzhiyun #define NV_HEAD_STATE0(i) 0x5 80*4882a593Smuzhiyun #define NV_HEAD_STATE0_INTERLACED_SHIFT 4 81*4882a593Smuzhiyun #define NV_HEAD_STATE0_INTERLACED_DEFAULT_MASK (3 << 4) 82*4882a593Smuzhiyun #define NV_HEAD_STATE0_INTERLACED_PROGRESSIVE (0 << 4) 83*4882a593Smuzhiyun #define NV_HEAD_STATE0_INTERLACED_INTERLACED (1 << 4) 84*4882a593Smuzhiyun #define NV_HEAD_STATE0_RANGECOMPRESS_SHIFT 3 85*4882a593Smuzhiyun #define NV_HEAD_STATE0_RANGECOMPRESS_DEFAULT_MASK (1 << 3) 86*4882a593Smuzhiyun #define NV_HEAD_STATE0_RANGECOMPRESS_DISABLE (0 << 3) 87*4882a593Smuzhiyun #define NV_HEAD_STATE0_RANGECOMPRESS_ENABLE (1 << 3) 88*4882a593Smuzhiyun #define NV_HEAD_STATE0_DYNRANGE_SHIFT 2 89*4882a593Smuzhiyun #define NV_HEAD_STATE0_DYNRANGE_DEFAULT_MASK (1 << 2) 90*4882a593Smuzhiyun #define NV_HEAD_STATE0_DYNRANGE_VESA (0 << 2) 91*4882a593Smuzhiyun #define NV_HEAD_STATE0_DYNRANGE_CEA (1 << 2) 92*4882a593Smuzhiyun #define NV_HEAD_STATE0_COLORSPACE_SHIFT 0 93*4882a593Smuzhiyun #define NV_HEAD_STATE0_COLORSPACE_DEFAULT_MASK 0x3 94*4882a593Smuzhiyun #define NV_HEAD_STATE0_COLORSPACE_RGB 0 95*4882a593Smuzhiyun #define NV_HEAD_STATE0_COLORSPACE_YUV_601 1 96*4882a593Smuzhiyun #define NV_HEAD_STATE0_COLORSPACE_YUV_709 2 97*4882a593Smuzhiyun #define NV_HEAD_STATE1(i) (7 + i) 98*4882a593Smuzhiyun #define NV_HEAD_STATE1_VTOTAL_SHIFT 16 99*4882a593Smuzhiyun #define NV_HEAD_STATE1_VTOTAL_DEFAULT_MASK (0x7fff << 16) 100*4882a593Smuzhiyun #define NV_HEAD_STATE1_HTOTAL_SHIFT 0 101*4882a593Smuzhiyun #define NV_HEAD_STATE1_HTOTAL_DEFAULT_MASK 0x7fff 102*4882a593Smuzhiyun #define NV_HEAD_STATE2(i) (9 + i) 103*4882a593Smuzhiyun #define NV_HEAD_STATE2_VSYNC_END_SHIFT 16 104*4882a593Smuzhiyun #define NV_HEAD_STATE2_VSYNC_END_DEFAULT_MASK (0x7fff << 16) 105*4882a593Smuzhiyun #define NV_HEAD_STATE2_HSYNC_END_SHIFT 0 106*4882a593Smuzhiyun #define NV_HEAD_STATE2_HSYNC_END_DEFAULT_MASK 0x7fff 107*4882a593Smuzhiyun #define NV_HEAD_STATE3(i) (0xb + i) 108*4882a593Smuzhiyun #define NV_HEAD_STATE3_VBLANK_END_SHIFT 16 109*4882a593Smuzhiyun #define NV_HEAD_STATE3_VBLANK_END_DEFAULT_MASK (0x7fff << 16) 110*4882a593Smuzhiyun #define NV_HEAD_STATE3_HBLANK_END_SHIFT 0 111*4882a593Smuzhiyun #define NV_HEAD_STATE3_HBLANK_END_DEFAULT_MASK 0x7fff 112*4882a593Smuzhiyun #define NV_HEAD_STATE4(i) (0xd + i) 113*4882a593Smuzhiyun #define NV_HEAD_STATE4_VBLANK_START_SHIFT 16 114*4882a593Smuzhiyun #define NV_HEAD_STATE4_VBLANK_START_DEFAULT_MASK (0x7fff << 16) 115*4882a593Smuzhiyun #define NV_HEAD_STATE4_HBLANK_START_SHIFT 0 116*4882a593Smuzhiyun #define NV_HEAD_STATE4_HBLANK_START_DEFAULT_MASK 0x7fff 117*4882a593Smuzhiyun #define NV_HEAD_STATE5(i) (0xf + i) 118*4882a593Smuzhiyun #define CRC_CNTRL 0x11 119*4882a593Smuzhiyun #define CRC_CNTRL_ARM_CRC_ENABLE_SHIFT 0 120*4882a593Smuzhiyun #define CRC_CNTRL_ARM_CRC_ENABLE_NO 0 121*4882a593Smuzhiyun #define CRC_CNTRL_ARM_CRC_ENABLE_YES 1 122*4882a593Smuzhiyun #define CRC_CNTRL_ARM_CRC_ENABLE_DIS 0 123*4882a593Smuzhiyun #define CRC_CNTRL_ARM_CRC_ENABLE_EN 1 124*4882a593Smuzhiyun #define CLK_CNTRL 0x13 125*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_SHIFT 0 126*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_MASK 0x3 127*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_SINGLE_PCLK 0 128*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_DIFF_PCLK 1 129*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_SINGLE_DPCLK 2 130*4882a593Smuzhiyun #define CLK_CNTRL_DP_CLK_SEL_DIFF_DPCLK 3 131*4882a593Smuzhiyun #define CLK_CNTRL_DP_LINK_SPEED_SHIFT 2 132*4882a593Smuzhiyun #define CLK_CNTRL_DP_LINK_SPEED_MASK (0x1f << 2) 133*4882a593Smuzhiyun #define CLK_CNTRL_DP_LINK_SPEED_G1_62 (6 << 2) 134*4882a593Smuzhiyun #define CLK_CNTRL_DP_LINK_SPEED_G2_7 (10 << 2) 135*4882a593Smuzhiyun #define CLK_CNTRL_DP_LINK_SPEED_LVDS (7 << 2) 136*4882a593Smuzhiyun #define CAP 0x14 137*4882a593Smuzhiyun #define CAP_DP_A_SHIFT 24 138*4882a593Smuzhiyun #define CAP_DP_A_DEFAULT_MASK (1 << 24) 139*4882a593Smuzhiyun #define CAP_DP_A_FALSE (0 << 24) 140*4882a593Smuzhiyun #define CAP_DP_A_TRUE (1 << 24) 141*4882a593Smuzhiyun #define CAP_DP_B_SHIFT 25 142*4882a593Smuzhiyun #define CAP_DP_B_DEFAULT_MASK (1 << 24) 143*4882a593Smuzhiyun #define CAP_DP_B_FALSE (0 << 24) 144*4882a593Smuzhiyun #define CAP_DP_B_TRUE (1 << 24) 145*4882a593Smuzhiyun #define PWR 0x15 146*4882a593Smuzhiyun #define PWR_SETTING_NEW_SHIFT 31 147*4882a593Smuzhiyun #define PWR_SETTING_NEW_DEFAULT_MASK (1 << 31) 148*4882a593Smuzhiyun #define PWR_SETTING_NEW_DONE (0 << 31) 149*4882a593Smuzhiyun #define PWR_SETTING_NEW_PENDING (1 << 31) 150*4882a593Smuzhiyun #define PWR_SETTING_NEW_TRIGGER (1 << 31) 151*4882a593Smuzhiyun #define PWR_MODE_SHIFT 28 152*4882a593Smuzhiyun #define PWR_MODE_DEFAULT_MASK (1 << 28) 153*4882a593Smuzhiyun #define PWR_MODE_NORMAL (0 << 28) 154*4882a593Smuzhiyun #define PWR_MODE_SAFE (1 << 28) 155*4882a593Smuzhiyun #define PWR_HALT_DELAY_SHIFT 24 156*4882a593Smuzhiyun #define PWR_HALT_DELAY_DEFAULT_MASK (1 << 24) 157*4882a593Smuzhiyun #define PWR_HALT_DELAY_DONE (0 << 24) 158*4882a593Smuzhiyun #define PWR_HALT_DELAY_ACTIVE (1 << 24) 159*4882a593Smuzhiyun #define PWR_SAFE_START_SHIFT 17 160*4882a593Smuzhiyun #define PWR_SAFE_START_DEFAULT_MASK (1 << 17) 161*4882a593Smuzhiyun #define PWR_SAFE_START_NORMAL (0 << 17) 162*4882a593Smuzhiyun #define PWR_SAFE_START_ALT (1 << 17) 163*4882a593Smuzhiyun #define PWR_SAFE_STATE_SHIFT 16 164*4882a593Smuzhiyun #define PWR_SAFE_STATE_DEFAULT_MASK (1 << 16) 165*4882a593Smuzhiyun #define PWR_SAFE_STATE_PD (0 << 16) 166*4882a593Smuzhiyun #define PWR_SAFE_STATE_PU (1 << 16) 167*4882a593Smuzhiyun #define PWR_NORMAL_START_SHIFT 1 168*4882a593Smuzhiyun #define PWR_NORMAL_START_DEFAULT_MASK (1 << 1) 169*4882a593Smuzhiyun #define PWR_NORMAL_START_NORMAL (0 << 16) 170*4882a593Smuzhiyun #define PWR_NORMAL_START_ALT (1 << 16) 171*4882a593Smuzhiyun #define PWR_NORMAL_STATE_SHIFT 0 172*4882a593Smuzhiyun #define PWR_NORMAL_STATE_DEFAULT_MASK 0x1 173*4882a593Smuzhiyun #define PWR_NORMAL_STATE_PD 0 174*4882a593Smuzhiyun #define PWR_NORMAL_STATE_PU 1 175*4882a593Smuzhiyun #define TEST 0x16 176*4882a593Smuzhiyun #define TEST_TESTMUX_SHIFT 24 177*4882a593Smuzhiyun #define TEST_TESTMUX_DEFAULT_MASK (0xff << 24) 178*4882a593Smuzhiyun #define TEST_TESTMUX_AVSS (0 << 24) 179*4882a593Smuzhiyun #define TEST_TESTMUX_CLOCKIN (2 << 24) 180*4882a593Smuzhiyun #define TEST_TESTMUX_PLL_VOL (4 << 24) 181*4882a593Smuzhiyun #define TEST_TESTMUX_SLOWCLKINT (8 << 24) 182*4882a593Smuzhiyun #define TEST_TESTMUX_AVDD (16 << 24) 183*4882a593Smuzhiyun #define TEST_TESTMUX_VDDREG (32 << 24) 184*4882a593Smuzhiyun #define TEST_TESTMUX_REGREF_VDDREG (64 << 24) 185*4882a593Smuzhiyun #define TEST_TESTMUX_REGREF_AVDD (128 << 24) 186*4882a593Smuzhiyun #define TEST_CRC_SHIFT 23 187*4882a593Smuzhiyun #define TEST_CRC_PRE_SERIALIZE (0 << 23) 188*4882a593Smuzhiyun #define TEST_CRC_POST_DESERIALIZE (1 << 23) 189*4882a593Smuzhiyun #define TEST_TPAT_SHIFT 20 190*4882a593Smuzhiyun #define TEST_TPAT_DEFAULT_MASK (7 << 20) 191*4882a593Smuzhiyun #define TEST_TPAT_LO (0 << 20) 192*4882a593Smuzhiyun #define TEST_TPAT_TDAT (1 << 20) 193*4882a593Smuzhiyun #define TEST_TPAT_RAMP (2 << 20) 194*4882a593Smuzhiyun #define TEST_TPAT_WALK (3 << 20) 195*4882a593Smuzhiyun #define TEST_TPAT_MAXSTEP (4 << 20) 196*4882a593Smuzhiyun #define TEST_TPAT_MINSTEP (5 << 20) 197*4882a593Smuzhiyun #define TEST_DSRC_SHIFT 16 198*4882a593Smuzhiyun #define TEST_DSRC_DEFAULT_MASK (3 << 16) 199*4882a593Smuzhiyun #define TEST_DSRC_NORMAL (0 << 16) 200*4882a593Smuzhiyun #define TEST_DSRC_DEBUG (1 << 16) 201*4882a593Smuzhiyun #define TEST_DSRC_TGEN (2 << 16) 202*4882a593Smuzhiyun #define TEST_HEAD_NUMBER_SHIFT 12 203*4882a593Smuzhiyun #define TEST_HEAD_NUMBER_DEFAULT_MASK (3 << 12) 204*4882a593Smuzhiyun #define TEST_HEAD_NUMBER_NONE (0 << 12) 205*4882a593Smuzhiyun #define TEST_HEAD_NUMBER_HEAD0 (1 << 12) 206*4882a593Smuzhiyun #define TEST_HEAD_NUMBER_HEAD1 (2 << 12) 207*4882a593Smuzhiyun #define TEST_ATTACHED_SHIFT 10 208*4882a593Smuzhiyun #define TEST_ATTACHED_DEFAULT_MASK (1 << 10) 209*4882a593Smuzhiyun #define TEST_ATTACHED_FALSE (0 << 10) 210*4882a593Smuzhiyun #define TEST_ATTACHED_TRUE (1 << 10) 211*4882a593Smuzhiyun #define TEST_ACT_HEAD_OPMODE_SHIFT 8 212*4882a593Smuzhiyun #define TEST_ACT_HEAD_OPMODE_DEFAULT_MASK (3 << 8) 213*4882a593Smuzhiyun #define TEST_ACT_HEAD_OPMODE_SLEEP (0 << 8) 214*4882a593Smuzhiyun #define TEST_ACT_HEAD_OPMODE_SNOOZE (1 << 8) 215*4882a593Smuzhiyun #define TEST_ACT_HEAD_OPMODE_AWAKE (2 << 8) 216*4882a593Smuzhiyun #define TEST_INVD_SHIFT 6 217*4882a593Smuzhiyun #define TEST_INVD_DISABLE (0 << 6) 218*4882a593Smuzhiyun #define TEST_INVD_ENABLE (1 << 6) 219*4882a593Smuzhiyun #define TEST_TEST_ENABLE_SHIFT 1 220*4882a593Smuzhiyun #define TEST_TEST_ENABLE_DISABLE (0 << 1) 221*4882a593Smuzhiyun #define TEST_TEST_ENABLE_ENABLE (1 << 1) 222*4882a593Smuzhiyun #define PLL0 0x17 223*4882a593Smuzhiyun #define PLL0_ICHPMP_SHFIT 24 224*4882a593Smuzhiyun #define PLL0_ICHPMP_DEFAULT_MASK (0xf << 24) 225*4882a593Smuzhiyun #define PLL0_VCOCAP_SHIFT 8 226*4882a593Smuzhiyun #define PLL0_VCOCAP_DEFAULT_MASK (0xf << 8) 227*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_SHIFT 6 228*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_DEFAULT_MASK (3 << 6) 229*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_V25 (0 << 6) 230*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_V15 (1 << 6) 231*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_V35 (2 << 6) 232*4882a593Smuzhiyun #define PLL0_PLLREG_LEVEL_V45 (3 << 6) 233*4882a593Smuzhiyun #define PLL0_PULLDOWN_SHIFT 5 234*4882a593Smuzhiyun #define PLL0_PULLDOWN_DEFAULT_MASK (1 << 5) 235*4882a593Smuzhiyun #define PLL0_PULLDOWN_DISABLE (0 << 5) 236*4882a593Smuzhiyun #define PLL0_PULLDOWN_ENABLE (1 << 5) 237*4882a593Smuzhiyun #define PLL0_RESISTORSEL_SHIFT 4 238*4882a593Smuzhiyun #define PLL0_RESISTORSEL_DEFAULT_MASK (1 << 4) 239*4882a593Smuzhiyun #define PLL0_RESISTORSEL_INT (0 << 4) 240*4882a593Smuzhiyun #define PLL0_RESISTORSEL_EXT (1 << 4) 241*4882a593Smuzhiyun #define PLL0_VCOPD_SHIFT 2 242*4882a593Smuzhiyun #define PLL0_VCOPD_MASK (1 << 2) 243*4882a593Smuzhiyun #define PLL0_VCOPD_RESCIND (0 << 2) 244*4882a593Smuzhiyun #define PLL0_VCOPD_ASSERT (1 << 2) 245*4882a593Smuzhiyun #define PLL0_PWR_SHIFT 0 246*4882a593Smuzhiyun #define PLL0_PWR_MASK 1 247*4882a593Smuzhiyun #define PLL0_PWR_ON 0 248*4882a593Smuzhiyun #define PLL0_PWR_OFF 1 249*4882a593Smuzhiyun #define PLL1_TMDS_TERM_SHIFT 8 250*4882a593Smuzhiyun #define PLL1_TMDS_TERM_DISABLE (0 << 8) 251*4882a593Smuzhiyun #define PLL1_TMDS_TERM_ENABLE (1 << 8) 252*4882a593Smuzhiyun #define PLL1 0x18 253*4882a593Smuzhiyun #define PLL1_TERM_COMPOUT_SHIFT 15 254*4882a593Smuzhiyun #define PLL1_TERM_COMPOUT_LOW (0 << 15) 255*4882a593Smuzhiyun #define PLL1_TERM_COMPOUT_HIGH (1 << 15) 256*4882a593Smuzhiyun #define PLL2 0x19 257*4882a593Smuzhiyun #define PLL2_DCIR_PLL_RESET_SHIFT 0 258*4882a593Smuzhiyun #define PLL2_DCIR_PLL_RESET_OVERRIDE (0 << 0) 259*4882a593Smuzhiyun #define PLL2_DCIR_PLL_RESET_ALLOW (1 << 0) 260*4882a593Smuzhiyun #define PLL2_AUX1_SHIFT 17 261*4882a593Smuzhiyun #define PLL2_AUX1_SEQ_MASK (1 << 17) 262*4882a593Smuzhiyun #define PLL2_AUX1_SEQ_PLLCAPPD_ALLOW (0 << 17) 263*4882a593Smuzhiyun #define PLL2_AUX1_SEQ_PLLCAPPD_OVERRIDE (1 << 17) 264*4882a593Smuzhiyun #define PLL2_AUX2_SHIFT 18 265*4882a593Smuzhiyun #define PLL2_AUX2_MASK (1 << 18) 266*4882a593Smuzhiyun #define PLL2_AUX2_OVERRIDE_POWERDOWN (0 << 18) 267*4882a593Smuzhiyun #define PLL2_AUX2_ALLOW_POWERDOWN (1 << 18) 268*4882a593Smuzhiyun #define PLL2_AUX6_SHIFT 22 269*4882a593Smuzhiyun #define PLL2_AUX6_BANDGAP_POWERDOWN_MASK (1 << 22) 270*4882a593Smuzhiyun #define PLL2_AUX6_BANDGAP_POWERDOWN_DISABLE (0 << 22) 271*4882a593Smuzhiyun #define PLL2_AUX6_BANDGAP_POWERDOWN_ENABLE (1 << 22) 272*4882a593Smuzhiyun #define PLL2_AUX7_SHIFT 23 273*4882a593Smuzhiyun #define PLL2_AUX7_PORT_POWERDOWN_MASK (1 << 23) 274*4882a593Smuzhiyun #define PLL2_AUX7_PORT_POWERDOWN_DISABLE (0 << 23) 275*4882a593Smuzhiyun #define PLL2_AUX7_PORT_POWERDOWN_ENABLE (1 << 23) 276*4882a593Smuzhiyun #define PLL2_AUX8_SHIFT 24 277*4882a593Smuzhiyun #define PLL2_AUX8_SEQ_PLLCAPPD_ENFORCE_MASK (1 << 24) 278*4882a593Smuzhiyun #define PLL2_AUX8_SEQ_PLLCAPPD_ENFORCE_DISABLE (0 << 24) 279*4882a593Smuzhiyun #define PLL2_AUX8_SEQ_PLLCAPPD_ENFORCE_ENABLE (1 << 24) 280*4882a593Smuzhiyun #define PLL2_AUX9_SHIFT 25 281*4882a593Smuzhiyun #define PLL2_AUX9_LVDSEN_ALLOW (0 << 25) 282*4882a593Smuzhiyun #define PLL2_AUX9_LVDSEN_OVERRIDE (1 << 25) 283*4882a593Smuzhiyun #define PLL3 0x1a 284*4882a593Smuzhiyun #define PLL3_PLLVDD_MODE_SHIFT 13 285*4882a593Smuzhiyun #define PLL3_PLLVDD_MODE_MASK (1 << 13) 286*4882a593Smuzhiyun #define PLL3_PLLVDD_MODE_V1_8 (0 << 13) 287*4882a593Smuzhiyun #define PLL3_PLLVDD_MODE_V3_3 (1 << 13) 288*4882a593Smuzhiyun #define CSTM 0x1b 289*4882a593Smuzhiyun #define CSTM_ROTDAT_SHIFT 28 290*4882a593Smuzhiyun #define CSTM_ROTDAT_DEFAULT_MASK (7 << 28) 291*4882a593Smuzhiyun #define CSTM_ROTCLK_SHIFT 24 292*4882a593Smuzhiyun #define CSTM_ROTCLK_DEFAULT_MASK (0xf << 24) 293*4882a593Smuzhiyun #define CSTM_LVDS_EN_SHIFT 16 294*4882a593Smuzhiyun #define CSTM_LVDS_EN_DISABLE (0 << 16) 295*4882a593Smuzhiyun #define CSTM_LVDS_EN_ENABLE (1 << 16) 296*4882a593Smuzhiyun #define CSTM_LINKACTB_SHIFT 15 297*4882a593Smuzhiyun #define CSTM_LINKACTB_DISABLE (0 << 15) 298*4882a593Smuzhiyun #define CSTM_LINKACTB_ENABLE (1 << 15) 299*4882a593Smuzhiyun #define CSTM_LINKACTA_SHIFT 14 300*4882a593Smuzhiyun #define CSTM_LINKACTA_DISABLE (0 << 14) 301*4882a593Smuzhiyun #define CSTM_LINKACTA_ENABLE (1 << 14) 302*4882a593Smuzhiyun #define LVDS 0x1c 303*4882a593Smuzhiyun #define LVDS_ROTDAT_SHIFT 28 304*4882a593Smuzhiyun #define LVDS_ROTDAT_DEFAULT_MASK (7 << 28) 305*4882a593Smuzhiyun #define LVDS_ROTDAT_RST (0 << 28) 306*4882a593Smuzhiyun #define LVDS_ROTCLK_SHIFT 24 307*4882a593Smuzhiyun #define LVDS_ROTCLK_DEFAULT_MASK (0xf << 24) 308*4882a593Smuzhiyun #define LVDS_ROTCLK_RST (0 << 24) 309*4882a593Smuzhiyun #define LVDS_PLLDIV_SHIFT 21 310*4882a593Smuzhiyun #define LVDS_PLLDIV_DEFAULT_MASK (1 << 21) 311*4882a593Smuzhiyun #define LVDS_PLLDIV_BY_7 (0 << 21) 312*4882a593Smuzhiyun #define LVDS_BALANCED_SHIFT 19 313*4882a593Smuzhiyun #define LVDS_BALANCED_DEFAULT_MASK (1 << 19) 314*4882a593Smuzhiyun #define LVDS_BALANCED_DISABLE (0 << 19) 315*4882a593Smuzhiyun #define LVDS_BALANCED_ENABLE (1 << 19) 316*4882a593Smuzhiyun #define LVDS_NEW_MODE_SHIFT 18 317*4882a593Smuzhiyun #define LVDS_NEW_MODE_DEFAULT_MASK (1 << 18) 318*4882a593Smuzhiyun #define LVDS_NEW_MODE_DISABLE (0 << 18) 319*4882a593Smuzhiyun #define LVDS_NEW_MODE_ENABLE (1 << 18) 320*4882a593Smuzhiyun #define LVDS_DUP_SYNC_SHIFT 17 321*4882a593Smuzhiyun #define LVDS_DUP_SYNC_DEFAULT_MASK (1 << 17) 322*4882a593Smuzhiyun #define LVDS_DUP_SYNC_DISABLE (0 << 17) 323*4882a593Smuzhiyun #define LVDS_DUP_SYNC_ENABLE (1 << 17) 324*4882a593Smuzhiyun #define LVDS_LVDS_EN_SHIFT 16 325*4882a593Smuzhiyun #define LVDS_LVDS_EN_DEFAULT_MASK (1 << 16) 326*4882a593Smuzhiyun #define LVDS_LVDS_EN_ENABLE (1 << 16) 327*4882a593Smuzhiyun #define LVDS_LINKACTB_SHIFT 15 328*4882a593Smuzhiyun #define LVDS_LINKACTB_DEFAULT_MASK (1 << 15) 329*4882a593Smuzhiyun #define LVDS_LINKACTB_DISABLE (0 << 15) 330*4882a593Smuzhiyun #define LVDS_LINKACTB_ENABLE (1 << 15) 331*4882a593Smuzhiyun #define LVDS_LINKACTA_SHIFT 14 332*4882a593Smuzhiyun #define LVDS_LINKACTA_DEFAULT_MASK (1 << 14) 333*4882a593Smuzhiyun #define LVDS_LINKACTA_ENABLE (1 << 14) 334*4882a593Smuzhiyun #define LVDS_MODE_SHIFT 12 335*4882a593Smuzhiyun #define LVDS_MODE_DEFAULT_MASK (3 << 12) 336*4882a593Smuzhiyun #define LVDS_MODE_LVDS (0 << 12) 337*4882a593Smuzhiyun #define LVDS_UPPER_SHIFT 11 338*4882a593Smuzhiyun #define LVDS_UPPER_DEFAULT_MASK (1 << 11) 339*4882a593Smuzhiyun #define LVDS_UPPER_FALSE (0 << 11) 340*4882a593Smuzhiyun #define LVDS_UPPER_TRUE (1 << 11) 341*4882a593Smuzhiyun #define LVDS_PD_TXCB_SHIFT 9 342*4882a593Smuzhiyun #define LVDS_PD_TXCB_DEFAULT_MASK (1 << 9) 343*4882a593Smuzhiyun #define LVDS_PD_TXCB_ENABLE (0 << 9) 344*4882a593Smuzhiyun #define LVDS_PD_TXCB_DISABLE (1 << 9) 345*4882a593Smuzhiyun #define LVDS_PD_TXCA_SHIFT 8 346*4882a593Smuzhiyun #define LVDS_PD_TXCA_DEFAULT_MASK (1 << 8) 347*4882a593Smuzhiyun #define LVDS_PD_TXCA_ENABLE (0 << 8) 348*4882a593Smuzhiyun #define LVDS_PD_TXDB_3_SHIFT 7 349*4882a593Smuzhiyun #define LVDS_PD_TXDB_3_DEFAULT_MASK (1 << 7) 350*4882a593Smuzhiyun #define LVDS_PD_TXDB_3_ENABLE (0 << 7) 351*4882a593Smuzhiyun #define LVDS_PD_TXDB_3_DISABLE (1 << 7) 352*4882a593Smuzhiyun #define LVDS_PD_TXDB_2_SHIFT 6 353*4882a593Smuzhiyun #define LVDS_PD_TXDB_2_DEFAULT_MASK (1 << 6) 354*4882a593Smuzhiyun #define LVDS_PD_TXDB_2_ENABLE (0 << 6) 355*4882a593Smuzhiyun #define LVDS_PD_TXDB_2_DISABLE (1 << 6) 356*4882a593Smuzhiyun #define LVDS_PD_TXDB_1_SHIFT 5 357*4882a593Smuzhiyun #define LVDS_PD_TXDB_1_DEFAULT_MASK (1 << 5) 358*4882a593Smuzhiyun #define LVDS_PD_TXDB_1_ENABLE (0 << 5) 359*4882a593Smuzhiyun #define LVDS_PD_TXDB_1_DISABLE (1 << 5) 360*4882a593Smuzhiyun #define LVDS_PD_TXDB_0_SHIFT 4 361*4882a593Smuzhiyun #define LVDS_PD_TXDB_0_DEFAULT_MASK (1 << 4) 362*4882a593Smuzhiyun #define LVDS_PD_TXDB_0_ENABLE (0 << 4) 363*4882a593Smuzhiyun #define LVDS_PD_TXDB_0_DISABLE (1 << 4) 364*4882a593Smuzhiyun #define LVDS_PD_TXDA_3_SHIFT 3 365*4882a593Smuzhiyun #define LVDS_PD_TXDA_3_DEFAULT_MASK (1 << 3) 366*4882a593Smuzhiyun #define LVDS_PD_TXDA_3_ENABLE (0 << 3) 367*4882a593Smuzhiyun #define LVDS_PD_TXDA_3_DISABLE (1 << 3) 368*4882a593Smuzhiyun #define LVDS_PD_TXDA_2_SHIFT 2 369*4882a593Smuzhiyun #define LVDS_PD_TXDA_2_DEFAULT_MASK (1 << 2) 370*4882a593Smuzhiyun #define LVDS_PD_TXDA_2_ENABLE (0 << 2) 371*4882a593Smuzhiyun #define LVDS_PD_TXDA_1_SHIFT 1 372*4882a593Smuzhiyun #define LVDS_PD_TXDA_1_DEFAULT_MASK (1 << 1) 373*4882a593Smuzhiyun #define LVDS_PD_TXDA_1_ENABLE (0 << 1) 374*4882a593Smuzhiyun #define LVDS_PD_TXDA_0_SHIFT 0 375*4882a593Smuzhiyun #define LVDS_PD_TXDA_0_DEFAULT_MASK 0x1 376*4882a593Smuzhiyun #define LVDS_PD_TXDA_0_ENABLE 0 377*4882a593Smuzhiyun #define CRCA 0x1d 378*4882a593Smuzhiyun #define CRCA_VALID_FALSE 0 379*4882a593Smuzhiyun #define CRCA_VALID_TRUE 1 380*4882a593Smuzhiyun #define CRCA_VALID_RST 1 381*4882a593Smuzhiyun #define CRCB 0x1e 382*4882a593Smuzhiyun #define CRCB_CRC_DEFAULT_MASK 0xffffffff 383*4882a593Smuzhiyun #define SEQ_CTL 0x20 384*4882a593Smuzhiyun #define SEQ_CTL_SWITCH_SHIFT 30 385*4882a593Smuzhiyun #define SEQ_CTL_SWITCH_MASK (1 << 30) 386*4882a593Smuzhiyun #define SEQ_CTL_SWITCH_WAIT (0 << 30) 387*4882a593Smuzhiyun #define SEQ_CTL_SWITCH_FORCE (1 << 30) 388*4882a593Smuzhiyun #define SEQ_CTL_STATUS_SHIFT 28 389*4882a593Smuzhiyun #define SEQ_CTL_STATUS_MASK (1 << 28) 390*4882a593Smuzhiyun #define SEQ_CTL_STATUS_STOPPED (0 << 28) 391*4882a593Smuzhiyun #define SEQ_CTL_STATUS_RUNNING (1 << 28) 392*4882a593Smuzhiyun #define SEQ_CTL_PC_SHIFT 16 393*4882a593Smuzhiyun #define SEQ_CTL_PC_MASK (0xf << 16) 394*4882a593Smuzhiyun #define SEQ_CTL_PD_PC_ALT_SHIFT 12 395*4882a593Smuzhiyun #define SEQ_CTL_PD_PC_ALT_MASK (0xf << 12) 396*4882a593Smuzhiyun #define SEQ_CTL_PD_PC_SHIFT 8 397*4882a593Smuzhiyun #define SEQ_CTL_PD_PC_MASK (0xf << 8) 398*4882a593Smuzhiyun #define SEQ_CTL_PU_PC_ALT_SHIFT 4 399*4882a593Smuzhiyun #define SEQ_CTL_PU_PC_ALT_MASK (0xf << 4) 400*4882a593Smuzhiyun #define SEQ_CTL_PU_PC_SHIFT 0 401*4882a593Smuzhiyun #define SEQ_CTL_PU_PC_MASK 0xf 402*4882a593Smuzhiyun #define LANE_SEQ_CTL 0x21 403*4882a593Smuzhiyun #define LANE_SEQ_CTL_SETTING_NEW_SHIFT 31 404*4882a593Smuzhiyun #define LANE_SEQ_CTL_SETTING_MASK (1 << 31) 405*4882a593Smuzhiyun #define LANE_SEQ_CTL_SETTING_NEW_DONE (0 << 31) 406*4882a593Smuzhiyun #define LANE_SEQ_CTL_SETTING_NEW_PENDING (1 << 31) 407*4882a593Smuzhiyun #define LANE_SEQ_CTL_SETTING_NEW_TRIGGER (1 << 31) 408*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQ_STATE_SHIFT 28 409*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQ_STATE_IDLE (0 << 28) 410*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQ_STATE_BUSY (1 << 28) 411*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQUENCE_SHIFT 20 412*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQUENCE_UP (0 << 20) 413*4882a593Smuzhiyun #define LANE_SEQ_CTL_SEQUENCE_DOWN (1 << 20) 414*4882a593Smuzhiyun #define LANE_SEQ_CTL_NEW_POWER_STATE_SHIFT 16 415*4882a593Smuzhiyun #define LANE_SEQ_CTL_NEW_POWER_STATE_PU (0 << 16) 416*4882a593Smuzhiyun #define LANE_SEQ_CTL_NEW_POWER_STATE_PD (1 << 16) 417*4882a593Smuzhiyun #define LANE_SEQ_CTL_DELAY_SHIFT 12 418*4882a593Smuzhiyun #define LANE_SEQ_CTL_DELAY_DEFAULT_MASK (0xf << 12) 419*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE9_STATE_SHIFT 9 420*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE9_STATE_POWERUP (0 << 9) 421*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE9_STATE_POWERDOWN (1 << 9) 422*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE8_STATE_SHIFT 8 423*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE8_STATE_POWERUP (0 << 8) 424*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE8_STATE_POWERDOWN (1 << 8) 425*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE7_STATE_SHIFT 7 426*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE7_STATE_POWERUP (0 << 7) 427*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE7_STATE_POWERDOWN (1 << 7) 428*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE6_STATE_SHIFT 6 429*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE6_STATE_POWERUP (0 << 6) 430*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE6_STATE_POWERDOWN (1 << 6) 431*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE5_STATE_SHIFT 5 432*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE5_STATE_POWERUP (0 << 5) 433*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE5_STATE_POWERDOWN (1 << 5) 434*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE4_STATE_SHIFT 4 435*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE4_STATE_POWERUP (0 << 4) 436*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE4_STATE_POWERDOWN (1 << 4) 437*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE3_STATE_SHIFT 3 438*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE3_STATE_POWERUP (0 << 3) 439*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE3_STATE_POWERDOWN (1 << 3) 440*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE2_STATE_SHIFT 2 441*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE2_STATE_POWERUP (0 << 2) 442*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE2_STATE_POWERDOWN (1 << 2) 443*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE1_STATE_SHIFT 1 444*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE1_STATE_POWERUP (0 << 1) 445*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE1_STATE_POWERDOWN (1 << 1) 446*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE0_STATE_SHIFT 0 447*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE0_STATE_POWERUP 0 448*4882a593Smuzhiyun #define LANE_SEQ_CTL_LANE0_STATE_POWERDOWN 1 449*4882a593Smuzhiyun #define SEQ_INST(i) (0x22 + i) 450*4882a593Smuzhiyun #define SEQ_INST_PLL_PULLDOWN_SHIFT 31 451*4882a593Smuzhiyun #define SEQ_INST_PLL_PULLDOWN_DISABLE (0 << 31) 452*4882a593Smuzhiyun #define SEQ_INST_PLL_PULLDOWN_ENABLE (1 << 31) 453*4882a593Smuzhiyun #define SEQ_INST_POWERDOWN_MACRO_SHIFT 30 454*4882a593Smuzhiyun #define SEQ_INST_POWERDOWN_MACRO_NORMAL (0 << 30) 455*4882a593Smuzhiyun #define SEQ_INST_POWERDOWN_MACRO_POWERDOWN (1 << 30) 456*4882a593Smuzhiyun #define SEQ_INST_ASSERT_PLL_RESET_SHIFT 29 457*4882a593Smuzhiyun #define SEQ_INST_ASSERT_PLL_RESET_NORMAL (0 << 29) 458*4882a593Smuzhiyun #define SEQ_INST_ASSERT_PLL_RESET_RST (1 << 29) 459*4882a593Smuzhiyun #define SEQ_INST_BLANK_V_SHIFT 28 460*4882a593Smuzhiyun #define SEQ_INST_BLANK_V_NORMAL (0 << 28) 461*4882a593Smuzhiyun #define SEQ_INST_BLANK_V_INACTIVE (1 << 28) 462*4882a593Smuzhiyun #define SEQ_INST_BLANK_H_SHIFT 27 463*4882a593Smuzhiyun #define SEQ_INST_BLANK_H_NORMAL (0 << 27) 464*4882a593Smuzhiyun #define SEQ_INST_BLANK_H_INACTIVE (1 << 27) 465*4882a593Smuzhiyun #define SEQ_INST_BLANK_DE_SHIFT 26 466*4882a593Smuzhiyun #define SEQ_INST_BLANK_DE_NORMAL (0 << 26) 467*4882a593Smuzhiyun #define SEQ_INST_BLANK_DE_INACTIVE (1 << 26) 468*4882a593Smuzhiyun #define SEQ_INST_BLACK_DATA_SHIFT 25 469*4882a593Smuzhiyun #define SEQ_INST_BLACK_DATA_NORMAL (0 << 25) 470*4882a593Smuzhiyun #define SEQ_INST_BLACK_DATA_BLACK (1 << 25) 471*4882a593Smuzhiyun #define SEQ_INST_TRISTATE_IOS_SHIFT 24 472*4882a593Smuzhiyun #define SEQ_INST_TRISTATE_IOS_ENABLE_PINS (0 << 24) 473*4882a593Smuzhiyun #define SEQ_INST_TRISTATE_IOS_TRISTATE (1 << 24) 474*4882a593Smuzhiyun #define SEQ_INST_DRIVE_PWM_OUT_LO_SHIFT 23 475*4882a593Smuzhiyun #define SEQ_INST_DRIVE_PWM_OUT_LO_FALSE (0 << 23) 476*4882a593Smuzhiyun #define SEQ_INST_DRIVE_PWM_OUT_LO_TRUE (1 << 23) 477*4882a593Smuzhiyun #define SEQ_INST_PIN_B_SHIFT 22 478*4882a593Smuzhiyun #define SEQ_INST_PIN_B_LOW (0 << 22) 479*4882a593Smuzhiyun #define SEQ_INST_PIN_B_HIGH (1 << 22) 480*4882a593Smuzhiyun #define SEQ_INST_PIN_A_SHIFT 21 481*4882a593Smuzhiyun #define SEQ_INST_PIN_A_LOW (0 << 21) 482*4882a593Smuzhiyun #define SEQ_INST_PIN_A_HIGH (1 << 21) 483*4882a593Smuzhiyun #define SEQ_INST_SEQUENCE_SHIFT 19 484*4882a593Smuzhiyun #define SEQ_INST_SEQUENCE_UP (0 << 19) 485*4882a593Smuzhiyun #define SEQ_INST_SEQUENCE_DOWN (1 << 19) 486*4882a593Smuzhiyun #define SEQ_INST_LANE_SEQ_SHIFT 18 487*4882a593Smuzhiyun #define SEQ_INST_LANE_SEQ_STOP (0 << 18) 488*4882a593Smuzhiyun #define SEQ_INST_LANE_SEQ_RUN (1 << 18) 489*4882a593Smuzhiyun #define SEQ_INST_PDPORT_SHIFT 17 490*4882a593Smuzhiyun #define SEQ_INST_PDPORT_NO (0 << 17) 491*4882a593Smuzhiyun #define SEQ_INST_PDPORT_YES (1 << 17) 492*4882a593Smuzhiyun #define SEQ_INST_PDPLL_SHIFT 16 493*4882a593Smuzhiyun #define SEQ_INST_PDPLL_NO (0 << 16) 494*4882a593Smuzhiyun #define SEQ_INST_PDPLL_YES (1 << 16) 495*4882a593Smuzhiyun #define SEQ_INST_HALT_SHIFT 15 496*4882a593Smuzhiyun #define SEQ_INST_HALT_FALSE (0 << 15) 497*4882a593Smuzhiyun #define SEQ_INST_HALT_TRUE (1 << 15) 498*4882a593Smuzhiyun #define SEQ_INST_WAIT_UNITS_SHIFT 12 499*4882a593Smuzhiyun #define SEQ_INST_WAIT_UNITS_DEFAULT_MASK (3 << 12) 500*4882a593Smuzhiyun #define SEQ_INST_WAIT_UNITS_US (0 << 12) 501*4882a593Smuzhiyun #define SEQ_INST_WAIT_UNITS_MS (1 << 12) 502*4882a593Smuzhiyun #define SEQ_INST_WAIT_UNITS_VSYNC (2 << 12) 503*4882a593Smuzhiyun #define SEQ_INST_WAIT_TIME_SHIFT 0 504*4882a593Smuzhiyun #define SEQ_INST_WAIT_TIME_DEFAULT_MASK 0x3ff 505*4882a593Smuzhiyun #define PWM_DIV 0x32 506*4882a593Smuzhiyun #define PWM_DIV_DIVIDE_DEFAULT_MASK 0xffffff 507*4882a593Smuzhiyun #define PWM_CTL 0x33 508*4882a593Smuzhiyun #define PWM_CTL_SETTING_NEW_SHIFT 31 509*4882a593Smuzhiyun #define PWM_CTL_SETTING_NEW_DONE (0 << 31) 510*4882a593Smuzhiyun #define PWM_CTL_SETTING_NEW_PENDING (1 << 31) 511*4882a593Smuzhiyun #define PWM_CTL_SETTING_NEW_TRIGGER (1 << 31) 512*4882a593Smuzhiyun #define PWM_CTL_CLKSEL_SHIFT 30 513*4882a593Smuzhiyun #define PWM_CTL_CLKSEL_PCLK (0 << 30) 514*4882a593Smuzhiyun #define PWM_CTL_CLKSEL_XTAL (1 << 30) 515*4882a593Smuzhiyun #define PWM_CTL_DUTY_CYCLE_SHIFT 0 516*4882a593Smuzhiyun #define PWM_CTL_DUTY_CYCLE_MASK 0xffffff 517*4882a593Smuzhiyun #define MSCHECK 0x49 518*4882a593Smuzhiyun #define MSCHECK_CTL_SHIFT 31 519*4882a593Smuzhiyun #define MSCHECK_CTL_CLEAR (0 << 31) 520*4882a593Smuzhiyun #define MSCHECK_CTL_RUN (1 << 31) 521*4882a593Smuzhiyun #define XBAR_CTRL 0x4a 522*4882a593Smuzhiyun #define DP_LINKCTL(i) (0x4c + (i)) 523*4882a593Smuzhiyun #define DP_LINKCTL_FORCE_IDLEPTTRN_SHIFT 31 524*4882a593Smuzhiyun #define DP_LINKCTL_FORCE_IDLEPTTRN_NO (0 << 31) 525*4882a593Smuzhiyun #define DP_LINKCTL_FORCE_IDLEPTTRN_YES (1 << 31) 526*4882a593Smuzhiyun #define DP_LINKCTL_COMPLIANCEPTTRN_SHIFT 28 527*4882a593Smuzhiyun #define DP_LINKCTL_COMPLIANCEPTTRN_NOPATTERN (0 << 28) 528*4882a593Smuzhiyun #define DP_LINKCTL_COMPLIANCEPTTRN_COLORSQARE (1 << 28) 529*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_SHIFT 16 530*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_MASK (0x1f << 16) 531*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_ZERO (0 << 16) 532*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_ONE (1 << 16) 533*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_TWO (3 << 16) 534*4882a593Smuzhiyun #define DP_LINKCTL_LANECOUNT_FOUR (15 << 16) 535*4882a593Smuzhiyun #define DP_LINKCTL_ENHANCEDFRAME_SHIFT 14 536*4882a593Smuzhiyun #define DP_LINKCTL_ENHANCEDFRAME_DISABLE (0 << 14) 537*4882a593Smuzhiyun #define DP_LINKCTL_ENHANCEDFRAME_ENABLE (1 << 14) 538*4882a593Smuzhiyun #define DP_LINKCTL_SYNCMODE_SHIFT 10 539*4882a593Smuzhiyun #define DP_LINKCTL_SYNCMODE_DISABLE (0 << 10) 540*4882a593Smuzhiyun #define DP_LINKCTL_SYNCMODE_ENABLE (1 << 10) 541*4882a593Smuzhiyun #define DP_LINKCTL_TUSIZE_SHIFT 2 542*4882a593Smuzhiyun #define DP_LINKCTL_TUSIZE_MASK (0x7f << 2) 543*4882a593Smuzhiyun #define DP_LINKCTL_ENABLE_SHIFT 0 544*4882a593Smuzhiyun #define DP_LINKCTL_ENABLE_NO 0 545*4882a593Smuzhiyun #define DP_LINKCTL_ENABLE_YES 1 546*4882a593Smuzhiyun #define DC(i) (0x4e + (i)) 547*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_SHIFT 24 548*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_MASK (0xff << 24) 549*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P0_LEVEL0 (17 << 24) 550*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P1_LEVEL0 (21 << 24) 551*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P2_LEVEL0 (26 << 24) 552*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P3_LEVEL0 (34 << 24) 553*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P0_LEVEL1 (26 << 24) 554*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P1_LEVEL1 (32 << 24) 555*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P2_LEVEL1 (39 << 24) 556*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P0_LEVEL2 (34 << 24) 557*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P1_LEVEL2 (43 << 24) 558*4882a593Smuzhiyun #define DC_LANE3_DP_LANE3_P0_LEVEL3 (51 << 24) 559*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_SHIFT 16 560*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_MASK (0xff << 16) 561*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P0_LEVEL0 (17 << 16) 562*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P1_LEVEL0 (21 << 16) 563*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P2_LEVEL0 (26 << 16) 564*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P3_LEVEL0 (34 << 16) 565*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P0_LEVEL1 (26 << 16) 566*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P1_LEVEL1 (32 << 16) 567*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P2_LEVEL1 (39 << 16) 568*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P0_LEVEL2 (34 << 16) 569*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P1_LEVEL2 (43 << 16) 570*4882a593Smuzhiyun #define DC_LANE2_DP_LANE0_P0_LEVEL3 (51 << 16) 571*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_SHIFT 8 572*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_MASK (0xff << 8) 573*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P0_LEVEL0 (17 << 8) 574*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P1_LEVEL0 (21 << 8) 575*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P2_LEVEL0 (26 << 8) 576*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P3_LEVEL0 (34 << 8) 577*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P0_LEVEL1 (26 << 8) 578*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P1_LEVEL1 (32 << 8) 579*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P2_LEVEL1 (39 << 8) 580*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P0_LEVEL2 (34 << 8) 581*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P1_LEVEL2 (43 << 8) 582*4882a593Smuzhiyun #define DC_LANE1_DP_LANE1_P0_LEVEL3 (51 << 8) 583*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_SHIFT 0 584*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_MASK 0xff 585*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P0_LEVEL0 17 586*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P1_LEVEL0 21 587*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P2_LEVEL0 26 588*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P3_LEVEL0 34 589*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P0_LEVEL1 26 590*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P1_LEVEL1 32 591*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P2_LEVEL1 39 592*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P0_LEVEL2 34 593*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P1_LEVEL2 43 594*4882a593Smuzhiyun #define DC_LANE0_DP_LANE2_P0_LEVEL3 51 595*4882a593Smuzhiyun #define LANE_DRIVE_CURRENT(i) (0x4e + (i)) 596*4882a593Smuzhiyun #define PR(i) (0x52 + (i)) 597*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_SHIFT 24 598*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_MASK (0xff << 24) 599*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D0_LEVEL0 (0 << 24) 600*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D1_LEVEL0 (0 << 24) 601*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D2_LEVEL0 (0 << 24) 602*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D3_LEVEL0 (0 << 24) 603*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D0_LEVEL1 (4 << 24) 604*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D1_LEVEL1 (6 << 24) 605*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D2_LEVEL1 (17 << 24) 606*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D0_LEVEL2 (8 << 24) 607*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D1_LEVEL2 (13 << 24) 608*4882a593Smuzhiyun #define PR_LANE3_DP_LANE3_D0_LEVEL3 (17 << 24) 609*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_SHIFT 16 610*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_MASK (0xff << 16) 611*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D0_LEVEL0 (0 << 16) 612*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D1_LEVEL0 (0 << 16) 613*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D2_LEVEL0 (0 << 16) 614*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D3_LEVEL0 (0 << 16) 615*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D0_LEVEL1 (4 << 16) 616*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D1_LEVEL1 (6 << 16) 617*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D2_LEVEL1 (17 << 16) 618*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D0_LEVEL2 (8 << 16) 619*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D1_LEVEL2 (13 << 16) 620*4882a593Smuzhiyun #define PR_LANE2_DP_LANE0_D0_LEVEL3 (17 << 16) 621*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_SHIFT 8 622*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_MASK (0xff >> 8) 623*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D0_LEVEL0 (0 >> 8) 624*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D1_LEVEL0 (0 >> 8) 625*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D2_LEVEL0 (0 >> 8) 626*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D3_LEVEL0 (0 >> 8) 627*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D0_LEVEL1 (4 >> 8) 628*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D1_LEVEL1 (6 >> 8) 629*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D2_LEVEL1 (17 >> 8) 630*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D0_LEVEL2 (8 >> 8) 631*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D1_LEVEL2 (13 >> 8) 632*4882a593Smuzhiyun #define PR_LANE1_DP_LANE1_D0_LEVEL3 (17 >> 8) 633*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_SHIFT 0 634*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_MASK 0xff 635*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D0_LEVEL0 0 636*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D1_LEVEL0 0 637*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D2_LEVEL0 0 638*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D3_LEVEL0 0 639*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D0_LEVEL1 4 640*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D1_LEVEL1 6 641*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D2_LEVEL1 17 642*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D0_LEVEL2 8 643*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D1_LEVEL2 13 644*4882a593Smuzhiyun #define PR_LANE0_DP_LANE2_D0_LEVEL3 17 645*4882a593Smuzhiyun #define LANE4_PREEMPHASIS(i) (0x54 + (i)) 646*4882a593Smuzhiyun #define POSTCURSOR(i) (0x56 + (i)) 647*4882a593Smuzhiyun #define DP_CONFIG(i) (0x58 + (i)) 648*4882a593Smuzhiyun #define DP_CONFIG_RD_RESET_VAL_SHIFT 31 649*4882a593Smuzhiyun #define DP_CONFIG_RD_RESET_VAL_POSITIVE (0 << 31) 650*4882a593Smuzhiyun #define DP_CONFIG_RD_RESET_VAL_NEGATIVE (1 << 31) 651*4882a593Smuzhiyun #define DP_CONFIG_IDLE_BEFORE_ATTACH_SHIFT 28 652*4882a593Smuzhiyun #define DP_CONFIG_IDLE_BEFORE_ATTACH_DISABLE (0 << 28) 653*4882a593Smuzhiyun #define DP_CONFIG_IDLE_BEFORE_ATTACH_ENABLE (1 << 28) 654*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_CNTL_SHIFT 26 655*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_CNTL_DISABLE (0 << 26) 656*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_CNTL_ENABLE (1 << 26) 657*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_POLARITY_SHIFT 24 658*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_POLARITY_NEGATIVE (0 << 24) 659*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_POLARITY_POSITIVE (1 << 24) 660*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_FRAC_SHIFT 16 661*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_FRAC_MASK (0xf << 16) 662*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_COUNT_SHIFT 8 663*4882a593Smuzhiyun #define DP_CONFIG_ACTIVESYM_COUNT_MASK (0x7f << 8) 664*4882a593Smuzhiyun #define DP_CONFIG_WATERMARK_SHIFT 0 665*4882a593Smuzhiyun #define DP_CONFIG_WATERMARK_MASK 0x3f 666*4882a593Smuzhiyun #define DP_MN(i) (0x5a + i) 667*4882a593Smuzhiyun #define DP_MN_M_MOD_SHIFT 30 668*4882a593Smuzhiyun #define DP_MN_M_MOD_DEFAULT_MASK (3 << 30) 669*4882a593Smuzhiyun #define DP_MN_M_MOD_NONE (0 << 30) 670*4882a593Smuzhiyun #define DP_MN_M_MOD_INC (1 << 30) 671*4882a593Smuzhiyun #define DP_MN_M_MOD_DEC (2 << 30) 672*4882a593Smuzhiyun #define DP_MN_M_DELTA_SHIFT 24 673*4882a593Smuzhiyun #define DP_MN_M_DELTA_DEFAULT_MASK (0xf << 24) 674*4882a593Smuzhiyun #define DP_MN_N_VAL_SHIFT 0 675*4882a593Smuzhiyun #define DP_MN_N_VAL_DEFAULT_MASK 0xffffff 676*4882a593Smuzhiyun #define DP_PADCTL(i) (0x5c + (i)) 677*4882a593Smuzhiyun #define DP_PADCTL_SPARE_SHIFT 25 678*4882a593Smuzhiyun #define DP_PADCTL_SPARE_DEFAULT_MASK (0x7f << 25) 679*4882a593Smuzhiyun #define DP_PADCTL_VCO_2X_SHIFT 24 680*4882a593Smuzhiyun #define DP_PADCTL_VCO_2X_DISABLE (0 << 24) 681*4882a593Smuzhiyun #define DP_PADCTL_VCO_2X_ENABLE (1 << 24) 682*4882a593Smuzhiyun #define DP_PADCTL_PAD_CAL_PD_SHIFT 23 683*4882a593Smuzhiyun #define DP_PADCTL_PAD_CAL_PD_POWERUP (0 << 23) 684*4882a593Smuzhiyun #define DP_PADCTL_PAD_CAL_PD_POWERDOWN (1 << 23) 685*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_SHIFT 22 686*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_DISABLE (0 << 22) 687*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_ENABLE (1 << 22) 688*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_MASK (1 << 22) 689*4882a593Smuzhiyun #define DP_PADCTL_REG_CTRL_SHIFT 20 690*4882a593Smuzhiyun #define DP_PADCTL_REG_CTRL_DEFAULT_MASK (3 << 20) 691*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_SHIFT 16 692*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_DEFAULT_MASK (0xf << 16) 693*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_TRISTATE (0 << 16) 694*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_TEST_MUX (1 << 16) 695*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_WEAK_PULLDOWN (2 << 16) 696*4882a593Smuzhiyun #define DP_PADCTL_VCMMODE_STRONG_PULLDOWN (4 << 16) 697*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_VALUE_SHIFT 8 698*4882a593Smuzhiyun #define DP_PADCTL_TX_PU_VALUE_DEFAULT_MASK (0xff << 8) 699*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_3_DP_TXD_3_SHIFT 7 700*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_3_DP_TXD_3_DISABLE (0 << 7) 701*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_3_DP_TXD_3_ENABLE (1 << 7) 702*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_2_DP_TXD_0_SHIFT 6 703*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_2_DP_TXD_0_DISABLE (0 << 6) 704*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_2_DP_TXD_0_ENABLE (1 << 6) 705*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_1_DP_TXD_1_SHIFT 5 706*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_1_DP_TXD_1_DISABLE (0 << 5) 707*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_1_DP_TXD_1_ENABLE (1 << 5) 708*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_0_DP_TXD_2_SHIFT 4 709*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_0_DP_TXD_2_DISABLE (0 << 4) 710*4882a593Smuzhiyun #define DP_PADCTL_COMODE_TXD_0_DP_TXD_2_ENABLE (1 << 4) 711*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_3_SHIFT 3 712*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_3_YES (0 << 3) 713*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_3_NO (1 << 3) 714*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_0_SHIFT 2 715*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_0_YES (0 << 2) 716*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_0_NO (1 << 2) 717*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_1_SHIFT 1 718*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_1_YES (0 << 1) 719*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_1_NO (1 << 1) 720*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_2_SHIFT 0 721*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_2_YES 0 722*4882a593Smuzhiyun #define DP_PADCTL_PD_TXD_2_NO 1 723*4882a593Smuzhiyun #define DP_DEBUG(i) (0x5e + i) 724*4882a593Smuzhiyun #define DP_SPARE(i) (0x60 + (i)) 725*4882a593Smuzhiyun #define DP_SPARE_REG_SHIFT 3 726*4882a593Smuzhiyun #define DP_SPARE_REG_DEFAULT_MASK (0x1fffffff << 3) 727*4882a593Smuzhiyun #define DP_SPARE_SOR_CLK_SEL_SHIFT 2 728*4882a593Smuzhiyun #define DP_SPARE_SOR_CLK_SEL_DEFAULT_MASK (1 << 2) 729*4882a593Smuzhiyun #define DP_SPARE_SOR_CLK_SEL_SAFE_SORCLK (0 << 2) 730*4882a593Smuzhiyun #define DP_SPARE_SOR_CLK_SEL_MACRO_SORCLK (1 << 2) 731*4882a593Smuzhiyun #define DP_SPARE_PANEL_SHIFT 1 732*4882a593Smuzhiyun #define DP_SPARE_PANEL_EXTERNAL (0 << 1) 733*4882a593Smuzhiyun #define DP_SPARE_PANEL_INTERNAL (1 << 1) 734*4882a593Smuzhiyun #define DP_SPARE_SEQ_ENABLE_SHIFT 0 735*4882a593Smuzhiyun #define DP_SPARE_SEQ_ENABLE_NO 0 736*4882a593Smuzhiyun #define DP_SPARE_SEQ_ENABLE_YES 1 737*4882a593Smuzhiyun #define DP_AUDIO_CTRL 0x62 738*4882a593Smuzhiyun #define DP_AUDIO_HBLANK_SYMBOLS 0x63 739*4882a593Smuzhiyun #define DP_AUDIO_HBLANK_SYMBOLS_MASK 0x1ffff 740*4882a593Smuzhiyun #define DP_AUDIO_HBLANK_SYMBOLS_VALUE_SHIFT 0 741*4882a593Smuzhiyun #define DP_AUDIO_VBLANK_SYMBOLS 0x64 742*4882a593Smuzhiyun #define DP_AUDIO_VBLANK_SYMBOLS_MASK 0x1ffff 743*4882a593Smuzhiyun #define DP_AUDIO_VBLANK_SYMBOLS_SHIFT 0 744*4882a593Smuzhiyun #define DP_GENERIC_INFOFRAME_HEADER 0x65 745*4882a593Smuzhiyun #define DP_GENERIC_INFOFRAME_SUBPACK(i) (0x66 + (i)) 746*4882a593Smuzhiyun #define DP_TPG 0x6d 747*4882a593Smuzhiyun #define DP_TPG_LANE3_CHANNELCODING_SHIFT 30 748*4882a593Smuzhiyun #define DP_TPG_LANE3_CHANNELCODING_DISABLE (0 << 30) 749*4882a593Smuzhiyun #define DP_TPG_LANE3_CHANNELCODING_ENABLE (1 << 30) 750*4882a593Smuzhiyun #define DP_TPG_LANE3_SCRAMBLEREN_SHIFT 28 751*4882a593Smuzhiyun #define DP_TPG_LANE3_SCRAMBLEREN_ENABLE_GALIOS (1 << 28) 752*4882a593Smuzhiyun #define DP_TPG_LANE3_SCRAMBLEREN_ENABLE_FIBONACCI (2 << 28) 753*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_SHIFT 24 754*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_DEFAULT_MASK (0xf << 24) 755*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_NOPATTERN (0 << 24) 756*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_TRAINING1 (1 << 24) 757*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_TRAINING2 (2 << 24) 758*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_TRAINING3 (3 << 24) 759*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_D102 (4 << 24) 760*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_SBLERRRATE (5 << 24) 761*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_PRBS7 (6 << 24) 762*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_CSTM (7 << 24) 763*4882a593Smuzhiyun #define DP_TPG_LANE3_PATTERN_HBR2_COMPLIANCE (8 << 24) 764*4882a593Smuzhiyun #define DP_TPG_LANE2_CHANNELCODING_SHIFT 22 765*4882a593Smuzhiyun #define DP_TPG_LANE2_CHANNELCODING_DISABLE (0 << 22) 766*4882a593Smuzhiyun #define DP_TPG_LANE2_CHANNELCODING_ENABLE (1 << 22) 767*4882a593Smuzhiyun #define DP_TPG_LANE2_SCRAMBLEREN_SHIFT 20 768*4882a593Smuzhiyun #define DP_TPG_LANE2_SCRAMBLEREN_DEFAULT_MASK (3 << 20) 769*4882a593Smuzhiyun #define DP_TPG_LANE2_SCRAMBLEREN_DISABLE (0 << 20) 770*4882a593Smuzhiyun #define DP_TPG_LANE2_SCRAMBLEREN_ENABLE_GALIOS (1 << 20) 771*4882a593Smuzhiyun #define DP_TPG_LANE2_SCRAMBLEREN_ENABLE_FIBONACCI (2 << 20) 772*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_SHIFT 16 773*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_DEFAULT_MASK (0xf << 16) 774*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_NOPATTERN (0 << 16) 775*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_TRAINING1 (1 << 16) 776*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_TRAINING2 (2 << 16) 777*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_TRAINING3 (3 << 16) 778*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_D102 (4 << 16) 779*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_SBLERRRATE (5 << 16) 780*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_PRBS7 (6 << 16) 781*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_CSTM (7 << 16) 782*4882a593Smuzhiyun #define DP_TPG_LANE2_PATTERN_HBR2_COMPLIANCE (8 << 16) 783*4882a593Smuzhiyun #define DP_TPG_LANE1_CHANNELCODING_SHIFT 14 784*4882a593Smuzhiyun #define DP_TPG_LANE1_CHANNELCODING_DISABLE (0 << 14) 785*4882a593Smuzhiyun #define DP_TPG_LANE1_CHANNELCODING_ENABLE (1 << 14) 786*4882a593Smuzhiyun #define DP_TPG_LANE1_SCRAMBLEREN_SHIFT 12 787*4882a593Smuzhiyun #define DP_TPG_LANE1_SCRAMBLEREN_DEFAULT_MASK (3 << 12) 788*4882a593Smuzhiyun #define DP_TPG_LANE1_SCRAMBLEREN_DISABLE (0 << 12) 789*4882a593Smuzhiyun #define DP_TPG_LANE1_SCRAMBLEREN_ENABLE_GALIOS (1 << 12) 790*4882a593Smuzhiyun #define DP_TPG_LANE1_SCRAMBLEREN_ENABLE_FIBONACCI (2 << 12) 791*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_SHIFT 8 792*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_DEFAULT_MASK (0xf << 8) 793*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_NOPATTERN (0 << 8) 794*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_TRAINING1 (1 << 8) 795*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_TRAINING2 (2 << 8) 796*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_TRAINING3 (3 << 8) 797*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_D102 (4 << 8) 798*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_SBLERRRATE (5 << 8) 799*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_PRBS7 (6 << 8) 800*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_CSTM (7 << 8) 801*4882a593Smuzhiyun #define DP_TPG_LANE1_PATTERN_HBR2_COMPLIANCE (8 << 8) 802*4882a593Smuzhiyun #define DP_TPG_LANE0_CHANNELCODING_SHIFT 6 803*4882a593Smuzhiyun #define DP_TPG_LANE0_CHANNELCODING_DISABLE (0 << 6) 804*4882a593Smuzhiyun #define DP_TPG_LANE0_CHANNELCODING_ENABLE (1 << 6) 805*4882a593Smuzhiyun #define DP_TPG_LANE0_SCRAMBLEREN_SHIFT 4 806*4882a593Smuzhiyun #define DP_TPG_LANE0_SCRAMBLEREN_DEFAULT_MASK (3 << 4) 807*4882a593Smuzhiyun #define DP_TPG_LANE0_SCRAMBLEREN_DISABLE (0 << 4) 808*4882a593Smuzhiyun #define DP_TPG_LANE0_SCRAMBLEREN_ENABLE_GALIOS (1 << 4) 809*4882a593Smuzhiyun #define DP_TPG_LANE0_SCRAMBLEREN_ENABLE_FIBONACCI (2 << 4) 810*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_SHIFT 0 811*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_DEFAULT_MASK 0xf 812*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_NOPATTERN 0 813*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_TRAINING1 1 814*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_TRAINING2 2 815*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_TRAINING3 3 816*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_D102 4 817*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_SBLERRRATE 5 818*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_PRBS7 6 819*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_CSTM 7 820*4882a593Smuzhiyun #define DP_TPG_LANE0_PATTERN_HBR2_COMPLIANCE 8 821*4882a593Smuzhiyun 822*4882a593Smuzhiyun enum { 823*4882a593Smuzhiyun training_pattern_disabled = 0, 824*4882a593Smuzhiyun training_pattern_1 = 1, 825*4882a593Smuzhiyun training_pattern_2 = 2, 826*4882a593Smuzhiyun training_pattern_3 = 3, 827*4882a593Smuzhiyun training_pattern_none = 0xff 828*4882a593Smuzhiyun }; 829*4882a593Smuzhiyun 830*4882a593Smuzhiyun enum tegra_dc_sor_protocol { 831*4882a593Smuzhiyun SOR_DP, 832*4882a593Smuzhiyun SOR_LVDS, 833*4882a593Smuzhiyun }; 834*4882a593Smuzhiyun 835*4882a593Smuzhiyun #define SOR_LINK_SPEED_G1_62 6 836*4882a593Smuzhiyun #define SOR_LINK_SPEED_G2_7 10 837*4882a593Smuzhiyun #define SOR_LINK_SPEED_G5_4 20 838*4882a593Smuzhiyun #define SOR_LINK_SPEED_LVDS 7 839*4882a593Smuzhiyun 840*4882a593Smuzhiyun struct tegra_dp_link_config { 841*4882a593Smuzhiyun int is_valid; 842*4882a593Smuzhiyun 843*4882a593Smuzhiyun /* Supported configuration */ 844*4882a593Smuzhiyun u8 max_link_bw; 845*4882a593Smuzhiyun u8 max_lane_count; 846*4882a593Smuzhiyun int downspread; 847*4882a593Smuzhiyun int support_enhanced_framing; 848*4882a593Smuzhiyun u32 bits_per_pixel; 849*4882a593Smuzhiyun int alt_scramber_reset_cap; /* true for eDP */ 850*4882a593Smuzhiyun int only_enhanced_framing; /* enhanced_frame_en ignored */ 851*4882a593Smuzhiyun int frame_in_ms; 852*4882a593Smuzhiyun 853*4882a593Smuzhiyun /* Actual configuration */ 854*4882a593Smuzhiyun u8 link_bw; 855*4882a593Smuzhiyun u8 lane_count; 856*4882a593Smuzhiyun int enhanced_framing; 857*4882a593Smuzhiyun int scramble_ena; 858*4882a593Smuzhiyun 859*4882a593Smuzhiyun u32 activepolarity; 860*4882a593Smuzhiyun u32 active_count; 861*4882a593Smuzhiyun u32 tu_size; 862*4882a593Smuzhiyun u32 active_frac; 863*4882a593Smuzhiyun u32 watermark; 864*4882a593Smuzhiyun 865*4882a593Smuzhiyun s32 hblank_sym; 866*4882a593Smuzhiyun s32 vblank_sym; 867*4882a593Smuzhiyun 868*4882a593Smuzhiyun /* Training data */ 869*4882a593Smuzhiyun u32 drive_current; 870*4882a593Smuzhiyun u32 preemphasis; 871*4882a593Smuzhiyun u32 postcursor; 872*4882a593Smuzhiyun u8 aux_rd_interval; 873*4882a593Smuzhiyun u8 tps3_supported; 874*4882a593Smuzhiyun }; 875*4882a593Smuzhiyun 876*4882a593Smuzhiyun #define TEGRA_SOR_TIMEOUT_MS 1000 877*4882a593Smuzhiyun #define TEGRA_SOR_ATTACH_TIMEOUT_MS 1000 878*4882a593Smuzhiyun 879*4882a593Smuzhiyun int tegra_dc_sor_enable_dp(struct udevice *sor, 880*4882a593Smuzhiyun const struct tegra_dp_link_config *link_cfg); 881*4882a593Smuzhiyun int tegra_dc_sor_set_power_state(struct udevice *sor, int pu_pd); 882*4882a593Smuzhiyun void tegra_dc_sor_set_dp_linkctl(struct udevice *dev, int ena, 883*4882a593Smuzhiyun u8 training_pattern, const struct tegra_dp_link_config *link_cfg); 884*4882a593Smuzhiyun void tegra_dc_sor_set_link_bandwidth(struct udevice *dev, u8 link_bw); 885*4882a593Smuzhiyun void tegra_dc_sor_set_lane_count(struct udevice *dev, u8 lane_count); 886*4882a593Smuzhiyun void tegra_dc_sor_set_panel_power(struct udevice *sor, 887*4882a593Smuzhiyun int power_up); 888*4882a593Smuzhiyun void tegra_dc_sor_set_internal_panel(struct udevice *dev, int is_int); 889*4882a593Smuzhiyun void tegra_dc_sor_read_link_config(struct udevice *dev, u8 *link_bw, 890*4882a593Smuzhiyun u8 *lane_count); 891*4882a593Smuzhiyun void tegra_dc_sor_set_lane_parm(struct udevice *dev, 892*4882a593Smuzhiyun const struct tegra_dp_link_config *link_cfg); 893*4882a593Smuzhiyun void tegra_dc_sor_power_down_unused_lanes(struct udevice *sor, 894*4882a593Smuzhiyun const struct tegra_dp_link_config *link_cfg); 895*4882a593Smuzhiyun int tegra_dc_sor_set_voltage_swing(struct udevice *sor, 896*4882a593Smuzhiyun const struct tegra_dp_link_config *link_cfg); 897*4882a593Smuzhiyun int tegra_sor_precharge_lanes(struct udevice *dev, 898*4882a593Smuzhiyun const struct tegra_dp_link_config *cfg); 899*4882a593Smuzhiyun void tegra_dp_disable_tx_pu(struct udevice *sor); 900*4882a593Smuzhiyun void tegra_dp_set_pe_vs_pc(struct udevice *dev, u32 mask, u32 pe_reg, 901*4882a593Smuzhiyun u32 vs_reg, u32 pc_reg, u8 pc_supported); 902*4882a593Smuzhiyun 903*4882a593Smuzhiyun int tegra_dc_sor_attach(struct udevice *dc_dev, struct udevice *sor, 904*4882a593Smuzhiyun const struct tegra_dp_link_config *link_cfg, 905*4882a593Smuzhiyun const struct display_timing *timing); 906*4882a593Smuzhiyun int tegra_dc_sor_detach(struct udevice *dc_dev, struct udevice *sor); 907*4882a593Smuzhiyun 908*4882a593Smuzhiyun void tegra_dc_sor_disable_win_short_raster(struct dc_ctlr *disp_ctrl, 909*4882a593Smuzhiyun int *dc_reg_ctx); 910*4882a593Smuzhiyun int tegra_dc_sor_general_act(struct dc_ctlr *disp_ctrl); 911*4882a593Smuzhiyun void tegra_dc_sor_restore_win_and_raster(struct dc_ctlr *disp_ctrl, 912*4882a593Smuzhiyun int *dc_reg_ctx); 913*4882a593Smuzhiyun 914*4882a593Smuzhiyun int tegra_dc_sor_init(struct udevice **sorp); 915*4882a593Smuzhiyun #endif 916