From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH] drm/rockchip: vop: do axi reset in vop initial time Date: Wed, 1 Jun 2016 17:49:32 +0800 Message-ID: <574EAFAC.6010201@rock-chips.com> References: <1464772752-9808-1-git-send-email-ykk@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: <1464772752-9808-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Yakir Yang , Mark Yao , Heiko Stuebner , tfiga@chromium.org Cc: daniel.vetter@ffwll.ch, dianders@chromium.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Thierry Reding List-Id: linux-rockchip.vger.kernel.org T24gMjAxNuW5tDA25pyIMDHml6UgMTc6MTksIFlha2lyIFlhbmcgd3JvdGU6Cj4gVGhlcmUgaXMg YSBidWcgaW4gUkszMzk5IFZPUCwgd2hlbiBib290bG9hZGVyL2tlcm5lbCBvbmx5IGVuYWJsZQo+ IFZPUCBCaWcgb3IgVk9QIExpdHRsZSB0byBkaXNwbGF5LCB0aGVuIFZPUCBJT01NVSB3b3VsZCBm YWlsZWQgdG8KPiByZXNldCBhdCB0aGUgaW5pdGlhbCB0aW1lIGFuZCBWT1AgcmVnaXN0ZXIgY291 bGRuJ3Qgd3JpdGUgcmlnaHRseS4KPgo+IEFmdGVyIGRvIHRoZSBwdXJlIHJlc2V0IG9mIFZPUCBt b2R1bGUsIHRoZW4gdGhpbmdzIGJhY2sgdG8gcmlnaHQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBZYWtp ciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+CkhpIFlha2lyCgpJIHRoaW5rIHlvdSBnZXQgdm9w IGlvbW11IHJlc2V0IGZhaWxlZCBzaG91bGQgYmUgSU9NTVUgUGFnZSBmYXVsdCwgdGhlIAp2b3Ag aW9tbXUgYWNjZXNzIGEgdW1tYXAgYWRkcmVzcy4KCllvdSBzaG91bGQgZW5zdXJlIGFsbCB2b3Ag d2luZG93cyBhY2Nlc3MgcmlnaHQgaW9tbXUgbWFwcGluZyBhZGRyZXNzIApiZWZvcmUgYXR0YWNo IGlvbW11LgoKQWN0dWFsbHksIEknbSB3b3JraW5nIG5vIGZsYXNoIGRpc3BsYXkgZnJvbSBib290 bG9hZGVyIHRvIGtlcm5lbCwgYW5kIApwcmVwYXJlIHJlbW92ZSBhbGwgdGhlIHJlc2V0IG9uIHZv cCBpbml0aWFsLCBiZWNhdXNlIGl0IHdvdWxkIGZsYXNoIHRoZSAKZGlzcGxheS4KClRoYW5rcy4K Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwg MTUgKysrKysrKysrKysrKystCj4gICAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9kcm1fdm9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X3ZvcC5jCj4gaW5kZXggMWM0ZDViNS4uNDE1MDMyMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+IEBAIC0xMjkyLDcgKzEyOTIsNyBAQCBzdGF0 aWMgaW50IHZvcF9pbml0aWFsKHN0cnVjdCB2b3AgKnZvcCkKPiAgIHsKPiAgIAljb25zdCBzdHJ1 Y3Qgdm9wX2RhdGEgKnZvcF9kYXRhID0gdm9wLT5kYXRhOwo+ICAgCWNvbnN0IHN0cnVjdCB2b3Bf cmVnX2RhdGEgKmluaXRfdGFibGUgPSB2b3BfZGF0YS0+aW5pdF90YWJsZTsKPiAtCXN0cnVjdCBy ZXNldF9jb250cm9sICphaGJfcnN0Owo+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKmFoYl9yc3Qs ICpheGlfcnN0Owo+ICAgCWludCBpLCByZXQ7Cj4gICAKPiAgIAl2b3AtPmhjbGsgPSBkZXZtX2Ns a19nZXQodm9wLT5kZXYsICJoY2xrX3ZvcCIpOwo+IEBAIC0xMzMxLDYgKzEzMzEsMTkgQEAgc3Rh dGljIGludCB2b3BfaW5pdGlhbChzdHJ1Y3Qgdm9wICp2b3ApCj4gICAJfQo+ICAgCj4gICAJLyoK PiArCSAqIGRvIGFjbGtfcmVzZXQsIHJlc2V0IGFsbCB2b3AgcmVnaXN0ZXJzLgo+ICsJICovCj4g KwlheGlfcnN0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldCh2b3AtPmRldiwgImF4aSIpOwo+ICsJ aWYgKElTX0VSUihheGlfcnN0KSkgewo+ICsJCWRldl9lcnIodm9wLT5kZXYsICJmYWlsZWQgdG8g Z2V0IGF4aSByZXNldFxuIik7Cj4gKwkJcmV0ID0gUFRSX0VSUihheGlfcnN0KTsKPiArCQlnb3Rv IGVycl9kaXNhYmxlX2FjbGs7Cj4gKwl9Cj4gKwlyZXNldF9jb250cm9sX2Fzc2VydChheGlfcnN0 KTsKPiArCXVzbGVlcF9yYW5nZSgxMCwgMjApOwo+ICsJcmVzZXRfY29udHJvbF9kZWFzc2VydChh eGlfcnN0KTsKPiArCj4gKwkvKgo+ICAgCSAqIGRvIGhjbGtfcmVzZXQsIHJlc2V0IGFsbCB2b3Ag cmVnaXN0ZXJzLgo+ICAgCSAqLwo+ICAgCWFoYl9yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0 KHZvcC0+ZGV2LCAiYWhiIik7CgoKLS0gCu+8rWFyayBZYW8KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757953AbcFAJuC (ORCPT ); Wed, 1 Jun 2016 05:50:02 -0400 Received: from regular1.263xmail.com ([211.150.99.141]:54485 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757735AbcFAJuA (ORCPT ); Wed, 1 Jun 2016 05:50:00 -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: linux-rockchip@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <4dbe03dee0824ab82230d511779e2a99> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH] drm/rockchip: vop: do axi reset in vop initial time To: Yakir Yang , Mark Yao , Heiko Stuebner , tfiga@chromium.org References: <1464772752-9808-1-git-send-email-ykk@rock-chips.com> Cc: David Airlie , daniel.vetter@ffwll.ch, Thierry Reding , dianders@chromium.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org From: Mark yao Message-ID: <574EAFAC.6010201@rock-chips.com> Date: Wed, 1 Jun 2016 17:49:32 +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: <1464772752-9808-1-git-send-email-ykk@rock-chips.com> 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 2016年06月01日 17:19, Yakir Yang wrote: > There is a bug in RK3399 VOP, when bootloader/kernel only enable > VOP Big or VOP Little to display, then VOP IOMMU would failed to > reset at the initial time and VOP register couldn't write rightly. > > After do the pure reset of VOP module, then things back to right. > > Signed-off-by: Yakir Yang Hi Yakir I think you get vop iommu reset failed should be IOMMU Page fault, the vop iommu access a ummap address. You should ensure all vop windows access right iommu mapping address before attach iommu. Actually, I'm working no flash display from bootloader to kernel, and prepare remove all the reset on vop initial, because it would flash the display. Thanks. > --- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index 1c4d5b5..4150323 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -1292,7 +1292,7 @@ static int vop_initial(struct vop *vop) > { > const struct vop_data *vop_data = vop->data; > const struct vop_reg_data *init_table = vop_data->init_table; > - struct reset_control *ahb_rst; > + struct reset_control *ahb_rst, *axi_rst; > int i, ret; > > vop->hclk = devm_clk_get(vop->dev, "hclk_vop"); > @@ -1331,6 +1331,19 @@ static int vop_initial(struct vop *vop) > } > > /* > + * do aclk_reset, reset all vop registers. > + */ > + axi_rst = devm_reset_control_get(vop->dev, "axi"); > + if (IS_ERR(axi_rst)) { > + dev_err(vop->dev, "failed to get axi reset\n"); > + ret = PTR_ERR(axi_rst); > + goto err_disable_aclk; > + } > + reset_control_assert(axi_rst); > + usleep_range(10, 20); > + reset_control_deassert(axi_rst); > + > + /* > * do hclk_reset, reset all vop registers. > */ > ahb_rst = devm_reset_control_get(vop->dev, "ahb"); -- Mark Yao