Commit c01e78a9 authored by Gustavo Sousa's avatar Gustavo Sousa Committed by Matt Roper
Browse files

drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support



Instead of checking for HAS_DMC_WAKELOCK() multiple times, let's use it
to sanitize the enable_dmc_wl parameter and use that variable when
necessary.

Reviewed-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Signed-off-by: default avatarGustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241108130218.24125-15-gustavo.sousa@intel.com
parent c92ae71c
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@

#include <linux/kernel.h>

#include <drm/drm_print.h>

#include "i915_reg.h"
#include "intel_de.h"
#include "intel_dmc.h"
@@ -262,20 +264,25 @@ static bool intel_dmc_wl_check_range(i915_reg_t reg, u32 dc_state)

static bool __intel_dmc_wl_supported(struct intel_display *display)
{
	if (!HAS_DMC_WAKELOCK(display) ||
	    !intel_dmc_has_payload(display) ||
	    !display->params.enable_dmc_wl)
		return false;
	return display->params.enable_dmc_wl && intel_dmc_has_payload(display);
}

	return true;
static void intel_dmc_wl_sanitize_param(struct intel_display *display)
{
	if (!HAS_DMC_WAKELOCK(display))
		display->params.enable_dmc_wl = false;

	drm_dbg_kms(display->drm, "Sanitized enable_dmc_wl value: %d\n",
		    display->params.enable_dmc_wl);
}

void intel_dmc_wl_init(struct intel_display *display)
{
	struct intel_dmc_wl *wl = &display->wl;

	/* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
	if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
	intel_dmc_wl_sanitize_param(display);

	if (!display->params.enable_dmc_wl)
		return;

	INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);