drm/i915/display: Apply workarounds during display init
authorMatt Roper <matthew.d.roper@intel.com>
Wed, 6 Sep 2023 23:47:37 +0000 (16:47 -0700)
committerMatt Roper <matthew.d.roper@intel.com>
Fri, 8 Sep 2023 22:45:46 +0000 (15:45 -0700)
Rather than applying display workarounds as part of
intel_clock_gating_init() (which in turn is confusingly called from
i915_gem_init during device probe), handle them at the point we're
actually initializing the display hardware.  This will also ensure that
these workarounds are properly applied during display initialization on
the Xe driver, which re-uses i915's display code, but does not call
i915's gem init.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230906234732.3728630-10-matthew.d.roper@intel.com
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/intel_clock_gating.c

index 8f144d4d3c398398802e45a25f515330ea94cd64..9d9b034b9bdc774110c45d85282d63d1b7fa95e6 100644 (file)
@@ -31,6 +31,7 @@
 #include "intel_display_irq.h"
 #include "intel_display_power.h"
 #include "intel_display_types.h"
+#include "intel_display_wa.h"
 #include "intel_dkl_phy.h"
 #include "intel_dmc.h"
 #include "intel_dp.h"
@@ -88,6 +89,8 @@ void intel_display_driver_init_hw(struct drm_i915_private *i915)
        intel_update_cdclk(i915);
        intel_cdclk_dump_config(i915, &i915->display.cdclk.hw, "Current CDCLK");
        cdclk_state->logical = cdclk_state->actual = i915->display.cdclk.hw;
+
+       intel_display_wa_apply(i915);
 }
 
 static const struct drm_mode_config_funcs intel_mode_funcs = {
index 7b0c1bcaa05de1e01ec8a1d51acb33f73723a428..6589bb04e78807cd9c71a16fe0a00a8051d4cf9b 100644 (file)
@@ -28,7 +28,6 @@
 #include "display/intel_de.h"
 #include "display/intel_display.h"
 #include "display/intel_display_trace.h"
-#include "display/intel_display_wa.h"
 #include "display/skl_watermark.h"
 
 #include "gt/intel_engine_regs.h"
@@ -758,8 +757,6 @@ static void i830_init_clock_gating(struct drm_i915_private *i915)
 void intel_clock_gating_init(struct drm_i915_private *i915)
 {
        i915->clock_gating_funcs->init_clock_gating(i915);
-
-       intel_display_wa_apply(i915);
 }
 
 static void nop_init_clock_gating(struct drm_i915_private *i915)