Bladeren bron

drm/i915: diasable clock gating for the panel power sequencer

Needed on Ibex Peak and Cougar Point or the panel won't always come on.

Cc: stable@kernel.org
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Jesse Barnes 14 jaren geleden
bovenliggende
commit
382b093627
2 gewijzigde bestanden met toevoegingen van 10 en 0 verwijderingen
  1. 3 0
      drivers/gpu/drm/i915/i915_reg.h
  2. 7 0
      drivers/gpu/drm/i915/intel_display.c

+ 3 - 0
drivers/gpu/drm/i915/i915_reg.h

@@ -2784,6 +2784,9 @@
 #define  FDI_RX_PHASE_SYNC_POINTER_ENABLE       (1)
 #define FDI_RX_CHICKEN(pipe) _PIPE(pipe, FDI_RXA_CHICKEN, FDI_RXB_CHICKEN)
 
+#define SOUTH_DSPCLK_GATE_D	0xc2020
+#define  PCH_DPLSUNIT_CLOCK_GATE_DISABLE (1<<29)
+
 /* CPU: FDI_TX */
 #define FDI_TXA_CTL             0x60100
 #define FDI_TXB_CTL             0x61100

+ 7 - 0
drivers/gpu/drm/i915/intel_display.c

@@ -5745,6 +5745,13 @@ void intel_init_clock_gating(struct drm_device *dev)
 
 		I915_WRITE(PCH_DSPCLK_GATE_D, dspclk_gate);
 
+		/*
+		 * On Ibex Peak and Cougar Point, we need to disable clock
+		 * gating for the panel power sequencer or it will fail to
+		 * start up when no ports are active.
+		 */
+		I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE);
+
 		/*
 		 * According to the spec the following bits should be set in
 		 * order to enable memory self-refresh