From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v2 5/5] drm/rockchip: default enable win2/3 area0 bit Date: Fri, 03 Jul 2015 18:08:31 +0800 Message-ID: <55965F1F.9090301@rock-chips.com> References: <1435313249-4549-1-git-send-email-mark.yao@rock-chips.com> <1435313432-4923-1-git-send-email-mark.yao@rock-chips.com> <5596457F.5090601@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomasz Figa Cc: xw@rock-chips.com, zwl@rock-chips.com, "linux-kernel@vger.kernel.org" , "open list:ARM/Rockchip SoC..." , dri-devel , dkm@rock-chips.com, sandy.huang@rock-chips.com, "linux-arm-kernel@lists.infradead.org" List-Id: linux-rockchip.vger.kernel.org T24gMjAxNeW5tDA35pyIMDPml6UgMTc6MjQsIFRvbWFzeiBGaWdhIHdyb3RlOgo+IE9uIEZyaSwg SnVsIDMsIDIwMTUgYXQgNToxOSBQTSwgTWFyayB5YW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29t PiB3cm90ZToKPj4gT24gMjAxNeW5tDA35pyIMDPml6UgMTY6MDIsIFRvbWFzeiBGaWdhIHdyb3Rl Ogo+Pj4gSGkgTWFyaywKPj4+Cj4+PiBQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGlubGluZS4KPj4+ Cj4+PiBPbiBGcmksIEp1biAyNiwgMjAxNSBhdCA3OjEwIFBNLCBNYXJrIFlhbyA8bWFyay55YW9A cm9jay1jaGlwcy5jb20+IHdyb3RlOgo+Pj4+IFdpbjIvMyBzdXBwb3J0IDQgYXJlYSBkaXNwbGF5 LCBidXQgbm93IGhhdm4ndCBmb3VuZCBhIHN1aXRhYmxlCj4+Pj4gd2F5IHRvIHVzZSBpdCwgYW5k IGl0IGVuYWJsZSBieSB3aW4gZ2F0ZSBhbmQgYXJlYSBnYXRlLAo+Pj4+IHNvIGRlZmF1bHQgZW5h YmxlIGFyZWEwIGdhdGUsIHNvIHRoYXQgaXRzIGJlaGF2aW91ciBqdXN0IGxpa2UgYQo+Pj4+IHdp bi4KPj4+IFNvIEkgYXNzdW1lIHRoaXMgbWVhbnMgdGhhdCBjdXJyZW50bHksIHdpdGhvdXQgdGhv c2UgYml0cyBzZXQsIHdpbjIKPj4+IGFuZCB3aW4zIGRvIG5vdCB3b3JrPyBUaGlzIHdvdWxkIG1h a2UgdGhpcyBwYXRjaCBhIGZpeCBtYXliZSBldmVuIHdpdGgKPj4+IGEgcG90ZW50aWFsIGJhY2tw b3J0YWJpbGl0eS4KPj4KPj4gWWVzLCB3aXRob3V0IHRoaXMgcGF0Y2gsIGFsbCB3aW4yLzMgYXJl YSBnYXRlIGRlZmF1bHQgZGlzYWJsZWQuCj4+IHZvcF91cGRhdGVfcGxhbmVfZXZlbnQgY2FsbCB3 aW4gZW5hYmxlIG9ubHkgZW5hYmxlIHRoZSB3aW4gZ2F0ZS4KPj4KPj4KPj4+PiBTaWduZWQtb2Zm LWJ5OiBNYXJrIFlhbyA8bWFyay55YW9Acm9jay1jaGlwcy5jb20+Cj4+Pj4gLS0tCj4+Pj4gQ2hh bmdlcyBpbiB2MjogTm9uZQo+Pj4+Cj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV92b3AuYyB8ICAgIDYgKysrKysrCj4+Pj4gICAgMSBmaWxlIGNoYW5nZWQsIDYg aW5zZXJ0aW9ucygrKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9kcm1fdm9wLmMKPj4+PiBpbmRleCA0MDEwN2JiLi5lMDAxZDI2IDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4+Pj4gQEAg LTMzNyw2ICszMzcsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfcmVnX2RhdGEKPj4+PiB2 b3BfaW5pdF9yZWdfdGFibGVbXSA9IHsKPj4+PiAgICAgICAgICAge0RTUF9DVFJMMCwgMHgwMDAw MDAwMH0sCj4+Pj4gICAgICAgICAgIHtXSU4wX0NUUkwwLCAweDAwMDAwMDgwfSwKPj4+PiAgICAg ICAgICAge1dJTjFfQ1RSTDAsIDB4MDAwMDAwODB9LAo+Pj4+ICsgICAgICAgLyoKPj4+PiArICAg ICAgICAqIFRvZG86IHdpbjIvMyBzdXBwb3J0IGFyZWEgZnVuYywgYnV0IG5vdyBoYXZuJ3QgZm91 bmQgYQo+Pj4+IHN1aXRhYmxlCj4+Pj4gKyAgICAgICAgKiB3YXkgdG8gdXNlIGl0LCBzbyBkZWZh dWx0IGVuYWJsZSBhcmVhMCBhcyBhIHdpbiBkaXNwbGF5Lgo+Pj4gVE9ETzogV2luMi8zIHN1cHBv cnQgbXVsdGlwbGUgYXJlYSBmdW5jdGlvbiwgYnV0IHdlIGhhdmVuJ3QgZm91bmQKPj4+IGEgc3Vp dGFibGUgd2F5IHRvIHVzZSBpdCB5ZXQsIHNvIGxldCdzIGp1c3QgdXNlIHRoZW0gYXMgb3RoZXIg d2luZG93cwo+Pj4gd2l0aCBvbmx5IGFyZWEgMCBlbmFibGVkLgo+Pj4KPj4+PiArICAgICAgICAq Lwo+Pj4+ICsgICAgICAge1dJTjJfQ1RSTDAsIDB4MDAwMDAwMTB9LAo+Pj4+ICsgICAgICAge1dJ TjNfQ1RSTDAsIDB4MDAwMDAwMTB9LAo+Pj4gQW55d2F5LCBpcyBpdCBlbm91Z2ggdG8gcHJvZ3Jh bSB0aG9zZSByZWdpc3RlcnMgb25lIHRpbWUgaW4KPj4+IHZvcF9pbml0aWFsKCk/IFdvbid0IHRo ZXkgZ2V0IGNsZWFyZWQgd2hlbiBWT1AgaXMgcG93ZXIgY3ljbGVkLCBlLmcuCj4+PiBpbiBjYXNl IG9mIERQTVMgb2ZmIGFuZCBvbj8gTWF5YmUgaW5zdGVhZCB0aGlzIGNvdWxkIGJlIGRvbmUgaW4K Pj4+IHZvcF91cGRhdGVfcGxhbmVfZXZlbnQoKSBmb3Igd2luZG93cyB0aGF0IG5lZWQgaXQ/Cj4+ IFRoZXJlIGFyZSB0d28gZ2F0ZSBmb3IgV2luMi8zLAo+PiBhdCBWT1BfV0lOM19DVFJMMDoKPj4g ICAgICAgICAgYml0WzBdLCAid2luM19lbiIKPj4gICAgICAgICAgICAgIHRoaXMgZ2F0aW5nIGFs bCB0aGUgYXJlYS4KPj4KPj4gICAgICAgICAgYml0WzRdLCB3aW4zX21zdDBfZW4KPj4gICAgICAg ICAgYml0WzVdLCB3aW4zX21zdDFfZW4KPj4gICAgICAgICAgYml0WzZdLCB3aW4zX21zdDJfZW4K Pj4gICAgICAgICAgYml0WzddLCB3aW4zX21zdDNfZW4KPj4gICAgICAgICAgICAgIHRob3NlIGdh dGUgZWFjaCBhcmVhLgo+Pgo+PiBUaGlzIHBhdGNoIGRlZmF1bHQgZW5hYmxlIHdpbjNfbXN0MF9l biwgc28gY29udHJvbCBiaXRbMF0id2luM19lbiIgdGhhdCBjYXQKPj4gcG93ZXIgb24vb2ZmIHRo aXMgd2luZG93Lgo+Pgo+PiB2b3BfdXBkYXRlX3BsYW5lX2V2ZW50KCkvIHZvcF9kaXNhYmxlX3Bs YW5lKCkgb25seSBjYW4gY29udHJvbAo+PiBiaXRbMF0id2luM19lbiIuCj4+Cj4+Cj4+IFNvIHRo aXMgcGF0Y2ggaXMgZW5vdWdoIHRvIGVuYWJsZSB3aW5kb3cyLzMgYXJlYSAwLgo+IFRoYXQncyBy aWdodC4gSG93ZXZlciwgdGhlIHZvcF9pbml0X3JlZ190YWJsZVtdIGlzIG9ubHkgdXNlZCBhdCBw cm9iZQo+IHRpbWUgYnkgdm9wX2luaXRpYWwoKSBhbmQgcmVnaXN0ZXIgc2V0dGluZ3MgbGlzdGVk IHRoZXJlIGFyZSBub3QKPiBhcHBsaWVkIGFueSB0aW1lIGxhdGVyLiBJZiB3ZSBjYWxsIERQTVMg b2ZmLCB3aGljaCB3aWxsIHR1cm4gdGhlIFZPUAo+IG9mZiBhbmQgaW4gdHVybiBhbHNvIHRoZSB3 aG9sZSBwb3dlciBkb21haW4gb2ZmLCB3b24ndCB0aGUgcmVnaXN0ZXJzCj4gYmUgcmVzZXQgdG8g ZGVmYXVsdCB2YWx1ZXMgKGUuZy4gemVyb2VkKT8KUmlnaHQsIHRoZSB2b3AgcmVnaXN0ZXJzIHdv dWxkIGJlIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzIHdoZW4gcG93ZXIgCmRvbWFpbiBvZmYuCgpC dXQgdGhlIGN1cnNvciBjYW4gd29ya3MgYWZ0ZXIgcmVzdW1lLiBiZWNhdXNlIHRoZSBpbml0aWFs IHZhbHVlIHNhdmUgdG8gCnRoZSByZWdiYWsgY2FjaGUsCmFuZCBjdXJzb3IgYXJlYSBnYXRlLCB3 aW4gZ2F0ZSBhcmUgYXQgdGhlIHNhbWUgcmVncywgc28gaXQgY2FuIGJlIApyZXN0b3JlIHdoZW4g ZG8gY3Vyc29yIGVuYWJsZS4KCkJ1dCBpZiB3ZSBhZGQgb3RoZXIgcmVncywgdGhpcyBtYXkgY2F1 c2UgYnVnLCBtYXliZSBubyBvbmUgcmVzdG9yZSB0aGVtLgpTbyBJIHRoaW5rIHdlIG5lZWQgZG8g bGlrZSB1bmRlciB0byBmb3JjZSByZXN0b3JlIGFsbCB0aGUgcmVncyB3aGVuIHJlc3VtZToKICAg ICBtZW1jcHkodm9wLT5yZWdzLCB2b3AtPnJlZ3NiYWssIHZvcC0+bGVuKTsKCj4gQmVzdCByZWdh cmRzLAo+IFRvbWFzego+Cj4KPgoKCi0tIArvvK1hcmsKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Fri, 03 Jul 2015 18:08:31 +0800 Subject: [PATCH v2 5/5] drm/rockchip: default enable win2/3 area0 bit In-Reply-To: References: <1435313249-4549-1-git-send-email-mark.yao@rock-chips.com> <1435313432-4923-1-git-send-email-mark.yao@rock-chips.com> <5596457F.5090601@rock-chips.com> Message-ID: <55965F1F.9090301@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2015?07?03? 17:24, Tomasz Figa wrote: > On Fri, Jul 3, 2015 at 5:19 PM, Mark yao wrote: >> On 2015?07?03? 16:02, Tomasz Figa wrote: >>> Hi Mark, >>> >>> Please see my comments inline. >>> >>> On Fri, Jun 26, 2015 at 7:10 PM, Mark Yao wrote: >>>> Win2/3 support 4 area display, but now havn't found a suitable >>>> way to use it, and it enable by win gate and area gate, >>>> so default enable area0 gate, so that its behaviour just like a >>>> win. >>> So I assume this means that currently, without those bits set, win2 >>> and win3 do not work? This would make this patch a fix maybe even with >>> a potential backportability. >> >> Yes, without this patch, all win2/3 area gate default disabled. >> vop_update_plane_event call win enable only enable the win gate. >> >> >>>> Signed-off-by: Mark Yao >>>> --- >>>> Changes in v2: None >>>> >>>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 ++++++ >>>> 1 file changed, 6 insertions(+) >>>> >>>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> index 40107bb..e001d26 100644 >>>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> @@ -337,6 +337,12 @@ static const struct vop_reg_data >>>> vop_init_reg_table[] = { >>>> {DSP_CTRL0, 0x00000000}, >>>> {WIN0_CTRL0, 0x00000080}, >>>> {WIN1_CTRL0, 0x00000080}, >>>> + /* >>>> + * Todo: win2/3 support area func, but now havn't found a >>>> suitable >>>> + * way to use it, so default enable area0 as a win display. >>> TODO: Win2/3 support multiple area function, but we haven't found >>> a suitable way to use it yet, so let's just use them as other windows >>> with only area 0 enabled. >>> >>>> + */ >>>> + {WIN2_CTRL0, 0x00000010}, >>>> + {WIN3_CTRL0, 0x00000010}, >>> Anyway, is it enough to program those registers one time in >>> vop_initial()? Won't they get cleared when VOP is power cycled, e.g. >>> in case of DPMS off and on? Maybe instead this could be done in >>> vop_update_plane_event() for windows that need it? >> There are two gate for Win2/3, >> at VOP_WIN3_CTRL0: >> bit[0], "win3_en" >> this gating all the area. >> >> bit[4], win3_mst0_en >> bit[5], win3_mst1_en >> bit[6], win3_mst2_en >> bit[7], win3_mst3_en >> those gate each area. >> >> This patch default enable win3_mst0_en, so control bit[0]"win3_en" that cat >> power on/off this window. >> >> vop_update_plane_event()/ vop_disable_plane() only can control >> bit[0]"win3_en". >> >> >> So this patch is enough to enable window2/3 area 0. > That's right. However, the vop_init_reg_table[] is only used at probe > time by vop_initial() and register settings listed there are not > applied any time later. If we call DPMS off, which will turn the VOP > off and in turn also the whole power domain off, won't the registers > be reset to default values (e.g. zeroed)? Right, the vop registers would be reset to default values when power domain off. But the cursor can works after resume. because the initial value save to the regbak cache, and cursor area gate, win gate are at the same regs, so it can be restore when do cursor enable. But if we add other regs, this may cause bug, maybe no one restore them. So I think we need do like under to force restore all the regs when resume: memcpy(vop->regs, vop->regsbak, vop->len); > Best regards, > Tomasz > > > -- ?ark From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754661AbbGCKIt (ORCPT ); Fri, 3 Jul 2015 06:08:49 -0400 Received: from regular1.263xmail.com ([211.150.99.137]:34098 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754789AbbGCKIl (ORCPT ); Fri, 3 Jul 2015 06:08:41 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: tfiga@chromium.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <3ba013b43514d1be55561978926b6bc4> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <55965F1F.9090301@rock-chips.com> Date: Fri, 03 Jul 2015 18:08:31 +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: Tomasz Figa CC: dri-devel , David Airlie , Heiko Stuebner , Daniel Kurtz , Philipp Zabel , Daniel Vetter , Rob Clark , "linux-arm-kernel@lists.infradead.org" , "open list:ARM/Rockchip SoC..." , "linux-kernel@vger.kernel.org" , sandy.huang@rock-chips.com, dkm@rock-chips.com, zwl@rock-chips.com, xw@rock-chips.com Subject: Re: [PATCH v2 5/5] drm/rockchip: default enable win2/3 area0 bit References: <1435313249-4549-1-git-send-email-mark.yao@rock-chips.com> <1435313432-4923-1-git-send-email-mark.yao@rock-chips.com> <5596457F.5090601@rock-chips.com> In-Reply-To: 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年07月03日 17:24, Tomasz Figa wrote: > On Fri, Jul 3, 2015 at 5:19 PM, Mark yao wrote: >> On 2015年07月03日 16:02, Tomasz Figa wrote: >>> Hi Mark, >>> >>> Please see my comments inline. >>> >>> On Fri, Jun 26, 2015 at 7:10 PM, Mark Yao wrote: >>>> Win2/3 support 4 area display, but now havn't found a suitable >>>> way to use it, and it enable by win gate and area gate, >>>> so default enable area0 gate, so that its behaviour just like a >>>> win. >>> So I assume this means that currently, without those bits set, win2 >>> and win3 do not work? This would make this patch a fix maybe even with >>> a potential backportability. >> >> Yes, without this patch, all win2/3 area gate default disabled. >> vop_update_plane_event call win enable only enable the win gate. >> >> >>>> Signed-off-by: Mark Yao >>>> --- >>>> Changes in v2: None >>>> >>>> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 ++++++ >>>> 1 file changed, 6 insertions(+) >>>> >>>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> index 40107bb..e001d26 100644 >>>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c >>>> @@ -337,6 +337,12 @@ static const struct vop_reg_data >>>> vop_init_reg_table[] = { >>>> {DSP_CTRL0, 0x00000000}, >>>> {WIN0_CTRL0, 0x00000080}, >>>> {WIN1_CTRL0, 0x00000080}, >>>> + /* >>>> + * Todo: win2/3 support area func, but now havn't found a >>>> suitable >>>> + * way to use it, so default enable area0 as a win display. >>> TODO: Win2/3 support multiple area function, but we haven't found >>> a suitable way to use it yet, so let's just use them as other windows >>> with only area 0 enabled. >>> >>>> + */ >>>> + {WIN2_CTRL0, 0x00000010}, >>>> + {WIN3_CTRL0, 0x00000010}, >>> Anyway, is it enough to program those registers one time in >>> vop_initial()? Won't they get cleared when VOP is power cycled, e.g. >>> in case of DPMS off and on? Maybe instead this could be done in >>> vop_update_plane_event() for windows that need it? >> There are two gate for Win2/3, >> at VOP_WIN3_CTRL0: >> bit[0], "win3_en" >> this gating all the area. >> >> bit[4], win3_mst0_en >> bit[5], win3_mst1_en >> bit[6], win3_mst2_en >> bit[7], win3_mst3_en >> those gate each area. >> >> This patch default enable win3_mst0_en, so control bit[0]"win3_en" that cat >> power on/off this window. >> >> vop_update_plane_event()/ vop_disable_plane() only can control >> bit[0]"win3_en". >> >> >> So this patch is enough to enable window2/3 area 0. > That's right. However, the vop_init_reg_table[] is only used at probe > time by vop_initial() and register settings listed there are not > applied any time later. If we call DPMS off, which will turn the VOP > off and in turn also the whole power domain off, won't the registers > be reset to default values (e.g. zeroed)? Right, the vop registers would be reset to default values when power domain off. But the cursor can works after resume. because the initial value save to the regbak cache, and cursor area gate, win gate are at the same regs, so it can be restore when do cursor enable. But if we add other regs, this may cause bug, maybe no one restore them. So I think we need do like under to force restore all the regs when resume: memcpy(vop->regs, vop->regsbak, vop->len); > Best regards, > Tomasz > > > -- Mark