From 90e07834704f29e63ecfa598d2167ed9cbfb0a98 Mon Sep 17 00:00:00 2001 From: Vinod Govindapillai Date: Tue, 15 Sep 2026 12:25:14 +0300 Subject: [PATCH] drm/i915: add pme_enabled() to the parent interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PME capabiliy need to be assessed very early during runtime suspend routine to avoid resetting HPDs during IRQ resets. As display runtime pm routines are being executed in the independent intel display driver entry points, we need to have independent access to the pme status as well. Add a provision to query the optional pme_enabled to the parent interface so that it could be called independently based on xe/i915's pme_enabled() implementation. Assisted-by: GitHub_Copilot:claude-opus-5 Signed-off-by: Vinod Govindapillai Reviewed-by: Jouni Högander Link: https://patch.msgid.link/20260915092518.639448-3-vinod.govindapillai@intel.com Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/i915/display/intel_display_rpm.c | 7 +++++++ drivers/gpu/drm/i915/display/intel_display_rpm.h | 1 + include/drm/intel/display_parent_interface.h | 1 + 3 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.c b/drivers/gpu/drm/i915/display/intel_display_rpm.c index 0a331f89b4db..9927119a0fd1 100644 --- a/drivers/gpu/drm/i915/display/intel_display_rpm.c +++ b/drivers/gpu/drm/i915/display/intel_display_rpm.c @@ -46,6 +46,13 @@ bool intel_display_rpm_suspended(struct intel_display *display) return display->parent->rpm->suspended(display->drm); } +bool intel_display_rpm_pme_enabled(struct intel_display *display) +{ + const struct intel_display_rpm_interface *rpm = display->parent->rpm; + + return rpm->pme_enabled && rpm->pme_enabled(display->drm); +} + void assert_display_rpm_held(struct intel_display *display) { display->parent->rpm->assert_held(display->drm); diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.h b/drivers/gpu/drm/i915/display/intel_display_rpm.h index 6ef48515f84b..5d9a1cdddfa7 100644 --- a/drivers/gpu/drm/i915/display/intel_display_rpm.h +++ b/drivers/gpu/drm/i915/display/intel_display_rpm.h @@ -21,6 +21,7 @@ void intel_display_rpm_put(struct intel_display *display, struct ref_tracker *wa /* Only for special cases. */ bool intel_display_rpm_suspended(struct intel_display *display); +bool intel_display_rpm_pme_enabled(struct intel_display *display); void assert_display_rpm_held(struct intel_display *display); void intel_display_rpm_assert_block(struct intel_display *display); diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h index 5e44c022d1ae..f36134e89cb6 100644 --- a/include/drm/intel/display_parent_interface.h +++ b/include/drm/intel/display_parent_interface.h @@ -196,6 +196,7 @@ struct intel_display_rpm_interface { void (*put_unchecked)(const struct drm_device *drm); bool (*suspended)(const struct drm_device *drm); + bool (*pme_enabled)(const struct drm_device *drm); /* Optional */ void (*assert_held)(const struct drm_device *drm); void (*assert_block)(const struct drm_device *drm); void (*assert_unblock)(const struct drm_device *drm);