xref: /OK3568_Linux_fs/u-boot/drivers/video/i915_reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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