From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752505AbeEPKi4 (ORCPT ); Wed, 16 May 2018 06:38:56 -0400 Received: from mail-ot0-f196.google.com ([74.125.82.196]:35115 "EHLO mail-ot0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752015AbeEPKiz (ORCPT ); Wed, 16 May 2018 06:38:55 -0400 X-Google-Smtp-Source: AB8JxZrqDuDwXe0hfGXYpRlyK9bjDNSS6eQZz+h6cQTm1wNJSDtmbNeUWN7qNCB/0Vh3q2aP2CVz0mAWcHewerqV8ZE= MIME-Version: 1.0 In-Reply-To: <1526400259-7573-6-git-send-email-ayan.halder@arm.com> References: <1526400259-7573-1-git-send-email-ayan.halder@arm.com> <1526400259-7573-6-git-send-email-ayan.halder@arm.com> From: "Rafael J. Wysocki" Date: Wed, 16 May 2018 12:38:54 +0200 X-Google-Sender-Auth: 6WvFpTBQ6IbAiB549rT5doxsOzc Message-ID: Subject: Re: [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions To: Ayan Kumar Halder Cc: liviu.dudau@arm.com, Brian Starkey , malidp@foss.arm.com, David Airlie , dri-devel , Linux PM , Linux Kernel Mailing List , nd@arm.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 15, 2018 at 6:04 PM, Ayan Kumar Halder wrote: > 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 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) > }; > > -- AFAICS, this should work, so please feel free to add Reviewed-by: Rafael J. Wysocki to it if that helps. From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Rafael J. Wysocki" Subject: Re: [PATCH v3 5/5] drm/arm/malidp: Added the late system pm functions Date: Wed, 16 May 2018 12:38:54 +0200 Message-ID: References: <1526400259-7573-1-git-send-email-ayan.halder@arm.com> <1526400259-7573-6-git-send-email-ayan.halder@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526400259-7573-6-git-send-email-ayan.halder@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ayan Kumar Halder Cc: Linux PM , David Airlie , liviu.dudau@arm.com, Linux Kernel Mailing List , dri-devel , malidp@foss.arm.com, nd@arm.com List-Id: linux-pm@vger.kernel.org T24gVHVlLCBNYXkgMTUsIDIwMTggYXQgNjowNCBQTSwgQXlhbiBLdW1hciBIYWxkZXIgPGF5YW4u aGFsZGVyQGFybS5jb20+IHdyb3RlOgo+IG1hbGlkcF9wbV9zdXNwZW5kX2xhdGUgY2hlY2tzIGlm IHRoZSBydW50aW1lIHN0YXR1cyBpcyBub3Qgc3VzcGVuZGVkCj4gYW5kIGlmIHNvLCBpbnZva2Vz IG1hbGlkcF9ydW50aW1lX3BtX3N1c3BlbmQgd2hpY2ggZGlzYWJsZXMgdGhlCj4gZGlzcGxheSBl bmdpbmUvY29yZSBpbnRlcnJ1cHRzIGFuZCB0aGUgY2xvY2tzLiBJdCBzZXRzIHRoZSBydW50aW1l IHN0YXR1cwo+IGFzIHN1c3BlbmRlZC4KPgo+IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3VzcGVu ZCgpIGFuZCBzdXNwZW5kX2xhdGUoKSBpcyBhcyBmb2xsb3dzOi0KPiAxLiBzdXNwZW5kKCkgbWFr ZXMgdGhlIGRldmljZSBxdWllc2NlbnQuIEluIG91ciBjYXNlLCB3ZSBpbnZva2UgdGhlIERSTQo+ IGhlbHBlciB3aGljaCBkaXNhYmxlcyB0aGUgQ1JUQy4gVGhpcyB3b3VsZCBoYXZlIGludm9rZWQg cnVudGltZSBwbQo+IHN1c3BlbmQgYnV0IHRoZSBzeXN0ZW0gc3VzcGVuZCBwcm9jZXNzIGRpc2Fi bGVzIHJ1bnRpbWUgcG0uCj4gMi4gc3VzcGVuZF9sYXRlKCkgSXQgY29udGludWVzIHRoZSBzdXNw ZW5kIG9wZXJhdGlvbnMgb2YgdGhlIGRybSBkZXZpY2UKPiB3aGljaCB3YXMgc3RhcnRlZCBieSBz dXNwZW5kKCkuIEluIG91ciBjYXNlLCBpdCBwZXJmb3JtcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5 Cj4gYXMgcnVudGltZV9zdXNwZW5kKCkuCj4KPiBUaGUgY29tcGxpbWVudGFyeSBmdW5jdGlvbnMg YXJlIHJlc3VtZSgpIGFuZCByZXN1bWVfZWFybHkoKS4gSW4gdGhlIGNhc2Ugb2YKPiByZXN1bWVf ZWFybHkoKSwgd2UgaW52b2tlIG1hbGlkcF9ydW50aW1lX3BtX3Jlc3VtZSgpIHdoaWNoIGVuYWJs ZXMgdGhlIGNsb2Nrcwo+IGFuZCB0aGUgaW50ZXJydXB0cy4gSXQgc2V0cyB0aGUgcnVudGltZSBz dGF0dXMgYXMgYWN0aXZlLiBJZiB0aGUgZGV2aWNlIHdhcwo+IGluIHJ1bnRpbWUgc3VzcGVuZCBt b2RlIGJlZm9yZSBzeXN0ZW0gc3VzcGVuZCB3YXMgY2FsbGVkLCBwbV9ydW50aW1lX3dvcmsoKQo+ IHdpbGwgcHV0IHRoZSBkZXZpY2UgYmFjayBpbiBydW50aW1lIHN1c3BlbmRlZCBtb2RlKCBhZnRl ciB0aGUgY29tcGxldGUgc3lzdGVtCj4gaGFzIGJlZW4gcmVzdW1lZCkuCj4KPiBTaWduZWQtb2Zm LWJ5OiBBeWFuIEt1bWFyIEhhbGRlciA8YXlhbi5oYWxkZXJAYXJtLmNvbT4KPgo+IC0tLQo+IENo YW5nZXMgaW4gdjM6LQo+IC0gUmViYXNlZCBvbiB0b3Agb2YgZWFybGllciB2MyBwYXRjaGVzLAo+ Cj4gQ2hhbmdlcyBpbiB2MjotCj4gLSBSZW1vdmVkIHRoZSBjaGFuZ2UgaWQgYW5kIG1vZGlmaWVk IHRoZSBjb21taXQgbWVzc2FnZQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9k cnYuYyB8IDE3ICsrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRp b25zKCspCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYwo+IGluZGV4IDgyMjIxZWEuLmM1M2I0 NmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9kcnYuYwo+IEBAIC03NjgsOCArNzY4LDI1IEBA IHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgbWFsaWRwX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gK3N0YXRpYyBpbnQgX19tYXliZV91 bnVzZWQgbWFsaWRwX3BtX3N1c3BlbmRfbGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiAr ICAgICAgIGlmICghcG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKGRldikpIHsKPiArICAgICAg ICAgICAgICAgbWFsaWRwX3J1bnRpbWVfcG1fc3VzcGVuZChkZXYpOwo+ICsgICAgICAgICAgICAg ICBwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoZGV2KTsKPiArICAgICAgIH0KPiArICAgICAgIHJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIG1hbGlkcF9wbV9y ZXN1bWVfZWFybHkoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKyAgICAgICBtYWxpZHBfcnVu dGltZV9wbV9yZXN1bWUoZGV2KTsKPiArICAgICAgIHBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYp Owo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2 X3BtX29wcyBtYWxpZHBfcG1fb3BzID0gewo+ICAgICAgICAgU0VUX1NZU1RFTV9TTEVFUF9QTV9P UFMobWFsaWRwX3BtX3N1c3BlbmQsIG1hbGlkcF9wbV9yZXN1bWUpIFwKPiArICAgICAgIFNFVF9M QVRFX1NZU1RFTV9TTEVFUF9QTV9PUFMobWFsaWRwX3BtX3N1c3BlbmRfbGF0ZSwgbWFsaWRwX3Bt X3Jlc3VtZV9lYXJseSkgXAo+ICAgICAgICAgU0VUX1JVTlRJTUVfUE1fT1BTKG1hbGlkcF9ydW50 aW1lX3BtX3N1c3BlbmQsIG1hbGlkcF9ydW50aW1lX3BtX3Jlc3VtZSwgTlVMTCkKPiAgfTsKPgo+ IC0tCgpBRkFJQ1MsIHRoaXMgc2hvdWxkIHdvcmssIHNvIHBsZWFzZSBmZWVsIGZyZWUgdG8gYWRk CgpSZXZpZXdlZC1ieTogUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwu Y29tPgoKdG8gaXQgaWYgdGhhdCBoZWxwcy4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==