1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 3*4882a593Smuzhiyun * All Rights Reserved. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * SPDX-License-Identifier: BSD-3-Clause 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _I915_REG_H_ 9*4882a593Smuzhiyun #define _I915_REG_H_ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* Hotplug control (945+ only) */ 12*4882a593Smuzhiyun #define PORT_HOTPLUG_EN 0x61110 13*4882a593Smuzhiyun #define HDMIB_HOTPLUG_INT_EN (1 << 29) 14*4882a593Smuzhiyun #define DPB_HOTPLUG_INT_EN (1 << 29) 15*4882a593Smuzhiyun #define HDMIC_HOTPLUG_INT_EN (1 << 28) 16*4882a593Smuzhiyun #define DPC_HOTPLUG_INT_EN (1 << 28) 17*4882a593Smuzhiyun #define HDMID_HOTPLUG_INT_EN (1 << 27) 18*4882a593Smuzhiyun #define DPD_HOTPLUG_INT_EN (1 << 27) 19*4882a593Smuzhiyun #define SDVOB_HOTPLUG_INT_EN (1 << 26) 20*4882a593Smuzhiyun #define SDVOC_HOTPLUG_INT_EN (1 << 25) 21*4882a593Smuzhiyun #define TV_HOTPLUG_INT_EN (1 << 18) 22*4882a593Smuzhiyun #define CRT_HOTPLUG_INT_EN (1 << 9) 23*4882a593Smuzhiyun #define CRT_HOTPLUG_FORCE_DETECT (1 << 3) 24*4882a593Smuzhiyun #define CRT_HOTPLUG_ACTIVATION_PERIOD_32 (0 << 8) 25*4882a593Smuzhiyun /* must use period 64 on GM45 according to docs */ 26*4882a593Smuzhiyun #define CRT_HOTPLUG_ACTIVATION_PERIOD_64 (1 << 8) 27*4882a593Smuzhiyun #define CRT_HOTPLUG_DAC_ON_TIME_2M (0 << 7) 28*4882a593Smuzhiyun #define CRT_HOTPLUG_DAC_ON_TIME_4M (1 << 7) 29*4882a593Smuzhiyun #define CRT_HOTPLUG_VOLTAGE_COMPARE_40 (0 << 5) 30*4882a593Smuzhiyun #define CRT_HOTPLUG_VOLTAGE_COMPARE_50 (1 << 5) 31*4882a593Smuzhiyun #define CRT_HOTPLUG_VOLTAGE_COMPARE_60 (2 << 5) 32*4882a593Smuzhiyun #define CRT_HOTPLUG_VOLTAGE_COMPARE_70 (3 << 5) 33*4882a593Smuzhiyun #define CRT_HOTPLUG_VOLTAGE_COMPARE_MASK (3 << 5) 34*4882a593Smuzhiyun #define CRT_HOTPLUG_DETECT_DELAY_1G (0 << 4) 35*4882a593Smuzhiyun #define CRT_HOTPLUG_DETECT_DELAY_2G (1 << 4) 36*4882a593Smuzhiyun #define CRT_HOTPLUG_DETECT_VOLTAGE_325MV (0 << 2) 37*4882a593Smuzhiyun #define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* Backlight control */ 40*4882a593Smuzhiyun #define BLC_PWM_CTL2 0x61250 /* 965+ only */ 41*4882a593Smuzhiyun #define BLM_PWM_ENABLE (1 << 31) 42*4882a593Smuzhiyun #define BLM_COMBINATION_MODE (1 << 30) /* gen4 only */ 43*4882a593Smuzhiyun #define BLM_PIPE_SELECT (1 << 29) 44*4882a593Smuzhiyun #define BLM_PIPE_SELECT_IVB (3 << 29) 45*4882a593Smuzhiyun #define BLM_PIPE_A (0 << 29) 46*4882a593Smuzhiyun #define BLM_PIPE_B (1 << 29) 47*4882a593Smuzhiyun #define BLM_PIPE_C (2 << 29) /* ivb + */ 48*4882a593Smuzhiyun #define BLM_PIPE(pipe) ((pipe) << 29) 49*4882a593Smuzhiyun #define BLM_POLARITY_I965 (1 << 28) /* gen4 only */ 50*4882a593Smuzhiyun #define BLM_PHASE_IN_INTERUPT_STATUS (1 << 26) 51*4882a593Smuzhiyun #define BLM_PHASE_IN_ENABLE (1 << 25) 52*4882a593Smuzhiyun #define BLM_PHASE_IN_INTERUPT_ENABL (1 << 24) 53*4882a593Smuzhiyun #define BLM_PHASE_IN_TIME_BASE_SHIFT (16) 54*4882a593Smuzhiyun #define BLM_PHASE_IN_TIME_BASE_MASK (0xff << 16) 55*4882a593Smuzhiyun #define BLM_PHASE_IN_COUNT_SHIFT (8) 56*4882a593Smuzhiyun #define BLM_PHASE_IN_COUNT_MASK (0xff << 8) 57*4882a593Smuzhiyun #define BLM_PHASE_IN_INCR_SHIFT (0) 58*4882a593Smuzhiyun #define BLM_PHASE_IN_INCR_MASK (0xff << 0) 59*4882a593Smuzhiyun #define BLC_PWM_CTL 0x61254 60*4882a593Smuzhiyun /* 61*4882a593Smuzhiyun * This is the most significant 15 bits of the number of backlight cycles in a 62*4882a593Smuzhiyun * complete cycle of the modulated backlight control. 63*4882a593Smuzhiyun * 64*4882a593Smuzhiyun * The actual value is this field multiplied by two. 65*4882a593Smuzhiyun */ 66*4882a593Smuzhiyun #define BACKLIGHT_MODULATION_FREQ_SHIFT (17) 67*4882a593Smuzhiyun #define BACKLIGHT_MODULATION_FREQ_MASK (0x7fff << 17) 68*4882a593Smuzhiyun #define BLM_LEGACY_MODE (1 << 16) /* gen2 only */ 69*4882a593Smuzhiyun /* 70*4882a593Smuzhiyun * This is the number of cycles out of the backlight modulation cycle for which 71*4882a593Smuzhiyun * the backlight is on. 72*4882a593Smuzhiyun * 73*4882a593Smuzhiyun * This field must be no greater than the number of cycles in the complete 74*4882a593Smuzhiyun * backlight modulation cycle. 75*4882a593Smuzhiyun */ 76*4882a593Smuzhiyun #define BACKLIGHT_DUTY_CYCLE_SHIFT (0) 77*4882a593Smuzhiyun #define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) 78*4882a593Smuzhiyun #define BACKLIGHT_DUTY_CYCLE_MASK_PNV (0xfffe) 79*4882a593Smuzhiyun #define BLM_POLARITY_PNV (1 << 0) /* pnv only */ 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun #define BLC_HIST_CTL 0x61260 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* 84*4882a593Smuzhiyun * New registers for PCH-split platforms. Safe where new bits show up, the 85*4882a593Smuzhiyun * register layout machtes with gen4 BLC_PWM_CTL[12] 86*4882a593Smuzhiyun */ 87*4882a593Smuzhiyun #define BLC_PWM_CPU_CTL2 0x48250 88*4882a593Smuzhiyun #define BLC_PWM2_ENABLE (1<<31) 89*4882a593Smuzhiyun #define BLC_PWM_CPU_CTL 0x48254 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define BLM_HIST_CTL 0x48260 92*4882a593Smuzhiyun #define ENH_HIST_ENABLE (1<<31) 93*4882a593Smuzhiyun #define ENH_MODIF_TBL_ENABLE (1<<30) 94*4882a593Smuzhiyun #define ENH_PIPE_A_SELECT (0<<29) 95*4882a593Smuzhiyun #define ENH_PIPE_B_SELECT (1<<29) 96*4882a593Smuzhiyun #define ENH_PIPE(pipe) _PIPE(pipe, ENH_PIPE_A_SELECT, ENH_PIPE_B_SELECT) 97*4882a593Smuzhiyun #define HIST_MODE_YUV (0<<24) 98*4882a593Smuzhiyun #define HIST_MODE_HSV (1<<24) 99*4882a593Smuzhiyun #define ENH_MODE_DIRECT (0<<13) 100*4882a593Smuzhiyun #define ENH_MODE_ADDITIVE (1<<13) 101*4882a593Smuzhiyun #define ENH_MODE_MULTIPLICATIVE (2<<13) 102*4882a593Smuzhiyun #define BIN_REGISTER_SET (1<<11) 103*4882a593Smuzhiyun #define ENH_NUM_BINS 32 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #define BLM_HIST_ENH 0x48264 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun #define BLM_HIST_GUARD_BAND 0x48268 108*4882a593Smuzhiyun #define BLM_HIST_INTR_ENABLE (1<<31) 109*4882a593Smuzhiyun #define BLM_HIST_EVENT_STATUS (1<<30) 110*4882a593Smuzhiyun #define BLM_HIST_INTR_DELAY_MASK (0xFF<<22) 111*4882a593Smuzhiyun #define BLM_HIST_INTR_DELAY_SHIFT 22 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun /* 114*4882a593Smuzhiyun * PCH CTL1 is totally different, all but the below bits are reserved. CTL2 is 115*4882a593Smuzhiyun * like the normal CTL from gen4 and earlier. Hooray for confusing naming. 116*4882a593Smuzhiyun */ 117*4882a593Smuzhiyun #define BLC_PWM_PCH_CTL1 0xc8250 118*4882a593Smuzhiyun #define BLM_PCH_PWM_ENABLE (1 << 31) 119*4882a593Smuzhiyun #define BLM_PCH_OVERRIDE_ENABLE (1 << 30) 120*4882a593Smuzhiyun #define BLM_PCH_POLARITY (1 << 29) 121*4882a593Smuzhiyun #define BLC_PWM_PCH_CTL2 0xc8254 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun /* digital port hotplug */ 124*4882a593Smuzhiyun #define PCH_PORT_HOTPLUG 0xc4030 /* SHOTPLUG_CTL */ 125*4882a593Smuzhiyun #define PORTD_HOTPLUG_ENABLE (1 << 20) 126*4882a593Smuzhiyun #define PORTD_PULSE_DURATION_2ms (0) 127*4882a593Smuzhiyun #define PORTD_PULSE_DURATION_4_5ms (1 << 18) 128*4882a593Smuzhiyun #define PORTD_PULSE_DURATION_6ms (2 << 18) 129*4882a593Smuzhiyun #define PORTD_PULSE_DURATION_100ms (3 << 18) 130*4882a593Smuzhiyun #define PORTD_PULSE_DURATION_MASK (3 << 18) 131*4882a593Smuzhiyun #define PORTD_HOTPLUG_NO_DETECT (0) 132*4882a593Smuzhiyun #define PORTD_HOTPLUG_SHORT_DETECT (1 << 16) 133*4882a593Smuzhiyun #define PORTD_HOTPLUG_LONG_DETECT (1 << 17) 134*4882a593Smuzhiyun #define PORTC_HOTPLUG_ENABLE (1 << 12) 135*4882a593Smuzhiyun #define PORTC_PULSE_DURATION_2ms (0) 136*4882a593Smuzhiyun #define PORTC_PULSE_DURATION_4_5ms (1 << 10) 137*4882a593Smuzhiyun #define PORTC_PULSE_DURATION_6ms (2 << 10) 138*4882a593Smuzhiyun #define PORTC_PULSE_DURATION_100ms (3 << 10) 139*4882a593Smuzhiyun #define PORTC_PULSE_DURATION_MASK (3 << 10) 140*4882a593Smuzhiyun #define PORTC_HOTPLUG_NO_DETECT (0) 141*4882a593Smuzhiyun #define PORTC_HOTPLUG_SHORT_DETECT (1 << 8) 142*4882a593Smuzhiyun #define PORTC_HOTPLUG_LONG_DETECT (1 << 9) 143*4882a593Smuzhiyun #define PORTB_HOTPLUG_ENABLE (1 << 4) 144*4882a593Smuzhiyun #define PORTB_PULSE_DURATION_2ms (0) 145*4882a593Smuzhiyun #define PORTB_PULSE_DURATION_4_5ms (1 << 2) 146*4882a593Smuzhiyun #define PORTB_PULSE_DURATION_6ms (2 << 2) 147*4882a593Smuzhiyun #define PORTB_PULSE_DURATION_100ms (3 << 2) 148*4882a593Smuzhiyun #define PORTB_PULSE_DURATION_MASK (3 << 2) 149*4882a593Smuzhiyun #define PORTB_HOTPLUG_NO_DETECT (0) 150*4882a593Smuzhiyun #define PORTB_HOTPLUG_SHORT_DETECT (1 << 0) 151*4882a593Smuzhiyun #define PORTB_HOTPLUG_LONG_DETECT (1 << 1) 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun #define PCH_GPIOA 0xc5010 154*4882a593Smuzhiyun #define PCH_GPIOB 0xc5014 155*4882a593Smuzhiyun #define PCH_GPIOC 0xc5018 156*4882a593Smuzhiyun #define PCH_GPIOD 0xc501c 157*4882a593Smuzhiyun #define PCH_GPIOE 0xc5020 158*4882a593Smuzhiyun #define PCH_GPIOF 0xc5024 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #define PCH_GMBUS0 0xc5100 161*4882a593Smuzhiyun #define PCH_GMBUS1 0xc5104 162*4882a593Smuzhiyun #define PCH_GMBUS2 0xc5108 163*4882a593Smuzhiyun #define PCH_GMBUS3 0xc510c 164*4882a593Smuzhiyun #define PCH_GMBUS4 0xc5110 165*4882a593Smuzhiyun #define PCH_GMBUS5 0xc5120 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun #define _PCH_DPLL_A 0xc6014 168*4882a593Smuzhiyun #define _PCH_DPLL_B 0xc6018 169*4882a593Smuzhiyun #define _PCH_DPLL(pll) (pll == 0 ? _PCH_DPLL_A : _PCH_DPLL_B) 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun #define _PCH_FPA0 0xc6040 172*4882a593Smuzhiyun #define FP_CB_TUNE (0x3<<22) 173*4882a593Smuzhiyun #define _PCH_FPA1 0xc6044 174*4882a593Smuzhiyun #define _PCH_FPB0 0xc6048 175*4882a593Smuzhiyun #define _PCH_FPB1 0xc604c 176*4882a593Smuzhiyun #define _PCH_FP0(pll) (pll == 0 ? _PCH_FPA0 : _PCH_FPB0) 177*4882a593Smuzhiyun #define _PCH_FP1(pll) (pll == 0 ? _PCH_FPA1 : _PCH_FPB1) 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #define PCH_DPLL_TEST 0xc606c 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #define PCH_DREF_CONTROL 0xC6200 182*4882a593Smuzhiyun #define DREF_CONTROL_MASK 0x7fc3 183*4882a593Smuzhiyun #define DREF_CPU_SOURCE_OUTPUT_DISABLE (0<<13) 184*4882a593Smuzhiyun #define DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD (2<<13) 185*4882a593Smuzhiyun #define DREF_CPU_SOURCE_OUTPUT_NONSPREAD (3<<13) 186*4882a593Smuzhiyun #define DREF_CPU_SOURCE_OUTPUT_MASK (3<<13) 187*4882a593Smuzhiyun #define DREF_SSC_SOURCE_DISABLE (0<<11) 188*4882a593Smuzhiyun #define DREF_SSC_SOURCE_ENABLE (2<<11) 189*4882a593Smuzhiyun #define DREF_SSC_SOURCE_MASK (3<<11) 190*4882a593Smuzhiyun #define DREF_NONSPREAD_SOURCE_DISABLE (0<<9) 191*4882a593Smuzhiyun #define DREF_NONSPREAD_CK505_ENABLE (1<<9) 192*4882a593Smuzhiyun #define DREF_NONSPREAD_SOURCE_ENABLE (2<<9) 193*4882a593Smuzhiyun #define DREF_NONSPREAD_SOURCE_MASK (3<<9) 194*4882a593Smuzhiyun #define DREF_SUPERSPREAD_SOURCE_DISABLE (0<<7) 195*4882a593Smuzhiyun #define DREF_SUPERSPREAD_SOURCE_ENABLE (2<<7) 196*4882a593Smuzhiyun #define DREF_SUPERSPREAD_SOURCE_MASK (3<<7) 197*4882a593Smuzhiyun #define DREF_SSC4_DOWNSPREAD (0<<6) 198*4882a593Smuzhiyun #define DREF_SSC4_CENTERSPREAD (1<<6) 199*4882a593Smuzhiyun #define DREF_SSC1_DISABLE (0<<1) 200*4882a593Smuzhiyun #define DREF_SSC1_ENABLE (1<<1) 201*4882a593Smuzhiyun #define DREF_SSC4_DISABLE (0) 202*4882a593Smuzhiyun #define DREF_SSC4_ENABLE (1) 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun #define PCH_RAWCLK_FREQ 0xc6204 205*4882a593Smuzhiyun #define FDL_TP1_TIMER_SHIFT 12 206*4882a593Smuzhiyun #define FDL_TP1_TIMER_MASK (3<<12) 207*4882a593Smuzhiyun #define FDL_TP2_TIMER_SHIFT 10 208*4882a593Smuzhiyun #define FDL_TP2_TIMER_MASK (3<<10) 209*4882a593Smuzhiyun #define RAWCLK_FREQ_MASK 0x3ff 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun #define PCH_DPLL_TMR_CFG 0xc6208 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun #define PCH_SSC4_PARMS 0xc6210 214*4882a593Smuzhiyun #define PCH_SSC4_AUX_PARMS 0xc6214 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun #define PCH_DPLL_SEL 0xc7000 217*4882a593Smuzhiyun #define TRANSA_DPLL_ENABLE (1<<3) 218*4882a593Smuzhiyun #define TRANSA_DPLLB_SEL (1<<0) 219*4882a593Smuzhiyun #define TRANSA_DPLLA_SEL 0 220*4882a593Smuzhiyun #define TRANSB_DPLL_ENABLE (1<<7) 221*4882a593Smuzhiyun #define TRANSB_DPLLB_SEL (1<<4) 222*4882a593Smuzhiyun #define TRANSB_DPLLA_SEL (0) 223*4882a593Smuzhiyun #define TRANSC_DPLL_ENABLE (1<<11) 224*4882a593Smuzhiyun #define TRANSC_DPLLB_SEL (1<<8) 225*4882a593Smuzhiyun #define TRANSC_DPLLA_SEL (0) 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* transcoder */ 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun #define _TRANS_HTOTAL_A 0xe0000 230*4882a593Smuzhiyun #define TRANS_HTOTAL_SHIFT 16 231*4882a593Smuzhiyun #define TRANS_HACTIVE_SHIFT 0 232*4882a593Smuzhiyun #define _TRANS_HBLANK_A 0xe0004 233*4882a593Smuzhiyun #define TRANS_HBLANK_END_SHIFT 16 234*4882a593Smuzhiyun #define TRANS_HBLANK_START_SHIFT 0 235*4882a593Smuzhiyun #define _TRANS_HSYNC_A 0xe0008 236*4882a593Smuzhiyun #define TRANS_HSYNC_END_SHIFT 16 237*4882a593Smuzhiyun #define TRANS_HSYNC_START_SHIFT 0 238*4882a593Smuzhiyun #define _TRANS_VTOTAL_A 0xe000c 239*4882a593Smuzhiyun #define TRANS_VTOTAL_SHIFT 16 240*4882a593Smuzhiyun #define TRANS_VACTIVE_SHIFT 0 241*4882a593Smuzhiyun #define _TRANS_VBLANK_A 0xe0010 242*4882a593Smuzhiyun #define TRANS_VBLANK_END_SHIFT 16 243*4882a593Smuzhiyun #define TRANS_VBLANK_START_SHIFT 0 244*4882a593Smuzhiyun #define _TRANS_VSYNC_A 0xe0014 245*4882a593Smuzhiyun #define TRANS_VSYNC_END_SHIFT 16 246*4882a593Smuzhiyun #define TRANS_VSYNC_START_SHIFT 0 247*4882a593Smuzhiyun #define _TRANS_VSYNCSHIFT_A 0xe0028 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #define _TRANSA_DATA_M1 0xe0030 250*4882a593Smuzhiyun #define _TRANSA_DATA_N1 0xe0034 251*4882a593Smuzhiyun #define _TRANSA_DATA_M2 0xe0038 252*4882a593Smuzhiyun #define _TRANSA_DATA_N2 0xe003c 253*4882a593Smuzhiyun #define _TRANSA_DP_LINK_M1 0xe0040 254*4882a593Smuzhiyun #define _TRANSA_DP_LINK_N1 0xe0044 255*4882a593Smuzhiyun #define _TRANSA_DP_LINK_M2 0xe0048 256*4882a593Smuzhiyun #define _TRANSA_DP_LINK_N2 0xe004c 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun /* Per-transcoder DIP controls */ 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun #define _VIDEO_DIP_CTL_A 0xe0200 261*4882a593Smuzhiyun #define _VIDEO_DIP_DATA_A 0xe0208 262*4882a593Smuzhiyun #define _VIDEO_DIP_GCP_A 0xe0210 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun #define _VIDEO_DIP_CTL_B 0xe1200 265*4882a593Smuzhiyun #define _VIDEO_DIP_DATA_B 0xe1208 266*4882a593Smuzhiyun #define _VIDEO_DIP_GCP_B 0xe1210 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun #define TVIDEO_DIP_CTL(pipe) _PIPE(pipe, _VIDEO_DIP_CTL_A, _VIDEO_DIP_CTL_B) 269*4882a593Smuzhiyun #define TVIDEO_DIP_DATA(pipe) _PIPE(pipe, _VIDEO_DIP_DATA_A, _VIDEO_DIP_DATA_B) 270*4882a593Smuzhiyun #define TVIDEO_DIP_GCP(pipe) _PIPE(pipe, _VIDEO_DIP_GCP_A, _VIDEO_DIP_GCP_B) 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun #define VLV_VIDEO_DIP_CTL_A 0x60200 273*4882a593Smuzhiyun #define VLV_VIDEO_DIP_DATA_A 0x60208 274*4882a593Smuzhiyun #define VLV_VIDEO_DIP_GDCP_PAYLOAD_A 0x60210 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun #define VLV_VIDEO_DIP_CTL_B 0x61170 277*4882a593Smuzhiyun #define VLV_VIDEO_DIP_DATA_B 0x61174 278*4882a593Smuzhiyun #define VLV_VIDEO_DIP_GDCP_PAYLOAD_B 0x61178 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun #define VLV_TVIDEO_DIP_CTL(pipe) \ 281*4882a593Smuzhiyun _PIPE(pipe, VLV_VIDEO_DIP_CTL_A, VLV_VIDEO_DIP_CTL_B) 282*4882a593Smuzhiyun #define VLV_TVIDEO_DIP_DATA(pipe) \ 283*4882a593Smuzhiyun _PIPE(pipe, VLV_VIDEO_DIP_DATA_A, VLV_VIDEO_DIP_DATA_B) 284*4882a593Smuzhiyun #define VLV_TVIDEO_DIP_GCP(pipe) \ 285*4882a593Smuzhiyun _PIPE(pipe, VLV_VIDEO_DIP_GDCP_PAYLOAD_A, VLV_VIDEO_DIP_GDCP_PAYLOAD_B) 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun /* vlv has 2 sets of panel control regs. */ 288*4882a593Smuzhiyun #define PIPEA_PP_STATUS 0x61200 289*4882a593Smuzhiyun #define PIPEA_PP_CONTROL 0x61204 290*4882a593Smuzhiyun #define PIPEA_PP_ON_DELAYS 0x61208 291*4882a593Smuzhiyun #define PIPEA_PP_OFF_DELAYS 0x6120c 292*4882a593Smuzhiyun #define PIPEA_PP_DIVISOR 0x61210 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun #define PIPEB_PP_STATUS 0x61300 295*4882a593Smuzhiyun #define PIPEB_PP_CONTROL 0x61304 296*4882a593Smuzhiyun #define PIPEB_PP_ON_DELAYS 0x61308 297*4882a593Smuzhiyun #define PIPEB_PP_OFF_DELAYS 0x6130c 298*4882a593Smuzhiyun #define PIPEB_PP_DIVISOR 0x61310 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define PCH_PP_STATUS 0xc7200 301*4882a593Smuzhiyun #define PCH_PP_CONTROL 0xc7204 302*4882a593Smuzhiyun #define PANEL_UNLOCK_REGS (0xabcd << 16) 303*4882a593Smuzhiyun #define PANEL_UNLOCK_MASK (0xffff << 16) 304*4882a593Smuzhiyun #define EDP_FORCE_VDD (1 << 3) 305*4882a593Smuzhiyun #define EDP_BLC_ENABLE (1 << 2) 306*4882a593Smuzhiyun #define PANEL_POWER_RESET (1 << 1) 307*4882a593Smuzhiyun #define PANEL_POWER_OFF (0 << 0) 308*4882a593Smuzhiyun #define PANEL_POWER_ON (1 << 0) 309*4882a593Smuzhiyun #define PCH_PP_ON_DELAYS 0xc7208 310*4882a593Smuzhiyun #define PANEL_PORT_SELECT_MASK (3 << 30) 311*4882a593Smuzhiyun #define PANEL_PORT_SELECT_LVDS (0 << 30) 312*4882a593Smuzhiyun #define PANEL_PORT_SELECT_DPA (1 << 30) 313*4882a593Smuzhiyun #define EDP_PANEL (1 << 30) 314*4882a593Smuzhiyun #define PANEL_PORT_SELECT_DPC (2 << 30) 315*4882a593Smuzhiyun #define PANEL_PORT_SELECT_DPD (3 << 30) 316*4882a593Smuzhiyun #define PANEL_POWER_UP_DELAY_MASK (0x1fff0000) 317*4882a593Smuzhiyun #define PANEL_POWER_UP_DELAY_SHIFT 16 318*4882a593Smuzhiyun #define PANEL_LIGHT_ON_DELAY_MASK (0x1fff) 319*4882a593Smuzhiyun #define PANEL_LIGHT_ON_DELAY_SHIFT 0 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun #define PCH_PP_OFF_DELAYS 0xc720c 322*4882a593Smuzhiyun #define PANEL_POWER_PORT_SELECT_MASK (0x3 << 30) 323*4882a593Smuzhiyun #define PANEL_POWER_PORT_LVDS (0 << 30) 324*4882a593Smuzhiyun #define PANEL_POWER_PORT_DP_A (1 << 30) 325*4882a593Smuzhiyun #define PANEL_POWER_PORT_DP_C (2 << 30) 326*4882a593Smuzhiyun #define PANEL_POWER_PORT_DP_D (3 << 30) 327*4882a593Smuzhiyun #define PANEL_POWER_DOWN_DELAY_MASK (0x1fff0000) 328*4882a593Smuzhiyun #define PANEL_POWER_DOWN_DELAY_SHIFT 16 329*4882a593Smuzhiyun #define PANEL_LIGHT_OFF_DELAY_MASK (0x1fff) 330*4882a593Smuzhiyun #define PANEL_LIGHT_OFF_DELAY_SHIFT 0 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun #define PCH_PP_DIVISOR 0xc7210 333*4882a593Smuzhiyun #define PP_REFERENCE_DIVIDER_MASK (0xffffff00) 334*4882a593Smuzhiyun #define PP_REFERENCE_DIVIDER_SHIFT 8 335*4882a593Smuzhiyun #define PANEL_POWER_CYCLE_DELAY_MASK (0x1f) 336*4882a593Smuzhiyun #define PANEL_POWER_CYCLE_DELAY_SHIFT 0 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun #define PCH_DP_B 0xe4100 339*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_CTL 0xe4110 340*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_DATA1 0xe4114 341*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_DATA2 0xe4118 342*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_DATA3 0xe411c 343*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_DATA4 0xe4120 344*4882a593Smuzhiyun #define PCH_DPB_AUX_CH_DATA5 0xe4124 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun #define PCH_DP_C 0xe4200 347*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_CTL 0xe4210 348*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_DATA1 0xe4214 349*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_DATA2 0xe4218 350*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_DATA3 0xe421c 351*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_DATA4 0xe4220 352*4882a593Smuzhiyun #define PCH_DPC_AUX_CH_DATA5 0xe4224 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun #define PCH_DP_D 0xe4300 355*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_CTL 0xe4310 356*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_DATA1 0xe4314 357*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_DATA2 0xe4318 358*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_DATA3 0xe431c 359*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_DATA4 0xe4320 360*4882a593Smuzhiyun #define PCH_DPD_AUX_CH_DATA5 0xe4324 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun #endif /* _I915_REG_H_ */ 363