Commit 5c30a6e1 authored by Ankit Nautiyal's avatar Ankit Nautiyal
Browse files

drm/i915/display_wa: Add helpers to check wa



Introduce a generic helper to check display workarounds using an enum.

Convert Wa_16023588340 to use the new interface, simplifying WA checks
and making future additions easier.

v2: Use drm_WARN instead of MISSING_CASE and simplify intel_display_wa
macro. (Jani)
v3: Print Missing wa number, instead of enum value. (Gustavo, Jani)

Suggested-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarGustavo Sousa <gustavo.sousa@intel.com>
Link: https://lore.kernel.org/r/20250711041901.1607823-2-ankit.k.nautiyal@intel.com
parent 8a643df5
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@
 * Copyright © 2023 Intel Corporation
 */

#include <drm/drm_print.h>

#include "i915_reg.h"
#include "intel_de.h"
#include "intel_display_core.h"
@@ -39,3 +41,16 @@ void intel_display_wa_apply(struct intel_display *display)
	else if (DISPLAY_VER(display) == 11)
		gen11_display_wa_apply(display);
}

bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, const char *name)
{
	switch (wa) {
	case INTEL_DISPLAY_WA_16023588340:
		return intel_display_needs_wa_16023588340(display);
	default:
		drm_WARN(display->drm, 1, "Missing Wa number: %s\n", name);
		break;
	}

	return false;
}
+9 −0
Original line number Diff line number Diff line
@@ -21,4 +21,13 @@ static inline bool intel_display_needs_wa_16023588340(struct intel_display *disp
bool intel_display_needs_wa_16023588340(struct intel_display *display);
#endif

enum intel_display_wa {
	INTEL_DISPLAY_WA_16023588340,
};

bool __intel_display_wa(struct intel_display *display, enum intel_display_wa wa, const char *name);

#define intel_display_wa(__display, __wa) \
	__intel_display_wa((__display), INTEL_DISPLAY_WA_##__wa, __stringify(__wa))

#endif
+1 −1
Original line number Diff line number Diff line
@@ -1464,7 +1464,7 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,
		return 0;
	}

	if (intel_display_needs_wa_16023588340(display)) {
	if (intel_display_wa(display, 16023588340)) {
		plane_state->no_fbc_reason = "Wa_16023588340";
		return 0;
	}