From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934600AbcKQTFF (ORCPT ); Thu, 17 Nov 2016 14:05:05 -0500 Received: from mail.free-electrons.com ([62.4.15.54]:49416 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751617AbcKQTFD (ORCPT ); Thu, 17 Nov 2016 14:05:03 -0500 Date: Thu, 17 Nov 2016 20:05:01 +0100 From: Maxime Ripard To: Chen-Yu Tsai Cc: David Airlie , linux-sunxi@googlegroups.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/sun4i: tcon: Initialize regmap after enabling bus clocks Message-ID: <20161117190501.hjpwposqzidwhwdc@lukather> References: <20161116093732.12828-1-wens@csie.org> <20161116093732.12828-2-wens@csie.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="xtxjraet2xxibjjj" Content-Disposition: inline In-Reply-To: <20161116093732.12828-2-wens@csie.org> User-Agent: Mutt/1.6.2-neo (2016-08-21) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --xtxjraet2xxibjjj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 16, 2016 at 05:37:32PM +0800, Chen-Yu Tsai wrote: > If we attempt to read/write the TCON registers before the bus clock > is enabled, those accesses get ignored. >=20 > In practice this almost never occurs because U-boot had already enabled > the bus clock as part of its firmware provided framebuffer (simplefb). >=20 > Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support") > Signed-off-by: Chen-Yu Tsai > --- >=20 > I was looking around the DRM driver and noticed this sequence was off. >=20 > --- > drivers/gpu/drm/sun4i/sun4i_tcon.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/s= un4i_tcon.c > index c6afb2448655..8c2db65ea229 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c > +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c > @@ -506,16 +506,16 @@ static int sun4i_tcon_bind(struct device *dev, stru= ct device *master, > return ret; > } > =20 > - ret =3D sun4i_tcon_init_regmap(dev, tcon); > + ret =3D sun4i_tcon_init_clocks(dev, tcon); > if (ret) { > - dev_err(dev, "Couldn't init our TCON regmap\n"); > + dev_err(dev, "Couldn't init our TCON clocks\n"); > goto err_assert_reset; > } > =20 > - ret =3D sun4i_tcon_init_clocks(dev, tcon); > + ret =3D sun4i_tcon_init_regmap(dev, tcon); > if (ret) { > - dev_err(dev, "Couldn't init our TCON clocks\n"); > - goto err_assert_reset; > + dev_err(dev, "Couldn't init our TCON regmap\n"); > + goto err_free_clocks; > } That won't work either. sun4i_tcon_init_clocks requires the regmap to be enabled before it calls sun4i_dclk_create. Maybe we should just move that call outside of sun4i_tcon_init_clocks and put it directly into the bind then. Maxime --=20 Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com --xtxjraet2xxibjjj Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBCAAGBQJYLf9dAAoJEBx+YmzsjxAghgoQAKCaIPtMEcr3LmQMym+no65E UmENza3PWvOonuvOn6LrPPu0RrzpZyaZT7Npvs6g2rKHC3rAcvDxXt97B4uT+vmE WgsofkxMTLclHeAq4GuvSjwTn/2MEfR3qin0I+plPI5VWY6HJDf5bFMofjHjOxV/ rxLoq7dCnulatk27FuL6nrlsBbRgNxg8I6nwyDRMCrUy1G5+ADZoJf77q3eyojwD 0inBLjVZUVso+1n7Q/mdMiGmwtnugE0iGnsyJ0t4ifdrhPE7G/fILtJepyyFOm0A OApqp8U0eOgpWDDB/QwnuB1x1m1g96GlL2ABJYw1pq4lQv59Fbf4rw2xdK9SB59V Q0TPNvLnLZnGh+8uwQiXLshJU17fzMo1ETNKK/Mjcy9H1ONsTSsQCOBLPukx7veE iGFsZVf5apl86XgGLvsOXAx67vlOg88oob4BR82R90ljrmbeB2kogO8UGS5bt0UI Pbb6PE+DW1AVrXaxJjPxvCjMv9kHQ4ZnU2CFWnOKHmClnkXlcTnltNIDD57atDXz 44bTq3gGbezG8Ckjrsy00mz2uM34Vji8utCzHIpYFxon6l1U/aWNUuU4KfKe6vLA Hr36dQC5UcXi5PtQMmpmZCM/TA+bIu/XjBdfslxMarvnAtq6rIuyE3qVQBaX9Yh3 Y37jVvg/lIcTld531YJ1 =QBha -----END PGP SIGNATURE----- --xtxjraet2xxibjjj--