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: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241108130218.24125-15-gustavo.sousa@intel.com
This commit is contained in:
Gustavo Sousa
2024-11-08 09:57:19 -03:00
committed by Matt Roper
parent c92ae71c1d
commit c01e78a96e

View File

@@ -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);