Commit 94fe5f27 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/wa: convert intel_display_wa.[ch] to struct intel_display



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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/821937f9fcdcb7d5516be0c48c2cee009936ecb8.1742906146.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent a2e1a10c
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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 = {
+15 −15
Original line number Diff line number Diff line
@@ -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);
}
+7 −4
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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;
	}
+4 −2
Original line number Diff line number Diff line
@@ -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);
}