drm/i915: add Ironlake clock gating workaround for FDI link training
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
		
							parent
							
								
									9f0e7ff4b3
								
							
						
					
					
						commit
						5b2adf8971
					
				| @ -2782,6 +2782,7 @@ | ||||
| #define FDI_RXA_CHICKEN         0xc200c | ||||
| #define FDI_RXB_CHICKEN         0xc2010 | ||||
| #define  FDI_RX_PHASE_SYNC_POINTER_ENABLE       (1) | ||||
| #define FDI_RX_CHICKEN(pipe) _PIPE(pipe, FDI_RXA_CHICKEN, FDI_RXB_CHICKEN) | ||||
| 
 | ||||
| /* CPU: FDI_TX */ | ||||
| #define FDI_TXA_CTL             0x60100 | ||||
|  | ||||
| @ -1714,6 +1714,9 @@ static void ironlake_fdi_link_train(struct drm_crtc *crtc) | ||||
| 	POSTING_READ(reg); | ||||
| 	udelay(150); | ||||
| 
 | ||||
| 	/* Ironlake workaround, enable clock pointer after FDI enable*/ | ||||
| 	I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_ENABLE); | ||||
| 
 | ||||
| 	reg = FDI_RX_IIR(pipe); | ||||
| 	for (tries = 0; tries < 5; tries++) { | ||||
| 		temp = I915_READ(reg); | ||||
| @ -2192,6 +2195,11 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc) | ||||
| 	POSTING_READ(reg); | ||||
| 	udelay(100); | ||||
| 
 | ||||
| 	/* Ironlake workaround, disable clock pointer after downing FDI */ | ||||
| 	I915_WRITE(FDI_RX_CHICKEN(pipe), | ||||
| 		   I915_READ(FDI_RX_CHICKEN(pipe) & | ||||
| 			     ~FDI_RX_PHASE_SYNC_POINTER_ENABLE)); | ||||
| 
 | ||||
| 	/* still set train pattern 1 */ | ||||
| 	reg = FDI_TX_CTL(pipe); | ||||
| 	temp = I915_READ(reg); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user