]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
drm/i915/display: Optimize panel power-on wait time
authorDibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Thu, 7 Aug 2025 08:24:02 +0000 (13:54 +0530)
committerJani Nikula <jani.nikula@intel.com>
Wed, 13 Aug 2025 08:25:20 +0000 (11:25 +0300)
commit1ebc27248ea0b81f0023ca28894ac40183b86b7c
tree685cebc4f0cc2f0518d7ce582eb088e05310a3a6
parenta985ecc2bec87dba544f8487b84d6523dcbb321b
drm/i915/display: Optimize panel power-on wait time

The current wait_panel_status() uses intel_de_wait(),
which internally on Xe platforms calls  xe_mmio_wait32().
xe_mmio_wait32() increases poll interval exponentially.

This exponential poll interval increase causes unnessory delays
during resume or power-on when the panel becomes ready earlier,
but polling is delayed due to backoff.

Replace intel_de_wait() with read_poll_timeout() +
intel_de_read() to actively poll the register at a fixed 10ms interval
up to a 5 second timeout. This allows poll to exit
early  when panel is ready.

Changes in v2:
Replaced  two-phase intel_de_wait() with  read_poll_timeout()
 + intel_de_read()
Changes in v3:
 - Add poll_interval_ms argument  'wait_panel_status' function.
 - Modify 'wait_panel_status' callers with proper poll interval
Changes in v4:
 - Change 'wait_panel_off' poll interval to 10ms
Changes in v5:
 - Dropped  poll_interval_ms parameter,use fixed polling
   interval of 10ms (Jani Nikula)
Changes in v6:
 - Removed goto in error path

Signed-off-by: Dibin Moolakadan Subrahmanian <dibin.moolakadan.subrahmanian@intel.com>
Link: https://lore.kernel.org/r/20250807082402.79018-1-dibin.moolakadan.subrahmanian@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_pps.c