From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v5 1/7] drm/rockchip: vop: initialize registers directly Date: Wed, 26 Jul 2017 08:59:10 +0800 Message-ID: <5977E95E.1040700@rock-chips.com> References: <1500518564-30371-1-git-send-email-mark.yao@rock-chips.com> <1500518603-30486-1-git-send-email-mark.yao@rock-chips.com> <3165793.eZGRgZzZRy@phil> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <3165793.eZGRgZzZRy@phil> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Heiko Stuebner , linux-arm-kernel@lists.infradead.org Cc: linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxN+W5tDA35pyIMjbml6UgMDY6MzYsIEhlaWtvIFN0dWVibmVyIHdyb3RlOgo+IEhpIE1h cmssCj4KPiBBbSBEb25uZXJzdGFnLCAyMC4gSnVsaSAyMDE3LCAxMDo0MzoyMiBDRVNUIHNjaHJp ZWIgTWFyayBZYW86Cj4+IEF0IHByZXNlbnQgd2UgYXJlIHVzaW5nIGluaXRfdGFibGUgdG8gaW5p dGlhbGl6ZSBzb21lCj4+IHJlZ2lzdGVycywgYnV0IHRoZSBSZWdpc3RlciBpbml0IHRhYmxlIHVz ZSB1bi1kb2N1bWVudCBkZWZpbmUsCj4+IGl0IGlzIHVucmVhZGFibGUsIGFuZCBzb21ldGltZXMg d2Ugb25seSB3YW50IHRvIHVwZGF0ZSB0aW55Cj4+IGJpdHMsIGluaXQgdGFibGUgbWV0aG9kIGlz IG5vdCBmcmllbmRseSwgaXQncyBkaWZmY3VsdCB0bwo+PiByZXVzZSBmb3IgZGlmZmVyZW5jZSBj aGlwcy4KPj4KPj4gVG8gbWFrZSBpdCBjbGVhbiwgaW5pdGlhbGl6ZSByZWdpc3RlcnMgZGlyZWN0 bHksIGFuZCBkcm9wcwo+PiBpbml0X3RhYmxlIG1lY2hhbmlzbSBvdXQuCj4+Cj4+IENoYW5nZXMg aW4gdjM6Cj4+IC0gRXhwbGFpbiBtb3JlIGluIGRldGFpbHMKPj4KPj4gU2lnbmVkLW9mZi1ieTog TWFyayBZYW8gPG1hcmsueWFvQHJvY2stY2hpcHMuY29tPgo+IFsuLi5dCj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5jCj4+IGluZGV4IGJhZmQ2OTguLjAw ZTlkNzkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92 b3BfcmVnLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9y ZWcuYwo+PiBAQCAtMTI3LDEzICsxMjcsNyBAQAo+PiAgIAkuY2ZnX2RvbmUgPSBWT1BfUkVHKFJL MzAzNl9SRUdfQ0ZHX0RPTkUsIDB4MSwgMCksCj4+ICAgfTsKPj4gICAKPj4gLXN0YXRpYyBjb25z dCBzdHJ1Y3Qgdm9wX3JlZ19kYXRhIHJrMzAzNl92b3BfaW5pdF9yZWdfdGFibGVbXSA9IHsKPj4g LQl7UkszMDM2X0RTUF9DVFJMMSwgMHgwMDAwMDAwMH0sCj4+IC19Owo+PiAtCj4+ICAgc3RhdGlj IGNvbnN0IHN0cnVjdCB2b3BfZGF0YSByazMwMzZfdm9wID0gewo+PiAtCS5pbml0X3RhYmxlID0g cmszMDM2X3ZvcF9pbml0X3JlZ190YWJsZSwKPj4gLQkudGFibGVfc2l6ZSA9IEFSUkFZX1NJWkUo cmszMDM2X3ZvcF9pbml0X3JlZ190YWJsZSksCj4+ICAgCS5jdHJsID0gJnJrMzAzNl9jdHJsX2Rh dGEsCj4+ICAgCS5pbnRyID0gJnJrMzAzNl9pbnRyLAo+PiAgIAkud2luID0gcmszMDM2X3ZvcF93 aW5fZGF0YSwKPiBUaGlzIHNlZW1zIHRvIGJyZWFrIHZvcCBpbml0aWFsaXphdGlvbiBvbiBteSBy azMwMzYga3lsaW4gYm9hcmQuCj4KPiBCZWZvcmUsIGt5bGluIHdhcyBhYmxlIHRvIGJyaW5nIG91 dHB1dCB0byB0aGUgaGRtaSBidXQgd2l0aCB0aGlzCj4gcGF0Y2ggYXBwbGllZCB0aGlzIHN0b3Bz IHdvcmtpbmcuIEFzIHRoZSBpbml0LXZhbHVlIGlzIHRvIHplcm8gaXQgc2VlbXMKPiB0aGVyZSBp cyBzdGlsbCBzb21ldGhpbmcgdHVybmVkIG9uLCB0aGF0IHNob3VsZCBiZSB0dXJuZWQgb2ZmIGlu c3RlYWQuCj4KPiByazMyODggc2VlbXMgdG8gc3RheSBpbiB3b3JraW5nIGNvbmRpdGlvbiB0aG91 Z2guCj4KPgo+IEhlaWtvCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IExpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdAo+IExpbnV4LXJvY2tjaGlw QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCj4KPgo+CkhpIEhlaWtvCgpUaGFua3MgZm9yIHlvdXIg dGVzdGluZyBvbiByazMwMzYgYm9hcmQuCgpJIHJlc2VhcmNoIHRoZSBpbml0IHRhYmxlIG9uIHJr MzAzNiwgdGhlIGRzcF9ibGFuayByZXNldCB2YWx1ZSBpcyAxLCB3ZSBuZWVkIHNldCB0aGUgcmVn aXN0ZXIgdG8gemVyby4KClNvIEkgdGhpbmsgbm90IHdvcmtpbmcgcHJvYmxlbSBjYW4gYmUgZml4 ZWQgYnkgZm9sbG93aW5nIGNoYW5nZToKCiAgICAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX3ZvcF9yZWcuYzoKICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9jdHJsIHJrMzAz Nl9jdHJsX2RhdGEgPSB7CiAgICAgICAgICAgICAuc3RhbmRieSA9IFZPUF9SRUcoUkszMDM2X1NZ U19DVFJMLCAweDEsIDMwKSwKICAgICArICAgICAgIC5kc3BfYmxhbmsgPSBWT1BfUkVHKFJLMzAz Nl9EU1BfQ1RSTDEsIDB4MSwgMjQpLAogICAgICAgICAgICAgLm91dF9tb2RlID0gVk9QX1JFRyhS SzMwMzZfRFNQX0NUUkwwLCAweGYsIDApLAogICAgICAgICAgICAgLnBpbl9wb2wgPSBWT1BfUkVH KFJLMzAzNl9EU1BfQ1RSTDAsIDB4ZiwgNCksCiAgICAgICAgICAgICAuaHRvdGFsX3B3ID0gVk9Q X1JFRyhSSzMwMzZfRFNQX0hUT1RBTF9IU19FTkQsIDB4MWZmZjFmZmYsIDApLAoKLS0gCu+8rWFy ayBZYW8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Wed, 26 Jul 2017 08:59:10 +0800 Subject: [PATCH v5 1/7] drm/rockchip: vop: initialize registers directly In-Reply-To: <3165793.eZGRgZzZRy@phil> References: <1500518564-30371-1-git-send-email-mark.yao@rock-chips.com> <1500518603-30486-1-git-send-email-mark.yao@rock-chips.com> <3165793.eZGRgZzZRy@phil> Message-ID: <5977E95E.1040700@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2017?07?26? 06:36, Heiko Stuebner wrote: > Hi Mark, > > Am Donnerstag, 20. Juli 2017, 10:43:22 CEST schrieb Mark Yao: >> At present we are using init_table to initialize some >> registers, but the Register init table use un-document define, >> it is unreadable, and sometimes we only want to update tiny >> bits, init table method is not friendly, it's diffcult to >> reuse for difference chips. >> >> To make it clean, initialize registers directly, and drops >> init_table mechanism out. >> >> Changes in v3: >> - Explain more in details >> >> Signed-off-by: Mark Yao > [...] > >> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> index bafd698..00e9d79 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> @@ -127,13 +127,7 @@ >> .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), >> }; >> >> -static const struct vop_reg_data rk3036_vop_init_reg_table[] = { >> - {RK3036_DSP_CTRL1, 0x00000000}, >> -}; >> - >> static const struct vop_data rk3036_vop = { >> - .init_table = rk3036_vop_init_reg_table, >> - .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), >> .ctrl = &rk3036_ctrl_data, >> .intr = &rk3036_intr, >> .win = rk3036_vop_win_data, > This seems to break vop initialization on my rk3036 kylin board. > > Before, kylin was able to bring output to the hdmi but with this > patch applied this stops working. As the init-value is to zero it seems > there is still something turned on, that should be turned off instead. > > rk3288 seems to stay in working condition though. > > > Heiko > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip > > > Hi Heiko Thanks for your testing on rk3036 board. I research the init table on rk3036, the dsp_blank reset value is 1, we need set the register to zero. So I think not working problem can be fixed by following change: drivers/gpu/drm/rockchip/rockchip_vop_reg.c: static const struct vop_ctrl rk3036_ctrl_data = { .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), + .dsp_blank = VOP_REG(RK3036_DSP_CTRL1, 0x1, 24), .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), -- ?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 S1751503AbdGZA71 (ORCPT ); Tue, 25 Jul 2017 20:59:27 -0400 Received: from regular1.263xmail.com ([211.150.99.133]:58263 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750964AbdGZA70 (ORCPT ); Tue, 25 Jul 2017 20:59:26 -0400 X-263anti-spam: KSV:0;BIG:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ADDR-CHECKED4: 1 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ANTISPAM-LEVEL: 2 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: dri-devel@lists.freedesktop.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <157becf6f161bc6f7043149913fc08c0> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH v5 1/7] drm/rockchip: vop: initialize registers directly To: Heiko Stuebner , linux-arm-kernel@lists.infradead.org References: <1500518564-30371-1-git-send-email-mark.yao@rock-chips.com> <1500518603-30486-1-git-send-email-mark.yao@rock-chips.com> <3165793.eZGRgZzZRy@phil> Cc: David Airlie , linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org From: Mark yao Message-ID: <5977E95E.1040700@rock-chips.com> Date: Wed, 26 Jul 2017 08:59:10 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <3165793.eZGRgZzZRy@phil> 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 2017年07月26日 06:36, Heiko Stuebner wrote: > Hi Mark, > > Am Donnerstag, 20. Juli 2017, 10:43:22 CEST schrieb Mark Yao: >> At present we are using init_table to initialize some >> registers, but the Register init table use un-document define, >> it is unreadable, and sometimes we only want to update tiny >> bits, init table method is not friendly, it's diffcult to >> reuse for difference chips. >> >> To make it clean, initialize registers directly, and drops >> init_table mechanism out. >> >> Changes in v3: >> - Explain more in details >> >> Signed-off-by: Mark Yao > [...] > >> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> index bafd698..00e9d79 100644 >> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c >> @@ -127,13 +127,7 @@ >> .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), >> }; >> >> -static const struct vop_reg_data rk3036_vop_init_reg_table[] = { >> - {RK3036_DSP_CTRL1, 0x00000000}, >> -}; >> - >> static const struct vop_data rk3036_vop = { >> - .init_table = rk3036_vop_init_reg_table, >> - .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), >> .ctrl = &rk3036_ctrl_data, >> .intr = &rk3036_intr, >> .win = rk3036_vop_win_data, > This seems to break vop initialization on my rk3036 kylin board. > > Before, kylin was able to bring output to the hdmi but with this > patch applied this stops working. As the init-value is to zero it seems > there is still something turned on, that should be turned off instead. > > rk3288 seems to stay in working condition though. > > > Heiko > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip > > > Hi Heiko Thanks for your testing on rk3036 board. I research the init table on rk3036, the dsp_blank reset value is 1, we need set the register to zero. So I think not working problem can be fixed by following change: drivers/gpu/drm/rockchip/rockchip_vop_reg.c: static const struct vop_ctrl rk3036_ctrl_data = { .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), + .dsp_blank = VOP_REG(RK3036_DSP_CTRL1, 0x1, 24), .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), -- Mark Yao