Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp5203187ybi; Tue, 4 Jun 2019 03:02:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqy80pxMiFzbWYtRkRG6ozPbOt/orv/jJgkiPeE2CBv33+jQWQVU/kMuzzU4fEGhrFQSYQva X-Received: by 2002:a63:9d09:: with SMTP id i9mr33195726pgd.195.1559642575335; Tue, 04 Jun 2019 03:02:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559642575; cv=none; d=google.com; s=arc-20160816; b=FC85lVC9Xc5KOVtVZUq0/6243yjYfkFZ2XL+cgpCvHRXq6SOxSyWo5aJmxTvTcOJOV CfXIJywYJ5yIJ4DRr287VZE9RoiO8Mk0CLBVafkY5nJp1v4xPzt7nmcK2vYN6BDNVNyo QPrtF5XsZ+8Zl58qpN5HdHGk/pwf0K5Pu674k17HPdgNYPzaccpnmSxdslWw+1Hk6ihK OZLRK2Cfq6x5g/aweGIGl45falM1DR6G7e3V2PWjFqpGXlC2HwF5IhdpAsMhDSpu/A7F RMKN+HAi+VewAgE4mTBRuB4YoWwjL4ZF42/viMBLm1k/E3L1cCd6W5EiwkQIYla36wFg 04aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=8hRn25xfCoe+j8cinJJw3/OXk16q5+rii9bt9V6C9CI=; b=VjWB5c4pzgJDCduom2DQYnopkrEnhl5ckmxtIZDkI08a+i25DbjvJO9Yxr59653XEY RhLhumU0gMzXj8IqlKayujWCi02gD8RJPZsdYqVJKTTo+7nY6NixAQgTZG5Zf8CVMfzK VwAMk9qYgo8WeDTTN6oifDwh7oK2VUqnTwRub/kENZK7DbaX7JAltcT+UmqrelG1cB6K HEXevMhaKN/plAheh31Wsp1y9pOloghO61kdNIMv8ihcc1nGwd8pQ4+zXjuXW4CithWj WCOV+aWKTgyHeTqBsTwJKcp+0DmZNTzJA2q+cx5pMEIVM5A4b6csmzThWU+CDxe9MRy/ DVJA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 77si22065135pgb.237.2019.06.04.03.02.33; Tue, 04 Jun 2019 03:02:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727158AbfFDKAW (ORCPT + 99 others); Tue, 4 Jun 2019 06:00:22 -0400 Received: from relay7-d.mail.gandi.net ([217.70.183.200]:52847 "EHLO relay7-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726982AbfFDKAW (ORCPT ); Tue, 4 Jun 2019 06:00:22 -0400 X-Originating-IP: 90.88.144.139 Received: from localhost (aaubervilliers-681-1-24-139.w90-88.abo.wanadoo.fr [90.88.144.139]) (Authenticated sender: maxime.ripard@bootlin.com) by relay7-d.mail.gandi.net (Postfix) with ESMTPSA id 552D620008; Tue, 4 Jun 2019 10:00:12 +0000 (UTC) Date: Tue, 4 Jun 2019 12:00:11 +0200 From: Maxime Ripard To: Jagan Teki Cc: David Airlie , Daniel Vetter , Chen-Yu Tsai , dri-devel , linux-arm-kernel , linux-kernel , Bhushan Shah , Vasily Khoruzhick , =?utf-8?B?5Z2a5a6a5YmN6KGM?= , Michael Trimarchi , linux-amarula , linux-sunxi Subject: Re: [PATCH v10 01/11] drm/sun4i: dsi: Fix TCON DRQ set bits Message-ID: <20190604100011.cqkhpwmmmwh3vr3y@flea> References: <20190520090318.27570-1-jagan@amarulasolutions.com> <20190520090318.27570-2-jagan@amarulasolutions.com> <20190523203407.o5obg2wtj7wwau6a@flea> <20190529145450.qnitxpmpr2a2xemk@flea> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="mf43bufptefijii6" Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --mf43bufptefijii6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, May 29, 2019 at 11:44:56PM +0530, Jagan Teki wrote: > On Wed, May 29, 2019 at 8:24 PM Maxime Ripard wrote: > > > > On Fri, May 24, 2019 at 03:48:51PM +0530, Jagan Teki wrote: > > > On Fri, May 24, 2019 at 2:04 AM Maxime Ripard wrote: > > > > > > > > On Mon, May 20, 2019 at 02:33:08PM +0530, Jagan Teki wrote: > > > > > According to "DRM kernel-internal display mode structure" in > > > > > include/drm/drm_modes.h the current driver is trying to include > > > > > sync timings along with front porch value while checking and > > > > > computing drq set bits in non-burst mode. > > > > > > > > > > mode->hsync_end - mode->hdisplay => horizontal front porch + sync > > > > > > > > > > With adding additional sync timings, the dsi controller leads to > > > > > wrong drq set bits for "bananapi,s070wv20-ct16" panel which indeed > > > > > trigger panel flip_done timed out as: > > > > > > > > > > WARNING: CPU: 0 PID: 31 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0 > > > > > [CRTC:46:crtc-0] vblank wait timed out > > > > > Modules linked in: > > > > > CPU: 0 PID: 31 Comm: kworker/0:1 Not tainted 5.1.0-next-20190514-00026-g01f0c75b902d-dirty #13 > > > > > Hardware name: Allwinner sun8i Family > > > > > Workqueue: events deferred_probe_work_func > > > > > [] (unwind_backtrace) from [] (show_stack+0x10/0x14) > > > > > [] (show_stack) from [] (dump_stack+0x84/0x98) > > > > > [] (dump_stack) from [] (__warn+0xfc/0x114) > > > > > [] (__warn) from [] (warn_slowpath_fmt+0x44/0x68) > > > > > [] (warn_slowpath_fmt) from [] (drm_atomic_helper_wait_for_vblanks.part.1+0x298/0x2a0) > > > > > [] (drm_atomic_helper_wait_for_vblanks.part.1) from [] (drm_atomic_helper_commit_tail_rpm+0x5c/0x6c) > > > > > [] (drm_atomic_helper_commit_tail_rpm) from [] (commit_tail+0x40/0x6c) > > > > > [] (commit_tail) from [] (drm_atomic_helper_commit+0xbc/0x128) > > > > > [] (drm_atomic_helper_commit) from [] (restore_fbdev_mode_atomic+0x1cc/0x1dc) > > > > > [] (restore_fbdev_mode_atomic) from [] (drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa0) > > > > > [] (drm_fb_helper_restore_fbdev_mode_unlocked) from [] (drm_fb_helper_set_par+0x30/0x54) > > > > > [] (drm_fb_helper_set_par) from [] (fbcon_init+0x560/0x5ac) > > > > > [] (fbcon_init) from [] (visual_init+0xbc/0x104) > > > > > [] (visual_init) from [] (do_bind_con_driver+0x1b0/0x390) > > > > > [] (do_bind_con_driver) from [] (do_take_over_console+0x13c/0x1c4) > > > > > [] (do_take_over_console) from [] (do_fbcon_takeover+0x74/0xcc) > > > > > [] (do_fbcon_takeover) from [] (notifier_call_chain+0x44/0x84) > > > > > [] (notifier_call_chain) from [] (__blocking_notifier_call_chain+0x48/0x60) > > > > > [] (__blocking_notifier_call_chain) from [] (blocking_notifier_call_chain+0x18/0x20) > > > > > [] (blocking_notifier_call_chain) from [] (register_framebuffer+0x1e0/0x2f8) > > > > > [] (register_framebuffer) from [] (__drm_fb_helper_initial_config_and_unlock+0x2fc/0x50c) > > > > > [] (__drm_fb_helper_initial_config_and_unlock) from [] (drm_fbdev_client_hotplug+0xe8/0x1b8) > > > > > [] (drm_fbdev_client_hotplug) from [] (drm_fbdev_generic_setup+0x88/0x118) > > > > > [] (drm_fbdev_generic_setup) from [] (sun4i_drv_bind+0x128/0x160) > > > > > [] (sun4i_drv_bind) from [] (try_to_bring_up_master+0x164/0x1a0) > > > > > [] (try_to_bring_up_master) from [] (__component_add+0x94/0x140) > > > > > [] (__component_add) from [] (sun6i_dsi_probe+0x144/0x234) > > > > > [] (sun6i_dsi_probe) from [] (platform_drv_probe+0x48/0x9c) > > > > > [] (platform_drv_probe) from [] (really_probe+0x1dc/0x2c8) > > > > > [] (really_probe) from [] (driver_probe_device+0x60/0x160) > > > > > [] (driver_probe_device) from [] (bus_for_each_drv+0x74/0xb8) > > > > > [] (bus_for_each_drv) from [] (__device_attach+0xd0/0x13c) > > > > > [] (__device_attach) from [] (bus_probe_device+0x84/0x8c) > > > > > [] (bus_probe_device) from [] (deferred_probe_work_func+0x64/0x90) > > > > > [] (deferred_probe_work_func) from [] (process_one_work+0x204/0x420) > > > > > [] (process_one_work) from [] (worker_thread+0x274/0x5a0) > > > > > [] (worker_thread) from [] (kthread+0x11c/0x14c) > > > > > [] (kthread) from [] (ret_from_fork+0x14/0x2c) > > > > > Exception stack(0xde539fb0 to 0xde539ff8) > > > > > 9fa0: 00000000 00000000 00000000 00000000 > > > > > 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 > > > > > ---[ end trace b57eb1e5c64c6b8b ]--- > > > > > random: fast init done > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CRTC:46:crtc-0] flip_done timed out > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [CONNECTOR:48:DSI-1] flip_done timed out > > > > > [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* [PLANE:30:plane-0] flip_done timed out > > > > > > > > > > But according to Allwinner A33, A64 BSP code [1] [3] the TCON DRQ for > > > > > non-burst DSI mode can be computed based on "horizontal front porch" > > > > > value only (no sync timings included). > > > > > > > > > > Detailed evidence for drq set bits based on A33 BSP [1] [2] > > > > > > > > > > => panel->lcd_ht - panel->lcd_x - panel->lcd_hbp - 20 > > > > > => (tt->hor_front_porch + lcdp->panel_info.lcd_hbp + > > > > > lcdp->panel_info.lcd_x) - panel->lcd_x - panel->lcd_hbp - 20 > > > > > => tt->hor_front_porch - 20 > > > > > > > > The thing is, while your explanation on the DRM side is sound, > > > > Allwinner has been using the hbp field of their panel description to > > > > store what DRM calls the backporch and the sync period. > > > > > > Exactly, hbp = backporch + sync > > > https://github.com/BPI-SINOVOIP/BPI-M2M-bsp/blob/master/linux-sunxi/drivers/video/sunxi/disp/de/disp_lcd.c#L2046 > > > > > > And the above computation is rely on that as well. If you can see the > > > final out of the above computation you can get the front porch value > > > (w/o sync ) > > > > As I was saying, you are explaining it well for DRM, but in order for > > your last formula (the one coming from the BSP) to make sense, you > > have to explain that the horizontal back porch for Allwinner contains > > the sync period, otherwise your expansion of lcd_ht doesn't make > > sense. > > I'm not sure why we need to take care of back porch since the formula > clearly evaluating a result as front porch, without sync timing (as > current code included this sync), I keep the hbp and trying to > substitute the lcd_ht value so the end result would cancel hbp. Because it changes how lcd_ht expands. In the DRM case, it will expand to the displayed area, the front porch, the sync period and the back porch. In your case, you expand it to the displayed area, the front porch and the back porch, precisely because in Allwinner's case, the back porch has the sync period. Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com --mf43bufptefijii6 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCXPZBKwAKCRDj7w1vZxhR xcyFAP9BvStQFLIub7q9QkrhsJp3jr16Xv8Agsm8Sx416fiFhAEA7oPuJJIvhMZC kU26h3rcdyenl06CVOz1ePMHdl779ws= =mvjJ -----END PGP SIGNATURE----- --mf43bufptefijii6--