]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/i915/dsb: Clear DSB_ENABLE_DEWAKE once the DSB is done
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 24 Jun 2024 19:10:30 +0000 (22:10 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 29 Aug 2024 11:54:03 +0000 (14:54 +0300)
In order to avoid the DSB keeping the DEwake permanently
asserted we must clear DSB_PMCTRL_2.DSB_FORCE_DEWAKE once
we are done. For good measure do the same for
DSB_PMCTRL.DSB_ENABLE_DEWAKE.

Experimentally this doens't seem to be actually necessary
(unlike with DSB_FORCE_DEWAKE). That is, the DSB_ENABLE_DEWAKE
doesn't seem to do anything whenever the DSB is not active.
But I'd hate to waste a ton of power in case there I'm wrong
and there is some way DEwake could remaing asserted. One extra
register write is a small price to pay for some peace of mind.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240624191032.27333-13-ville.syrjala@linux.intel.com
Reviewed-by: Animesh Manna <animesh.manna@intel.com>
drivers/gpu/drm/i915/display/intel_dsb.c

index 864d293d3f33881487bc8305f0a02af00eab81d9..da24e041d269945fec12aaa91297e34b250a006d 100644 (file)
@@ -464,8 +464,10 @@ void intel_dsb_finish(struct intel_dsb *dsb)
        /*
         * DSB_FORCE_DEWAKE remains active even after DSB is
         * disabled, so make sure to clear it (if set during
-        * intel_dsb_commit()).
+        * intel_dsb_commit()). And clear DSB_ENABLE_DEWAKE as
+        * well for good measure.
         */
+       intel_dsb_reg_write(dsb, DSB_PMCTRL(crtc->pipe, dsb->id), 0);
        intel_dsb_reg_write_masked(dsb, DSB_PMCTRL_2(crtc->pipe, dsb->id),
                                   DSB_FORCE_DEWAKE, 0);