LKML Archive on
help / color / mirror / Atom feed
From: Ayan Kumar Halder <>
Subject: [PATCH v2 8/8] drm/arm/malidp: Added the late system pm functions
Date: Mon, 23 Apr 2018 15:50:51 +0100	[thread overview]
Message-ID: <> (raw)
In-Reply-To: <>

malidp_pm_suspend_late checks if the runtime status is not suspended
and if so, invokes malidp_runtime_pm_suspend which disables the
display engine/core interrupts and the clocks. It sets the runtime status
as suspended.

The difference between suspend() and suspend_late() is as follows:-
1. suspend() makes the device quiescent. In our case, we invoke the DRM
helper which disables the CRTC. This would have invoked runtime pm
suspend but the system suspend process disables runtime pm.
2. suspend_late() It continues the suspend operations of the drm device 
which was started by suspend(). In our case, it performs the same functionality
as runtime_suspend().

The complimentary functions are resume() and resume_early(). In the case of
resume_early(), we invoke malidp_runtime_pm_resume() which enables the clocks 
and the interrupts. It sets the runtime status as active. If the device was
in runtime suspend mode before system suspend was called, pm_runtime_work()
will put the device back in runtime suspended mode( after the complete system
has been resumed).

Signed-off-by: Ayan Kumar Halder <>

Changes in v2:-
- Removed the change id and modified the commit message
 drivers/gpu/drm/arm/malidp_drv.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index bd44a6d..f6124d8 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -766,8 +766,25 @@ static int __maybe_unused malidp_pm_resume(struct device *dev)
 	return 0;
+static int __maybe_unused malidp_pm_suspend_late(struct device *dev)
+	if (!pm_runtime_status_suspended(dev)) {
+		malidp_runtime_pm_suspend(dev);
+		pm_runtime_set_suspended(dev);
+	}
+	return 0;
+static int __maybe_unused malidp_pm_resume_early(struct device *dev)
+	malidp_runtime_pm_resume(dev);
+	pm_runtime_set_active(dev);
+	return 0;
 static const struct dev_pm_ops malidp_pm_ops = {
 	SET_SYSTEM_SLEEP_PM_OPS(malidp_pm_suspend, malidp_pm_resume) \
+	SET_LATE_SYSTEM_SLEEP_PM_OPS(malidp_pm_suspend_late, malidp_pm_resume_early) \
 	SET_RUNTIME_PM_OPS(malidp_runtime_pm_suspend, malidp_runtime_pm_resume, NULL)

      parent reply	other threads:[~2018-04-23 14:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-23 14:50 [PATCH v2 0/8] drm/arm/malidp: Enhance support for system and runtime power management on malidp Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 1/8] drm/arm/malidp: Modified the prototype of malidp_de_irq_fini Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 2/8] drm/arm/malidp: Modified the prototype of malidp_se_irq_fini Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 3/8] drm/arm/malidp: Split malidp_de_irq_init Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 4/8] drm/arm/malidp: Split malidp_se_irq_init Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 5/8] drm/arm/malidp: Enable/disable interrupts in runtime pm Ayan Kumar Halder
2018-04-23 14:50 ` [PATCH v2 6/8] drm/arm/malidp: Enable/disable the scaling engine interrupts with memory writeback Ayan Kumar Halder
2018-04-23 15:36   ` Liviu Dudau
2018-04-24 10:11     ` Ayan Halder
2018-04-23 14:50 ` [PATCH v2 7/8] drm/arm/malidp: Set the output_depth register in modeset Ayan Kumar Halder
2018-04-23 14:50 ` Ayan Kumar Halder [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \ \ \
    --subject='Re: [PATCH v2 8/8] drm/arm/malidp: Added the late system pm functions' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).