From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [RFC PATCH 7/9] drm/rockchip: force enable vop when do mode setting Date: Thu, 03 Dec 2015 09:54:56 +0800 Message-ID: <565FA0F0.1030306@rock-chips.com> References: <1448940391-23333-1-git-send-email-mark.yao@rock-chips.com> <1448940721-23488-1-git-send-email-mark.yao@rock-chips.com> <20151202165536.GA14019@ulmo> <20151202221710.GB10243@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20151202221710.GB10243@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxNeW5tDEy5pyIMDPml6UgMDY6MTcsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gV2Vk LCBEZWMgMDIsIDIwMTUgYXQgMDU6NTU6MzZQTSArMDEwMCwgVGhpZXJyeSBSZWRpbmcgd3JvdGU6 Cj4+IE9uIFR1ZSwgRGVjIDAxLCAyMDE1IGF0IDExOjMyOjAxQU0gKzA4MDAsIE1hcmsgWWFvIHdy b3RlOgo+Pj4gV2hlbiBkbyBtb2RlIHNldHRpbmcsIG1lYW4gdGhhdCB3ZSB3YW50IHRvIGVuYWJs ZSBkaXNwbGF5IG91dHB1dCwKPj4+IGJ1dCBzb21ldGltZXMsIHZvcF9jcnRjX2VuYWJsZSBpcyBh ZnRlciBtb2RlX3NldCwgd2UgY2FuJ3QgYWxsb3cKPj4+IHRoYXQsIHNvIGZvcmNlIGVuYWJsZSB2 b3AgaW4gbW9kZSBzZXR0aW5nLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IE1hcmsgWWFvIDxtYXJr Lnlhb0Byb2NrLWNoaXBzLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgICAgMSArCj4+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuYwo+Pj4gaW5kZXggYzY1YjQ1NC4uN2MwNzUzNyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4+IEBAIC0xMTEwLDYgKzExMTAs NyBAQCBzdGF0aWMgdm9pZCB2b3BfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPj4+ICAgCXUxNiB2YWN0X2VuZCA9IHZhY3Rfc3QgKyB2ZGlzcGxheTsKPj4+ICAgCXVp bnQzMl90IHZhbDsKPj4+ICAgCj4+PiArCXZvcF9jcnRjX2VuYWJsZShjcnRjKTsKPj4+ICAgCS8q Cj4+PiAgIAkgKiBJZiBkY2xrIHJhdGUgaXMgemVybywgbWVhbiB0aGF0IHNjYW5vdXQgaXMgc3Rv cCwKPj4+ICAgCSAqIHdlIGRvbid0IG5lZWQgd2FpdCBhbnkgbW9yZS4KPj4gSGF2ZSB5b3UgY29u c2lkZXJlZCBzaW1wbHkgbW92aW5nIGV2ZXJ5dGhpbmcgaW50byAtPmVuYWJsZSgpPyBUaGF0J3MK Pj4gd2hhdCBJIGRpZCBmb3IgVGVncmEsIGZvciBtdWNoIHRoZSBzYW1lIHJlYXNvbnMgdGhhdCB5 b3UgZ2F2ZSBpbiB0aGUKPj4gY29tbWl0IG1lc3NhZ2UuIERvaW5nIHNvIGdpdmVzIHlvdSBhIG11 Y2ggc2ltcGxlciBjYWxsIGdyYXBoLiBSZWFsbHkKPj4gdGhlIG9ubHkgdGhpbmcgeW91IG5lZWQg dG8gZG8gaXMgbW92ZSBhcm91bmQgdGhlIGNvZGUsIGFuZCBwZXJoYXBzIGEKPj4gZGlmZmVyZW50 IHdheSB0byBnZXQgYWhvbGQgb2YgdGhlIGRpc3BsYXkgbW9kZSwgYnV0IHlvdSBjYW4gdXNlIHRo ZQo+PiBUZWdyYSBkcml2ZXIgYXMgYSByZWZlcmVuY2UgZm9yIGhvdyB0byBkbyB0aGF0Lgo+IFll YWggaWYgd3JpdGluZyBtb2RlIHJlbGF0ZWQgcmVnaXN0ZXJzIHJlcXVpcmVzIHRoZSB0aGluZyB0 byBiZSBvbiBvbiB5b3VyCj4gaHcgdGhlbiB5b3UgY2FuJ3QgdXNlIHRoZSAtPm1vZGVfc2V0IGhv b2tzLiBUaG9zZSBhcmUgZXhwbGljaXRseSBjYWxsZWQKPiB3aGVuIGV2ZXJ5dGhpbmcgaXMgb2Zm IChub3QganVzdCBzb21ldGltZXMsIGF0IGxlYXN0IHdpdGggYXRvbWljIGhlbHBlcnMpLgo+Cj4g TGlrZSBUaGllcnJ5IHNhaWQgdGhlIHJlY29tbWVuZGF0aW9uIGlzIHRvIGp1c3Qgc2hvdmVsIHRo YXQgY29kZSBpbnRvCj4gLT5lbmFibGUgaG9va3MuIC0+bW9kZV9zZXRfbm9mYiBpcyBtb3N0bHkg dGhlcmUgdG8gc3VwcG9ydCBlYXNpZXIKPiB0cmFuc2l0aW9uIGZvciBkcml2ZXJzIHdoaWNoIHN0 YXJ0ZWQgd2l0aCB0aGUgbGVnYWN5IGNydGMgaGVscGVycy4KPiAtRGFuaWVsCgpHb29kLCB0aGFu a3MsIGFjdHVhbGx5IGl0IHNvbHZlIG15IGNvbmZ1c2lvbi4KCi0tIArvvK1hcmsgWWFvCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Thu, 03 Dec 2015 09:54:56 +0800 Subject: [RFC PATCH 7/9] drm/rockchip: force enable vop when do mode setting In-Reply-To: <20151202221710.GB10243@phenom.ffwll.local> References: <1448940391-23333-1-git-send-email-mark.yao@rock-chips.com> <1448940721-23488-1-git-send-email-mark.yao@rock-chips.com> <20151202165536.GA14019@ulmo> <20151202221710.GB10243@phenom.ffwll.local> Message-ID: <565FA0F0.1030306@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2015?12?03? 06:17, Daniel Vetter wrote: > On Wed, Dec 02, 2015 at 05:55:36PM +0100, Thierry Reding wrote: >> On Tue, Dec 01, 2015 at 11:32:01AM +0800, Mark Yao wrote: >>> When do mode setting, mean that we want to enable display output, >>> but sometimes, vop_crtc_enable is after mode_set, we can't allow >>> that, so force enable vop in mode setting. >>> >>> Signed-off-by: Mark Yao >>> --- >>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> index c65b454..7c07537 100644 >>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> @@ -1110,6 +1110,7 @@ static void vop_crtc_mode_set_nofb(struct drm_crtc *crtc) >>> u16 vact_end = vact_st + vdisplay; >>> uint32_t val; >>> >>> + vop_crtc_enable(crtc); >>> /* >>> * If dclk rate is zero, mean that scanout is stop, >>> * we don't need wait any more. >> Have you considered simply moving everything into ->enable()? That's >> what I did for Tegra, for much the same reasons that you gave in the >> commit message. Doing so gives you a much simpler call graph. Really >> the only thing you need to do is move around the code, and perhaps a >> different way to get ahold of the display mode, but you can use the >> Tegra driver as a reference for how to do that. > Yeah if writing mode related registers requires the thing to be on on your > hw then you can't use the ->mode_set hooks. Those are explicitly called > when everything is off (not just sometimes, at least with atomic helpers). > > Like Thierry said the recommendation is to just shovel that code into > ->enable hooks. ->mode_set_nofb is mostly there to support easier > transition for drivers which started with the legacy crtc helpers. > -Daniel Good, thanks, actually it solve my confusion. -- ?ark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758026AbbLCBzL (ORCPT ); Wed, 2 Dec 2015 20:55:11 -0500 Received: from regular1.263xmail.com ([211.150.99.134]:58260 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756467AbbLCBzJ (ORCPT ); Wed, 2 Dec 2015 20:55:09 -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: linux-arm-kernel@lists.infradead.org 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: <565FA0F0.1030306@rock-chips.com> Date: Thu, 03 Dec 2015 09:54:56 +0800 From: Mark yao User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Thierry Reding , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: Re: [RFC PATCH 7/9] drm/rockchip: force enable vop when do mode setting References: <1448940391-23333-1-git-send-email-mark.yao@rock-chips.com> <1448940721-23488-1-git-send-email-mark.yao@rock-chips.com> <20151202165536.GA14019@ulmo> <20151202221710.GB10243@phenom.ffwll.local> In-Reply-To: <20151202221710.GB10243@phenom.ffwll.local> 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年12月03日 06:17, Daniel Vetter wrote: > On Wed, Dec 02, 2015 at 05:55:36PM +0100, Thierry Reding wrote: >> On Tue, Dec 01, 2015 at 11:32:01AM +0800, Mark Yao wrote: >>> When do mode setting, mean that we want to enable display output, >>> but sometimes, vop_crtc_enable is after mode_set, we can't allow >>> that, so force enable vop in mode setting. >>> >>> Signed-off-by: Mark Yao >>> --- >>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> index c65b454..7c07537 100644 >>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>> @@ -1110,6 +1110,7 @@ static void vop_crtc_mode_set_nofb(struct drm_crtc *crtc) >>> u16 vact_end = vact_st + vdisplay; >>> uint32_t val; >>> >>> + vop_crtc_enable(crtc); >>> /* >>> * If dclk rate is zero, mean that scanout is stop, >>> * we don't need wait any more. >> Have you considered simply moving everything into ->enable()? That's >> what I did for Tegra, for much the same reasons that you gave in the >> commit message. Doing so gives you a much simpler call graph. Really >> the only thing you need to do is move around the code, and perhaps a >> different way to get ahold of the display mode, but you can use the >> Tegra driver as a reference for how to do that. > Yeah if writing mode related registers requires the thing to be on on your > hw then you can't use the ->mode_set hooks. Those are explicitly called > when everything is off (not just sometimes, at least with atomic helpers). > > Like Thierry said the recommendation is to just shovel that code into > ->enable hooks. ->mode_set_nofb is mostly there to support easier > transition for drivers which started with the legacy crtc helpers. > -Daniel Good, thanks, actually it solve my confusion. -- Mark Yao