From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH] drm/rockchip: vop: power off until vop standby take effect Date: Mon, 02 Feb 2015 08:45:04 +0800 Message-ID: <54CEC890.8040701@rock-chips.com> References: <1422693698-21944-1-git-send-email-mark.yao@rock-chips.com> <26349423.KqVQYq280G@diego> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from regular1.263xmail.com (regular1.263xmail.com [211.150.99.138]) by gabe.freedesktop.org (Postfix) with ESMTP id 7A09489F33 for ; Sun, 1 Feb 2015 16:45:07 -0800 (PST) In-Reply-To: <26349423.KqVQYq280G@diego> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?B?SGVpa28gU3TDvGJuZXI=?= , dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxNeW5tDAx5pyIMzHml6UgMjA6NDksIEhlaWtvIFN0w7xibmVyIHdyb3RlOgo+IEhpIE1h cmssCj4KPiBBbSBTYW1zdGFnLCAzMS4gSmFudWFyIDIwMTUsIDE2OjQxOjM4IHNjaHJpZWIgTWFy ayBZYW86Cj4+IFZvcCBzdGFuZGJ5IHdpbGwgdGFrZSBlZmZlY3QgZW5kIG9mIGN1cnJlbnQgZnJh bWUsCj4+IGlmIGRzcF9ob2xkX3ZhbGlkX2lycSBoYXBwZW4sIGl0IG1lYW5zIHZvcCBzdGFuZGJ5 IGNvbXBsZXRlLgo+Pgo+PiB3ZSBtdXN0IHdhaXQgc3RhbmRieSBjb21wbGV0ZSB3aGVuIHdlIHdh bnQgdG8gZGlzYWJsZSBhY2xrLAo+PiBpZiBub3QsIG1lbW9yeSBidXMgbWF5YmUgZGVhZC4KPj4K Pj4gU2lnbmVkLW9mZi1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29tPgo+PiAt LS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgICA3 Ngo+PiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0gMSBmaWxlIGNoYW5nZWQsIDYzIGluc2Vy dGlvbnMoKyksIDEzCj4+IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgaW5kZXggZmIyNTgzNi4uNDdlYTYxZiAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+IEBAIC04 OSw2ICs4OSw3IEBAIHN0cnVjdCB2b3Agewo+PiAgIAkvKiBtdXRleCB2c3luY18gd29yayAqLwo+ PiAgIAlzdHJ1Y3QgbXV0ZXggdnN5bmNfbXV0ZXg7Cj4+ICAgCWJvb2wgdnN5bmNfd29ya19wZW5k aW5nOwo+PiArCXN0cnVjdCBjb21wbGV0aW9uIGRzcF9ob2xkX2NvbXBsZXRpb247Cj4+Cj4+ICAg CWNvbnN0IHN0cnVjdCB2b3BfZGF0YSAqZGF0YTsKPj4KPj4gQEAgLTM4Miw2ICszODMsMzQgQEAg c3RhdGljIGJvb2wgaXNfYWxwaGFfc3VwcG9ydCh1aW50MzJfdCBmb3JtYXQpCj4+ICAgCX0KPj4g ICB9Cj4+Cj4+ICtzdGF0aWMgdm9pZCB2b3BfZHNwX2hvbGRfdmFsaWRfaXJxX2VuYWJsZShzdHJ1 Y3Qgdm9wICp2b3ApCj4+ICt7Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwo+PiArCUJV R19PTighdm9wLT5pc19lbmFibGVkKTsKPiBCVUdfT04gaXMgZ2VuZXJhbGx5IG5vdCB3ZWxsIGxp a2VkIGluIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcgLSBpLmUuIGluIHRoZQo+IAkgIXZvcC0+aXNf ZW5hYmxlZAo+IGJhZCB0aGluZ3MgbWF5IGhhcHBlbiwgYnV0IHRoaXMgbWF5IG5vdCBhbHdheXMg YmUgdGhlIGNhc2UuIEFuZCBCVUdfT04KPiBlZmZlY3RpdmVseSBraWxscyB0aGUgbWFjaGluZS4K Pgo+IFlvdSBjb3VsZCBzaW1wbHkgdXNlIGEgV0FSTl9PTiwgc28gcGVvcGxlIHNlZSB0aGF0IHNv bWV0aGluZyByZWFsbHkgc3RyYW5nZSBpcwo+IGdvaW5nIG9uIGJ1dCBjYW4gc3RpbGwgdHJ5IHRv IHJlY292ZXIgdGhpbmdzLgpSaWdodCwgZ290IGl0Lgo+Cj4+ICsKPj4gKwlzcGluX2xvY2tfaXJx c2F2ZSgmdm9wLT5pcnFfbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJdm9wX21hc2tfd3JpdGUodm9w LCBJTlRSX0NUUkwwLCBEU1BfSE9MRF9WQUxJRF9JTlRSX01BU0ssCj4+ICsJCSAgICAgICBEU1Bf SE9MRF9WQUxJRF9JTlRSX0VOKDEpKTsKPj4gKwo+PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdm9wX2Rz cF9ob2xkX3ZhbGlkX2lycV9kaXNhYmxlKHN0cnVjdCB2b3AgKnZvcCkKPj4gK3sKPj4gKwl1bnNp Z25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsJQlVHX09OKCF2b3AtPmlzX2VuYWJsZWQpOwo+IHNh bWUgaGVyZQo+Cj4+ICsKPj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdm9wLT5pcnFfbG9jaywgZmxh Z3MpOwo+PiArCj4+ICsJdm9wX21hc2tfd3JpdGUodm9wLCBJTlRSX0NUUkwwLCBEU1BfSE9MRF9W QUxJRF9JTlRSX01BU0ssCj4+ICsJCSAgICAgICBEU1BfSE9MRF9WQUxJRF9JTlRSX0VOKDApKTsK Pj4gKwo+PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsK Pj4gK30KPj4gKwo+PiAgIHN0YXRpYyB2b2lkIHZvcF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+PiAgIHsKPj4gICAJc3RydWN0IHZvcCAqdm9wID0gdG9fdm9wKGNydGMpOwo+Cj4gZXhj ZXB0IHRoZSBhYm92ZQo+IFJldmlld2VkLWJ5OiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNo LmRlPgo+Cj4gW2J1dCB0YWtlIGl0IHdpdGggYSBncmFpbiBvZiBzYWx0LCBhcyBJJ20gc3RpbGwg bmV3IHRvIGRybS1sYW5kIDotKSBdCkdvb2QsIEkgc2F3IHlvdXIgZHJtIHBhdGNoZXMsIEknbSBp bnRlcmVzdGVkIGluIHRob3NlLCB2ZXJ5IGdvb2QuCgpNYXJrCj4KPiBIZWlrbwo+Cj4KPgoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753027AbbBBApS (ORCPT ); Sun, 1 Feb 2015 19:45:18 -0500 Received: from regular1.263xmail.com ([211.150.99.138]:39833 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751805AbbBBApL (ORCPT ); Sun, 1 Feb 2015 19:45:11 -0500 X-263anti-spam: KSV:0;BIG:0;ABS:1;DNS:0;ATT:0;SPF:S; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED: 0 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: heiko@sntech.de X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <54CEC890.8040701@rock-chips.com> Date: Mon, 02 Feb 2015 08:45:04 +0800 From: Mark yao User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: =?UTF-8?B?SGVpa28gU3TDvGJuZXI=?= , dri-devel@lists.freedesktop.org CC: David Airlie , Daniel Vetter , Rob Clark , Philipp Zabel , Daniel Kurtz , linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org Subject: Re: [PATCH] drm/rockchip: vop: power off until vop standby take effect References: <1422693698-21944-1-git-send-email-mark.yao@rock-chips.com> <26349423.KqVQYq280G@diego> In-Reply-To: <26349423.KqVQYq280G@diego> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2015年01月31日 20:49, Heiko Stübner wrote: > Hi Mark, > > Am Samstag, 31. Januar 2015, 16:41:38 schrieb Mark Yao: >> Vop standby will take effect end of current frame, >> if dsp_hold_valid_irq happen, it means vop standby complete. >> >> we must wait standby complete when we want to disable aclk, >> if not, memory bus maybe dead. >> >> Signed-off-by: Mark Yao >> --- >> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 76 >> ++++++++++++++++++++++----- 1 file changed, 63 insertions(+), 13 >> deletions(-) >> >> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index fb25836..47ea61f 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >> @@ -89,6 +89,7 @@ struct vop { >> /* mutex vsync_ work */ >> struct mutex vsync_mutex; >> bool vsync_work_pending; >> + struct completion dsp_hold_completion; >> >> const struct vop_data *data; >> >> @@ -382,6 +383,34 @@ static bool is_alpha_support(uint32_t format) >> } >> } >> >> +static void vop_dsp_hold_valid_irq_enable(struct vop *vop) >> +{ >> + unsigned long flags; >> + >> + BUG_ON(!vop->is_enabled); > BUG_ON is generally not well liked in general error handling - i.e. in the > !vop->is_enabled > bad things may happen, but this may not always be the case. And BUG_ON > effectively kills the machine. > > You could simply use a WARN_ON, so people see that something really strange is > going on but can still try to recover things. Right, got it. > >> + >> + spin_lock_irqsave(&vop->irq_lock, flags); >> + >> + vop_mask_write(vop, INTR_CTRL0, DSP_HOLD_VALID_INTR_MASK, >> + DSP_HOLD_VALID_INTR_EN(1)); >> + >> + spin_unlock_irqrestore(&vop->irq_lock, flags); >> +} >> + >> +static void vop_dsp_hold_valid_irq_disable(struct vop *vop) >> +{ >> + unsigned long flags; >> + >> + BUG_ON(!vop->is_enabled); > same here > >> + >> + spin_lock_irqsave(&vop->irq_lock, flags); >> + >> + vop_mask_write(vop, INTR_CTRL0, DSP_HOLD_VALID_INTR_MASK, >> + DSP_HOLD_VALID_INTR_EN(0)); >> + >> + spin_unlock_irqrestore(&vop->irq_lock, flags); >> +} >> + >> static void vop_enable(struct drm_crtc *crtc) >> { >> struct vop *vop = to_vop(crtc); > > except the above > Reviewed-by: Heiko Stuebner > > [but take it with a grain of salt, as I'm still new to drm-land :-) ] Good, I saw your drm patches, I'm interested in those, very good. Mark > > Heiko > > >