From: Ayan Kumar Halder <ayan.halder@arm.com> To: ayan.halder@arm.com, liviu.dudau@arm.com, brian.starkey@arm.com, malidp@foss.arm.com, airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: nd@arm.com Subject: [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions Date: Tue, 24 Apr 2018 19:12:47 +0100 [thread overview] Message-ID: <1524593567-5559-6-git-send-email-ayan.halder@arm.com> (raw) In-Reply-To: <1524593567-5559-1-git-send-email-ayan.halder@arm.com> 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 <ayan.halder@arm.com> --- Changes in v3:- - Rebased on top of earlier v3 patches, 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 82221ea..c53b46a 100644 --- a/drivers/gpu/drm/arm/malidp_drv.c +++ b/drivers/gpu/drm/arm/malidp_drv.c @@ -768,8 +768,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) }; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Ayan Kumar Halder <ayan.halder@arm.com> To: ayan.halder@arm.com, liviu.dudau@arm.com, brian.starkey@arm.com, malidp@foss.arm.com, airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: nd@arm.com Subject: [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions Date: Tue, 24 Apr 2018 19:12:47 +0100 [thread overview] Message-ID: <1524593567-5559-6-git-send-email-ayan.halder@arm.com> (raw) In-Reply-To: <1524593567-5559-1-git-send-email-ayan.halder@arm.com> 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 <ayan.halder@arm.com> --- Changes in v3:- - Rebased on top of earlier v3 patches, 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 82221ea..c53b46a 100644 --- a/drivers/gpu/drm/arm/malidp_drv.c +++ b/drivers/gpu/drm/arm/malidp_drv.c @@ -768,8 +768,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) }; -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-04-24 18:13 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-24 18:12 [PATCH v3 0/5] Enhance support for system and runtime power management on malidp Ayan Kumar Halder 2018-04-24 18:12 ` [PATCH v3 1/5] drm/arm/malidp: Modified the prototype of malidp irq de-initializers Ayan Kumar Halder 2018-04-24 18:12 ` Ayan Kumar Halder 2018-04-24 18:12 ` [PATCH v3 2/5] drm/arm/malidp: Split malidp interrupt initialization functions Ayan Kumar Halder 2018-04-24 18:12 ` Ayan Kumar Halder 2018-04-24 18:12 ` [PATCH v3 3/5] drm/arm/malidp: Enable/disable interrupts in runtime pm Ayan Kumar Halder 2018-04-24 18:12 ` Ayan Kumar Halder 2018-04-24 18:12 ` [PATCH v3 4/5] drm/arm/malidp: Set the output_depth register in modeset Ayan Kumar Halder 2018-04-24 18:12 ` Ayan Kumar Halder 2018-04-24 18:12 ` Ayan Kumar Halder [this message] 2018-04-24 18:12 ` [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions Ayan Kumar Halder 2018-04-25 7:17 ` Daniel Vetter 2018-04-25 7:17 ` Daniel Vetter 2018-04-25 11:26 ` Liviu Dudau 2018-04-25 11:26 ` Liviu Dudau 2018-04-25 11:49 ` Daniel Vetter 2018-04-25 11:49 ` Daniel Vetter 2018-05-14 10:01 ` Ayan Halder 2018-05-14 10:01 ` Ayan Halder 2018-05-15 9:50 ` Rafael J. Wysocki 2018-05-15 9:50 ` Rafael J. Wysocki 2018-05-15 16:04 [PATCH v3 0/5] Enhance support for system and runtime power management on malidp Ayan Kumar Halder 2018-05-15 16:04 ` [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions Ayan Kumar Halder 2018-05-15 16:04 ` Ayan Kumar Halder 2018-05-16 10:38 ` Rafael J. Wysocki 2018-05-16 10:38 ` Rafael J. Wysocki
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: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1524593567-5559-6-git-send-email-ayan.halder@arm.com \ --to=ayan.halder@arm.com \ --cc=airlied@linux.ie \ --cc=brian.starkey@arm.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=linux-kernel@vger.kernel.org \ --cc=liviu.dudau@arm.com \ --cc=malidp@foss.arm.com \ --cc=nd@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.