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