From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758635AbcFAPUN (ORCPT ); Wed, 1 Jun 2016 11:20:13 -0400 Received: from hqemgate14.nvidia.com ([216.228.121.143]:6591 "EHLO hqemgate14.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753789AbcFAPUL (ORCPT ); Wed, 1 Jun 2016 11:20:11 -0400 X-PGP-Universal: processed; by hqnvupgp08.nvidia.com on Wed, 01 Jun 2016 08:18:11 -0700 Date: Wed, 1 Jun 2016 17:19:57 +0200 From: Thierry Reding To: Yakir Yang CC: Mark Yao , Heiko Stuebner , , David Airlie , , , , , Subject: Re: [PATCH] drm/rockchip: vop: do axi reset in vop initial time Message-ID: <20160601151956.GA29316@ulmo.ba.sec> References: <1464772752-9808-1-git-send-email-ykk@rock-chips.com> MIME-Version: 1.0 In-Reply-To: <1464772752-9808-1-git-send-email-ykk@rock-chips.com> X-NVConfidentiality: public User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [10.2.68.19] X-ClientProxiedBy: UKMAIL102.nvidia.com (10.26.138.15) To UKMAIL101.nvidia.com (10.26.138.13) Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="M9NhX3UHpAaciwkO" Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Jun 01, 2016 at 05:19:12PM +0800, 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. >=20 > After do the pure reset of VOP module, then things back to right. >=20 > Signed-off-by: Yakir Yang > --- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 15 ++++++++++++++- > 1 file changed, 14 insertions(+), 1 deletion(-) >=20 > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/dr= m/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 =3D vop->data; > const struct vop_reg_data *init_table =3D vop_data->init_table; > - struct reset_control *ahb_rst; > + struct reset_control *ahb_rst, *axi_rst; > int i, ret; > =20 > vop->hclk =3D devm_clk_get(vop->dev, "hclk_vop"); > @@ -1331,6 +1331,19 @@ static int vop_initial(struct vop *vop) > } > =20 > /* > + * do aclk_reset, reset all vop registers. > + */ > + axi_rst =3D devm_reset_control_get(vop->dev, "axi"); I don't think you want the managed version here since you only store this in a local variable and hence aren't going to need it afterwards. Just use reset_control_get() and ... > + if (IS_ERR(axi_rst)) { > + dev_err(vop->dev, "failed to get axi reset\n"); > + ret =3D PTR_ERR(axi_rst); > + goto err_disable_aclk; > + } > + reset_control_assert(axi_rst); > + usleep_range(10, 20); > + reset_control_deassert(axi_rst); call reset_control_put() here. > + > + /* > * do hclk_reset, reset all vop registers. > */ > ahb_rst =3D devm_reset_control_get(vop->dev, "ahb"); This uses the same pattern, so you might want to consider reworking this as well, though it should be a separate patch. Thierry --M9NhX3UHpAaciwkO Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJXTv0YAAoJEN0jrNd/PrOhqTEQALu/grUkCZsnE68wsq2QqvfN Q+Feb0AF11s2MO16dVpL6RPAaJPPWvpr11lQzo4shzusavR40FIO/8b6pOhNv+MJ 4icEKDJdAJhFWSjGEJlJXeLTPktaPLrAIXEYGwiCnGp3SXyPre0ZppaO8D9QK/qA 8fVd+HvlG+sYwQAcTZDO+nY1r/hXLxrp1fMh3lNSCtNt5F5Ux/XVw7hYEtT4dF5R QSnZov/kaIUpo/kL84Qzpnshd8lYKIzhFbnVKE69JkQ3uufSlwPV/6CiKOvpXGdF /YDfOJNuIDFAK66RcHAaVAUs5pxQ2JvYPE2V/U1xQ3i4LArbpehzEFG8lfM4uzxD lFkr42f6gFtsVEiESYzM0Pa1ACHZbMdVaAaFdjJBxg3x9gJfPm+Jt2/0ZYUZ3uZk GX+Tn6TYpFDHGFyH5zcl2bTGswmAlMmFd6OZSAsztdIl3qDVe+ePhok1w4ME1zu0 jGhGYm2ksqg5CL01eaN2PC4MVxFsUZrAoYYTrCNnzoBjxfGxvcAaNi43NKLXGmxZ V3zt6auQm+evcV2E8RcU7CKyiy9YQJQkhZtkubSrzd3rpwMpjM2yNJh0521Ixq1J M2Dd/Oy0qyyyZMiHMdK1pcpW5ONazNLylyapxUA1sCLNI5xWmLaH0PHXY2i6sVP+ y0Nw2+H5jOdh0hS7InVA =9MB7 -----END PGP SIGNATURE----- --M9NhX3UHpAaciwkO--