drm/i915/dsb: Move the DSB_PMCTRL* reset out of intel_dsb_finish()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 12 Jun 2025 14:50:17 +0000 (17:50 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 17 Jun 2025 16:12:59 +0000 (19:12 +0300)
commit7c50c6a8173137519c84574bd348abe6703989be
treedfe2ca08cc3e20c51705716a0d27957d8ce59cc6
parent00863f06fd8bcb075bb95655bbdcdb562d81bb03
drm/i915/dsb: Move the DSB_PMCTRL* reset out of intel_dsb_finish()

When using the flip queue, due to the DMC vs. DSB register corruption
problem, we must not issue any register writes from the DSB after
unhalting the DMC. Currently we are doing just that by trying to
restore DSB_PMCTRL* back to a sane state from intel_dsb_finish().

Since the only place left that pokes at DSB_PMCTRL* is intel_dsb_chain()
we can just do DSB_PMCTRL_2/DSB_FORCE_DEWAKE reset in the same place.

The DSB_PMCTRL reset is trickier since we'd have to do it from the
chained DSB itself. But based on my earlier testing
DSB_PMCTRL/DSB_ENABLE_DEWAKE doesn't actually do anything if the DSB
isn't actually enabled, so we can omit the reset to keep things a bit
simpler. We do need to reset DSB_PMCTRL/DSB_ENABLE_DEWAKE before
tarting the DSB however, in case it was left enabled from a previous
use.

Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250612145018.8735-6-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_dsb.c