]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/wa: convert intel_display_wa.[ch] to struct intel_display
authorJani Nikula <jani.nikula@intel.com>
Tue, 25 Mar 2025 12:36:37 +0000 (14:36 +0200)
committerJani Nikula <jani.nikula@intel.com>
Fri, 28 Mar 2025 11:52:23 +0000 (13:52 +0200)
Going forward, struct intel_display is the main display device data
pointer. Convert as much as possible of intel_display_wa.[ch] to struct
intel_display.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/821937f9fcdcb7d5516be0c48c2cee009936ecb8.1742906146.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/display/intel_display_wa.c
drivers/gpu/drm/i915/display/intel_display_wa.h
drivers/gpu/drm/i915/display/intel_fbc.c
drivers/gpu/drm/xe/display/xe_display_wa.c

index 61748525da0b06afcc173383cdad6d31283f5cf2..4edadebad13b25ccf42cbcf4e145d5eeea161783 100644 (file)
@@ -82,7 +82,6 @@ bool intel_display_driver_probe_defer(struct pci_dev *pdev)
 
 void intel_display_driver_init_hw(struct intel_display *display)
 {
-       struct drm_i915_private *i915 = to_i915(display->drm);
        struct intel_cdclk_state *cdclk_state;
 
        if (!HAS_DISPLAY(display))
@@ -94,7 +93,7 @@ void intel_display_driver_init_hw(struct intel_display *display)
        intel_cdclk_dump_config(display, &display->cdclk.hw, "Current CDCLK");
        cdclk_state->logical = cdclk_state->actual = display->cdclk.hw;
 
-       intel_display_wa_apply(i915);
+       intel_display_wa_apply(display);
 }
 
 static const struct drm_mode_config_funcs intel_mode_funcs = {
index e5a8022db664b0f027429ae639374bc81a52fd77..da429c33291426622efa04de92ab3271c8c28bb7 100644 (file)
@@ -3,38 +3,38 @@
  * Copyright © 2023 Intel Corporation
  */
 
-#include "i915_drv.h"
 #include "i915_reg.h"
 #include "intel_de.h"
+#include "intel_display_core.h"
 #include "intel_display_wa.h"
 
-static void gen11_display_wa_apply(struct drm_i915_private *i915)
+static void gen11_display_wa_apply(struct intel_display *display)
 {
        /* Wa_14010594013 */
-       intel_de_rmw(i915, GEN8_CHICKEN_DCPR_1, 0, ICL_DELAY_PMRSP);
+       intel_de_rmw(display, GEN8_CHICKEN_DCPR_1, 0, ICL_DELAY_PMRSP);
 }
 
-static void xe_d_display_wa_apply(struct drm_i915_private *i915)
+static void xe_d_display_wa_apply(struct intel_display *display)
 {
        /* Wa_14013723622 */
-       intel_de_rmw(i915, CLKREQ_POLICY, CLKREQ_POLICY_MEM_UP_OVRD, 0);
+       intel_de_rmw(display, CLKREQ_POLICY, CLKREQ_POLICY_MEM_UP_OVRD, 0);
 }
 
-static void adlp_display_wa_apply(struct drm_i915_private *i915)
+static void adlp_display_wa_apply(struct intel_display *display)
 {
        /* Wa_22011091694:adlp */
-       intel_de_rmw(i915, GEN9_CLKGATE_DIS_5, 0, DPCE_GATING_DIS);
+       intel_de_rmw(display, GEN9_CLKGATE_DIS_5, 0, DPCE_GATING_DIS);
 
        /* Bspec/49189 Initialize Sequence */
-       intel_de_rmw(i915, GEN8_CHICKEN_DCPR_1, DDI_CLOCK_REG_ACCESS, 0);
+       intel_de_rmw(display, GEN8_CHICKEN_DCPR_1, DDI_CLOCK_REG_ACCESS, 0);
 }
 
-void intel_display_wa_apply(struct drm_i915_private *i915)
+void intel_display_wa_apply(struct intel_display *display)
 {
-       if (IS_ALDERLAKE_P(i915))
-               adlp_display_wa_apply(i915);
-       else if (DISPLAY_VER(i915) == 12)
-               xe_d_display_wa_apply(i915);
-       else if (DISPLAY_VER(i915) == 11)
-               gen11_display_wa_apply(i915);
+       if (display->platform.alderlake_p)
+               adlp_display_wa_apply(display);
+       else if (DISPLAY_VER(display) == 12)
+               xe_d_display_wa_apply(display);
+       else if (DISPLAY_VER(display) == 11)
+               gen11_display_wa_apply(display);
 }
index be644ab6ae00612aa6b677618568cdcabe9d74e5..babd9d16603d33a13e59ef6898436eaab8542aaa 100644 (file)
@@ -8,14 +8,17 @@
 
 #include <linux/types.h>
 
-struct drm_i915_private;
+struct intel_display;
 
-void intel_display_wa_apply(struct drm_i915_private *i915);
+void intel_display_wa_apply(struct intel_display *display);
 
 #ifdef I915
-static inline bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915) { return false; }
+static inline bool intel_display_needs_wa_16023588340(struct intel_display *display)
+{
+       return false;
+}
 #else
-bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915);
+bool intel_display_needs_wa_16023588340(struct intel_display *display);
 #endif
 
 #endif
index ea3123874cbf5f87745349e2f966749591ab78e6..e89cee323d8b88fab5e184d5383d4dcd9b75b660 100644 (file)
@@ -1437,7 +1437,7 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
                return 0;
        }
 
-       if (intel_display_needs_wa_16023588340(i915)) {
+       if (intel_display_needs_wa_16023588340(display)) {
                plane_state->no_fbc_reason = "Wa_16023588340";
                return 0;
        }
index 68e3d1959ad6a8d285f4c2901e190682fd09f702..2933ca97d673b52df4d75de3b81132e213ca1d43 100644 (file)
@@ -10,7 +10,9 @@
 
 #include <generated/xe_wa_oob.h>
 
-bool intel_display_needs_wa_16023588340(struct drm_i915_private *i915)
+bool intel_display_needs_wa_16023588340(struct intel_display *display)
 {
-       return XE_WA(xe_root_mmio_gt(i915), 16023588340);
+       struct xe_device *xe = to_xe_device(display->drm);
+
+       return XE_WA(xe_root_mmio_gt(xe), 16023588340);
 }