> -----Original Message----- > From: Coelho, Luciano <luciano.coelho@xxxxxxxxx> > Sent: Monday, March 18, 2024 7:08 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: intel-xe@xxxxxxxxxxxxxxxxxxxxx; Shankar, Uma <uma.shankar@xxxxxxxxx>; > ville.syrjala@xxxxxxxxxxxxxxx; Nikula, Jani <jani.nikula@xxxxxxxxx> > Subject: [PATCH v3 2/4] drm/i915/display: don't allow DMC wakelock on older > hardware > > Only allow running DMC wakelock code if the display version is 20 or greater. One for previous one, don't do intel_dmc_wl_init unconditionally but protect it with Platform check. > Signed-off-by: Luca Coelho <luciano.coelho@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_dmc_wl.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c > b/drivers/gpu/drm/i915/display/intel_dmc_wl.c > index 5c3d8204ae7e..7c991e22c616 100644 > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c > @@ -120,6 +120,9 @@ void intel_dmc_wl_enable(struct drm_i915_private > *i915) > struct intel_dmc_wl *wl = &i915->display.wl; > unsigned long flags; > > + if (DISPLAY_VER(i915) < 20) > + return; > + > spin_lock_irqsave(&wl->lock, flags); > > if (wl->enabled) > @@ -143,6 +146,9 @@ void intel_dmc_wl_disable(struct drm_i915_private > *i915) > struct intel_dmc_wl *wl = &i915->display.wl; > unsigned long flags; > > + if (DISPLAY_VER(i915) < 20) > + return; There can be case where DMC is not loaded, address that as well. We should not do wakelock in that case. > flush_delayed_work(&wl->work); > > spin_lock_irqsave(&wl->lock, flags); > @@ -171,6 +177,9 @@ void intel_dmc_wl_get(struct drm_i915_private *i915, > i915_reg_t reg) > struct intel_dmc_wl *wl = &i915->display.wl; > unsigned long flags; > > + if (DISPLAY_VER(i915) < 20) > + return; > + > if (!intel_dmc_wl_check_range(reg.reg)) > return; > > @@ -203,6 +212,9 @@ void intel_dmc_wl_put(struct drm_i915_private *i915, > i915_reg_t reg) > struct intel_dmc_wl *wl = &i915->display.wl; > unsigned long flags; > > + if (DISPLAY_VER(i915) < 20) > + return; > + > if (!intel_dmc_wl_check_range(reg.reg)) > return; > > -- > 2.39.2