On Thu, 2025-02-13 at 08:47 +0200, Jouni Högander wrote:
> This patch set is doing necessary modifications to support PSR update
> using DSB on LunarLake onwards
> 
> It is not necessary to wait for PSR1 to idle or PSR2 to exit DEEP
> sleep at the begin of commit This is left out from DSB commit. There
> might be room for optimization for non-DSB as well because such wait
> is not supposed to be necessary at the begin of update.
> 
> PSR mutex is not locked when performing DSB commit. It is not
> necessary as we are currently using DSB only when sending updates
> towards panel. I.e. not using it when changing PSR mode. Also
> necessary changes are made to use PSR2_MAN_TRK_CTL only in
> DSB. Frontbuffer updates and legacy cursor updates are using SFF_CTL
> register to perform full frame updates.
> 
> DSB_SKIP_WAITS_EN is removed to ensure all waits are performed when
> PSR is active. PSR "Frame Change" event is manually triggered at the
> begin of each DSB commit by adding CURSURFLIVE register write.
> 
> Possibe problem with DSB commit when PSR is already waking up is
> avoided by evading scanline 0.

These are now pushed to drm-intel-next. Thank you Ville and Animesh for
your reviews.

BR,

Jouni Högander

> 
> v8:
>   - rebase
> v7:
>   - Rename "drm/i915/psr: Changes for PSR2_MAN_TRK_CTL handling when
>     DSB is in use" as "drm/i915/psr: Write PSR2_MAN_TRK_CTL on DSB
>     commit" due to scope changes.
>   - Warn on use_dsb in non-dsb pipe update functions
>   - dsb as a first parameter in intel_psr_trigger_frame_change_event
> v6:
>   - add comment explaining why we are not setting DSB_SKIP_WAITS_EN
>   - add separate function to generate the "Frame change"evant.
>   - use intel_dsb_emit_wait_dsl
>   - add evasion of scanline 0 also for Panel Replay
> v5:
>   - rebase
> v4:
>   - remove DSB_SKIP_WAITS_EN
>   - Add CURSURFLIVE register write at the begin of DSB commit
>   - evade scanline 0
> v3:
>   - do not use DSB when PSR mode is changing
> v2:
>   - use _MMIO_TRANS instead of _MMIO_TRANS2
>   - drop evasion from intel_psr_configure_full_frame_update
> 
> Jouni Högander (13):
>   drm/i915/psr: Use PSR2_MAN_TRK_CTL CFF bit only to send full update
>   drm/i915/psr: Rename psr_force_hw_tracking_exit as
>     intel_psr_force_update
>   drm/i915/psr: Split setting sff and cff bits away from
>     intel_psr_force_update
>   drm/i915/psr: Add register definitions for SFF_CTL and CFF_CTL
>     registers
>   drm/i915/psr: Use SFF_CTL on invalidate/flush for LunarLake onwards
>   drm/i915/psr: Allow writing PSR2_MAN_TRK_CTL using DSB
>   drm/i915/psr: Write PSR2_MAN_TRK_CTL on DSB commit as well
>   drm/i915/display: Warn on use_dsb in non-dsb pipe update functions
>   drm/i915/psr: Remove DSB_SKIP_WAITS_EN chicken bit
>   drm/i915/display: Evade scanline 0 as well if PSR1 or PSR2 is
> enabled
>   drm/i915/psr: Add function for triggering "Frame Change" event
>   drm/i915/display: Ensure we have "Frame Change" event in DSB commit
>   drm/i915/psr: Allow DSB usage when PSR is enabled
> 
>  drivers/gpu/drm/i915/display/intel_crtc.c     |   4 +
>  drivers/gpu/drm/i915/display/intel_display.c  |  21 ++-
>  drivers/gpu/drm/i915/display/intel_dsb.c      |  27 +++-
>  drivers/gpu/drm/i915/display/intel_psr.c      | 141 +++++++++-------
> --
>  drivers/gpu/drm/i915/display/intel_psr.h      |   7 +-
>  drivers/gpu/drm/i915/display/intel_psr_regs.h |  10 ++
>  6 files changed, 136 insertions(+), 74 deletions(-)
> 

Reply via email to